Um sistema completo de cadastro, login e chat global em tempo real, onde apenas usuários autenticados podem acessar e conversar entre si. Desenvolvido com Express, EJS e Socket.IO, utilizando MongoDB para persistência e JWT para autenticação.
- Node.js — ambiente de execução
- Express — framework backend
- EJS — motor de templates para renderização de páginas dinâmicas
- Socket.IO — comunicação em tempo real via WebSockets
- Mongoose — integração com banco MongoDB
- JWT (jsonwebtoken) — autenticação segura via tokens
- Bcrypt — hashing de senhas
- Cookie-parser — leitura e gerenciamento de cookies
-
🔐 Cadastro e login de usuários
- Validação de senha forte (mínimo 8 caracteres, letras maiúsculas, minúsculas e números)
- Armazenamento de senhas com hash seguro (bcrypt)
- Tokens JWT com expiração automática
-
🧠 Sessões autenticadas
- Apenas usuários logados podem acessar o chat
- Tokens validados no handshake do Socket.IO
-
💬 Chat global em tempo real
- Todos os usuários logados podem enviar e receber mensagens instantaneamente
- Sistema de lista de usuários online
- Logout automático limpa o token e remove o usuário da lista de online
-
🗄️ Banco de dados
- Usuários armazenados no MongoDB
- Campos: nome, hash da senha, token e status online
- Acesse
/formspara cadastrar ou logar. - Após o login, você será redirecionado para
/home, onde o chat global está ativo. - Converse com qualquer usuário autenticado em tempo real.
Este projeto demonstra:
- Como integrar autenticação com JWT em aplicações Express
- Como proteger sockets com autenticação baseada em tokens
- Uso combinado de EJS + Socket.IO para front-end dinâmico
- Boas práticas de estrutura modular no Node.js
Arlesson Estudante de Programação • Desenvolvedor Node.js 📚 Foco em JavaScript, TypeScript e sistemas backend 🔗 GitHub