Uma API RESTful para gerenciamento de tarefas, construída com Node.js, Express e MongoDB (Mongoose). Este projeto implementa autenticação de usuários com JWT, incluindo registro (register) e login, além do CRUD completo de tarefas.
- Node.js
- Express
- MongoDB (Mongoose)
- JWT (jsonwebtoken)
- bcryptjs
- dotenv
- CORS
- Joi (validação de requisições)
src/
├── config/
│ └── database.js # Conexão com MongoDB
│
├── controllers/
│ ├── loginControllers.js # Lógica de login
│ ├── userControllers.js # Lógica de registro
│ └── taskControllers.js # Lógica de CRUD de tarefas
│
├── middlewares/
│ └── authMiddlewares.js # Middleware de autenticação JWT
│ └── verifyReq.js # Validação com Joi
│
├── models/
│ ├── user.js # Schema do usuário (com hash da senha)
│ └── task.js # Schema das tarefas
│
├── schemas/
│ ├── schemaLogin.js # Validação de login
│ └── schemaRegister.js # Validação de registro
│ └── schemaTaskCreate.js # Validação da criação de Tarefas
│ └── schemaTaskUpdate.js # Validação do update de Tarefas
│
├── routes/
│ └── routes.js # Rotas de login, registro e tarefas
│
├── index.js # Arquivo principal da aplicação
└── .env # Variáveis de ambiente (PORT, MONGO_URI, JWT_SECRET, JWT_EXPIRES_IN)
- Registro de usuário:
POST /register - Login:
POST /login- Retorna um
tokenJWT no corpo da resposta.
- Retorna um
- Middleware (
authMiddleware.js):- Verifica e valida o token JWT em rotas protegidas.
-Criar nova tarefa: POST /task/register
-Listar tarefas do usuário: GET /task/find
-Listar tarefas do usuário por id: GET /task/find/:id
-Atualizar tarefa: PUT /task/update/:id
-Deletar tarefa: DELETE /task/delete/:id
- Clone o repositório:
git clone https://github.com/seu-usuario/task-manager-api.git
cd task-manager-api- Instale as dependências:
npm install- Crie um arquivo .env na raiz e adicione:
PORT=5000
MONGO_URI=seu_mongo_uri
JWT_SECRET=sua_chave_secreta- Inicie o servidor:
npm start✅ Status
✅ Registro e login com hash de senha
✅ Geração de token JWT
✅ Middleware de autenticação JWT
✅ CRUD completo de tarefas (Create, Read, Update, Delete)
✅ Validação com Joi
❌ Paginação e ordenação (em planejamento)
🧪 Testes com Insomnia ou Postman
Recomenda-se testar com Insomnia ou Postman, enviando requisições POST com JSON no corpo:
POST http://localhost:5000/register
{
"username": "Felipe",
"email": "felipe@hotmail.com",
"password": "123456"
}
📌 Observações
O token JWT deve ser salvo pelo frontend e enviado nas requisições protegidas via header:
Authorization: Bearer <token>
✍️ Autor
Felipe — Desenvolvedor backend 💻