Finalizado
Dead Drop
Node.js Express SQLite JWT AES-256 bcrypt
jun. de 2024 — ago. de 2024
Aguarde — o servidor pode levar alguns segundos para iniciar
(cold start Render)
Sobre o Projeto
Dead Drop reimagina o conceito de espionagem para o digital: um sistema onde mensagens são deixadas criptografadas e só podem ser lidas por quem tem o código. Após a primeira leitura, a mensagem é destruída permanentemente — acessos posteriores retornam HTTP 410.
Arquitetura de Segurança
- AES-256-CBC — mensagens criptografadas antes de persistir no banco
- bcrypt — senhas com hash seguro
- JWT — autenticação stateless com expiração curta
- Autodestruição — registro deletado após primeira leitura
- Expiração de anexos — uploads expiram em 60 segundos
- Proteção de uploads — pasta de arquivos não acessível diretamente
Rotas da API
POST /auth/registrar— Criar contaPOST /auth/login— LoginPOST /mensagem— Criar dead drop (autenticação opcional)GET /mensagem/:codigo— Ler mensagem (autodestrutiva)GET /mensagem/minhas— Histórico (requer autenticação)
Fluxo de Uso
- Remetente cria um drop e recebe um código único
- Código é compartilhado com o destinatário por canal separado
- Destinatário acessa o drop e lê a mensagem
- Registro é deletado imediatamente e acessos futuros retornam 410
Observações de Produção
Em produção real, uploads devem ser armazenados em AWS S3 ou Cloudflare R2 em vez do sistema de arquivos local. No Render gratuito, o armazenamento local é efêmero e reinicia a cada deploy.
Como Rodar Localmente
git clone https://github.com/Guimaraes-Davi/dead-drop
cd dead-drop
npm install
npm start
Acesse http://localhost:3000.