Monitoramento de domínios com React, Express, SQLite e checagem contínua de disponibilidade, latência e status de registro.
Aplicação full stack com React + Tailwind no front-end e Express + SQLite no back-end para cadastrar domínios, autenticar usuários e verificar o status dos domínios em tempo real por polling.
A imagem abaixo foi adicionada ao repositório como uma ilustração inspirada no exemplo enviado para destacar a aparência do painel principal.
- Cadastro, login e sessão com JWT.
- Fluxo de esqueci a senha com envio de token de redefinição por e-mail.
- Cadastro e remoção de domínios por usuário.
- Checagem manual e automática dos domínios a cada 30 segundos.
- Consulta RDAP para estimar expiração de registro, registrador e janela de renovação.
- Persistência local em SQLite.
- Interface responsiva com Tailwind CSS.
- Licença: MIT
- Code of Conduct: CODE_OF_CONDUCT.md
- Security Policy: SECURITY.md
- Node.js 22 LTS. O projeto usa
better-sqlite3, então versões muito novas do Node podem ficar sem binário pré-compilado. No Windows, o Node25.3.0costuma cair em build nativo e falhar durante oyarn install. - Yarn 1.22.22.
- Python 3 instalado e disponível no
PATHapenas se você insistir em usar uma versão do Node sem binário pronto parabetter-sqlite3.
Recomendação: use Node 22 LTS com Yarn 1.22.22 para evitar compilar dependências nativas.
- Copie
.env.examplepara.enve preencha as variáveis SMTP para envio do token de recuperação. - Se você usa
nvm, rodenvm usepara carregar a versão definida em.nvmrc. - Ative o Corepack com
corepack enablese necessário. - Instale dependências com
yarn install. - Rode
yarn dev.
A API sobe em http://localhost:3001 e o front-end em http://localhost:5173. Por padrão ambos também ficam expostos na rede local, então você pode abrir o front-end em http://SEU_IP_DA_REDE:5173 a partir de outro dispositivo na mesma rede.
Os links enviados por e-mail tentam usar automaticamente a origem/host usado no navegador. Se a API estiver atrás de proxy, túnel ou outro endereço público, você ainda pode forçar isso via APP_URL no .env com algo como http://192.168.0.10:5173.
Preencha as variáveis abaixo no arquivo .env para que o endpoint /api/auth/forgot-password envie o token de recuperação por e-mail:
SMTP_HOST: host do servidor SMTP.SMTP_PORT: porta SMTP, normalmente587ou465.SMTP_SECURE: usetruepara SSL/TLS direto,falsepara STARTTLS.SMTP_USER: usuário/autenticação da conta de envio.SMTP_PASS: senha ou token SMTP.SMTP_FROM: remetente exibido no e-mail.
O token de recuperação gerado pelo back-end agora usa 6 números e não é mais exibido na interface.
Em alguns ambientes, o comando yarn é fornecido pelo Corepack. Nesses casos, o Corepack tenta baixar o Yarn Classic antes de executar qualquer coisa. Se sua rede, proxy ou firewall bloquear esse download, você pode ver um erro parecido com:
Error when performing the request to https://registry.yarnpkg.com/yarn/-/yarn-1.22.22.tgzProxy response (403) !== 200 when HTTP Tunneling
Se isso acontecer, mantenha o fluxo com Yarn e instale o Yarn Classic 1.22.22 por outro caminho disponível no seu ambiente, por exemplo:
npm install -g yarn@1.22.22yarn installyarn dev
O projeto continua versionado com yarn.lock e packageManager: yarn@1.22.22.
Se o yarn install falhar com uma mensagem parecida com No prebuilt binaries found e gyp ERR! find Python, isso normalmente significa que você está usando uma versão do Node nova demais para o binário publicado do better-sqlite3.
- Instale ou selecione o Node 22 LTS.
- Apague
node_modulese qualquer arquivo de lock gerado parcialmente. - Rode
yarn installnovamente.
Se você realmente precisar manter outra versão do Node, instale o Python 3 e as ferramentas de build do node-gyp, depois configure o caminho do Python para o npm. Ainda assim, a opção mais estável para este projeto é usar Node 22 LTS.