Um sistema simples de gerenciamento de contatos com autenticação de usuário, desenvolvido com Node.js, Express, EJS e MongoDB.
- Cadastro de usuário com login e logout.
- Criação, edição, visualização e exclusão de contatos (CRUD).
- Feedback via flash messages (sucesso/erro).
- Redirecionamentos adequados após login, logout ou operações em contatos.
- Node.js – runtime JavaScript de backend.
- Express.js – framework para servidor web.
- MongoDB com Mongoose – banco de dados e modelagem.
- EJS – template engine para views.
- express-session – gerenciamento de sessões.
- connect-flash – mensagens temporárias para feedback.
- dotenv – gerenciamento de variáveis de ambiente.
project-root/
├── src/
│ ├── controllers/
│ │ ├── contatoController.js
│ │ ├── homeController.js
│ │ └── loginController.js
│ ├── models/
│ │ ├── ContatoModel.js
│ │ ├── HomeModel.js
│ │ └── LoginModel.js
│ ├── middlewares/
│ │ └── middleware.js
│ ├── views/
│ │ ├── includes/ (partials como head, nav, footer)
│ │ ├── index.ejs
│ │ ├── contato.ejs
│ │ ├── login.ejs
│ │ └── login‑logado.ejs
├── public/ (arquivos estáticos: CSS, JS, imagens)
├── server.js (configurações do Express)
├── routes.js (rotas da aplicação)
├── .env (variáveis sensíveis, não comitado)
├── .gitignore
├── package.json
└── README.md
-
Faça o clone do repositório:
git clone https://github.com/Otaaviio/ProjectContacts.git cd ProjectContacts -
Instale as dependências:
npm install
-
Crie o arquivo
.envcom as variáveis necessárias (exemplo):MONGODB_URI=<sua_string_mongodb> SESSION_SECRET=<uma_string_secreta>
-
Execute o projeto:
npm start
-
Acesse no navegador:
http://localhost:3000
- Cadastrar usuário: acesse
/loginpara criar uma conta ou logar. - Após login, você será redirecionado automaticamente para a página inicial.
- Lá, poderá visualizar seus contatos ou cadastrar novos.
- Ao sair (logout), a lista de contatos não será mais exibida até que o usuário faça login novamente.
- Validação mais robusta em formulários (cliente e servidor).
- Autorização para garantir que cada usuário veja apenas seus contatos.
- Estilização aprimorada com algum framework CSS moderno.
- Paginação ou busca nos contatos.
- API REST para integração com front-end separada.
Contribuições são bem-vindas!
Para contribuir:
- Fork do repositório
- Crie uma branch com sua feature (
git checkout -b feature/nome-da-feature) - Faça commit das alterações (
git commit -m "Descrição do commit") - Envie para o repositório remoto (
git push origin feature/nome-da-feature) - Abra um Pull Request.
Este projeto está disponível sob a licença MIT. Sinta-se à vontade para usar e adaptar conforme sua necessidade.