API RESTful desenvolvida em Node.js + Express para gerenciamento de tarefas individuais e em grupo, com autenticação via JWT e persistência de dados em MongoDB utilizando Prisma ORM.
- Cadastro e autenticação de usuários (JWT)
- Controle de acesso por roles (ex.:
admin) - CRUD de atividades (tarefas em grupo)
- CRUD de tarefas individuais
- Associação de usuários a atividades
- Middlewares de autenticação e autorização
- Node.js 18+
- Express
- MongoDB
- Prisma ORM
- JWT (JSON Web Token)
- bcrypt (hash de senhas)
- dotenv (variáveis de ambiente)
Antes de iniciar, você precisa ter instalado:
- Node.js 18 ou superior
- MongoDB (local ou Atlas)
- npm ou yarn
- npx (para comandos do Prisma)
-
Clone o repositório:
git clone https://github.com/seu-usuario/api-tarefas.git cd api-tarefas -
Instale as dependências:
npm install
-
Configure o arquivo
.env:PORT=3000 DATABASE_URL="mongodb+srv://usuario:senha@cluster.mongodb.net/tarefas" JWT_SECRET=sua_chave_secreta_super_forte
-
Gere o client do Prisma e aplique o schema:
npx prisma generate npx prisma db push
npm run devnpm run startA API será iniciada na porta definida em PORT ou, por padrão, 3000.
A autenticação é feita via JWT. Após o login, utilize o token retornado no header das requisições protegidas:
Authorization: Bearer <seu_token>
- POST
/usuarios/register— Cadastrar usuário - POST
/usuarios/login— Login e geração do token - GET
/usuarios— Listar usuários (protegido)
- POST
/atividades— Criar atividade (protegido) - GET
/atividades— Listar atividades do usuário (protegido)
- POST
/atividades/:atividade_id/tarefas— Criar tarefa em uma atividade (protegido)
curl -X POST http://localhost:3000/usuarios/register \
-H "Content-Type: application/json" \
-d '{"nome":"João","email":"joao@example.com","senha":"senha123"}'curl -X POST http://localhost:3000/usuarios/login \
-H "Content-Type: application/json" \
-d '{"email":"joao@example.com","senha":"senha123"}'curl http://localhost:3000/atividades \
-H "Authorization: Bearer <token>"src/
├── server.js
├── rotas/
│ ├── usuariosRotas.js
│ └── atividadesRotas.js
├── middleware/
│ ├── authMiddleware.js
│ └── roleMiddleware.js
├── prisma/
│ └── schema.prisma
- Não versionar o arquivo
.env - Utilize um
JWT_SECRETforte em produção - Proteja sua URI do MongoDB
- Faça hash de senhas com bcrypt
Contribuições são bem-vindas!
- Faça um fork do projeto
- Crie uma branch (
git checkout -b feature/nova-feature) - Commit suas alterações (
git commit -m 'feat: nova feature') - Faça o push (
git push origin feature/nova-feature) - Abra um Pull Request
Este projeto está sob a licença MIT. Consulte o arquivo LICENSE para mais informações.
Projeto ideal para estudos de Node.js, APIs REST, autenticação JWT e Prisma com MongoDB.