Esta é uma API RESTful para gerenciar tarefas de usuários. Permite que os usuários autentiquem, criem, atualizem, deletem e listem tarefas.
-
Clone o repositório:
git clone https://github.com/brenonsc/todos-api.git cd todos-api -
Copie o arquivo
.env.examplepara.enve mude as variáveis de ambiente caso sinta necessidade:cp .env.example .env
-
Certifique-se de que o Docker está instalado na sua máquina.
Caso não tenha, faça o download em: Docker Desktop. -
Execute a aplicação:
docker compose up --build
A API está documentada em Swagger, e pode ser acessada em http://localhost:3000/apidocs.
-
POST /login
-
Resumo: Autenticar um usuário.
-
Corpo da Solicitação:
{ "email": "john@email.com", "password": "p@ssw0rd" } -
Respostas:
- 200: Usuário autenticado com sucesso.
- 400: Solicitação inválida.
- 401: Email ou senha inválidos.
- 500: Erro interno do servidor.
-
-
POST /logout
- Resumo: Deslogar um usuário.
- Respostas:
- 204: Usuário deslogado com sucesso.
- 401: Usuário não logado.
- 500: Erro interno do servidor.
-
POST /users
-
Resumo: Criar um novo usuário.
-
Corpo da Solicitação:
{ "name": "John Doe", "email": "john@email.com", "password": "p@ssw0rd" } -
Respostas:
- 201: Usuário criado com sucesso.
- 400: Solicitação inválida.
- 500: Erro interno do servidor.
-
-
GET /users/me
- Resumo: Obter informações do usuário logado.
- Respostas:
- 200: Usuário obtido com sucesso.
- 404: Usuário não encontrado.
- 500: Erro interno do servidor.
-
PUT /users/{id}
-
Resumo: Atualizar um usuário.
-
Corpo da Solicitação:
{ "name": "Jane Doe", "email": "jane@email.com", "password": "p@ssw0rd" } -
Respostas:
- 200: Usuário atualizado com sucesso.
- 400: Solicitação inválida.
- 401: Usuário não logado.
- 403: Usuário não autorizado.
- 404: Usuário não encontrado.
- 500: Erro interno do servidor.
-
-
DELETE /users/{id}
- Resumo: Deletar um usuário.
- Respostas:
- 204: Usuário deletado com sucesso.
- 401: Usuário não logado.
- 403: Usuário não autorizado.
- 404: Usuário não encontrado.
- 500: Erro interno do servidor.
-
GET /todos
- Resumo: Listar todas as tarefas do usuário.
- Respostas:
- 200: Tarefas listadas com sucesso.
- 401: Usuário não logado.
- 500: Erro interno do servidor.
-
POST /todos
-
Resumo: Criar uma nova tarefa.
-
Corpo da Solicitação:
{ "title": "Swagger", "description": "Configurar Swagger na aplicação.", "status": "Pendente" } -
Respostas:
- 201: Tarefa criada com sucesso.
- 401: Usuário não logado.
- 500: Erro interno do servidor.
-
-
GET /todos/{id}
- Resumo: Obter uma tarefa específica do usuário.
- Respostas:
- 200: Tarefa obtida com sucesso.
- 401: Usuário não logado.
- 404: Tarefa não encontrada ou não pertence ao usuário.
- 500: Erro interno do servidor.
-
PUT /todos/{id}
-
Resumo: Atualizar uma tarefa.
-
Corpo da Solicitação:
{ "title": "Swagger", "description": "Configurar Swagger na aplicação.", "status": "Concluído" } -
Respostas:
- 200: Tarefa atualizada com sucesso.
- 401: Usuário não logado.
- 404: Tarefa não encontrada ou não pertence ao usuário.
- 500: Erro interno do servidor.
-
-
DELETE /todos/{id}
- Resumo: Deletar uma tarefa.
- Respostas:
- 204: Tarefa deletada com sucesso.
- 401: Usuário não logado.
- 404: Tarefa não encontrada ou não pertence ao usuário.
- 500: Erro interno do servidor.
src
|-- config
| |-- blacklist.js
| |-- database.js
|-- controllers
| |-- AuthController.js
| |-- TodoController.js
| |-- UserController.js
|-- database
| |-- migrations
| | |-- 20250215164210-create-todos.js
| | |-- 20250215204534-create-users.js
| | |-- 20250215220755-add-user-id-to-todos.js
|-- middleware
| |-- auth.js
|-- models
| |-- index.js
| |-- todos.js
| |-- users.js
|-- app.js
|-- routes.js
|-- server.js
.env.example
.gitignore
.sequelizerc
Dockerfile
docker-compose.yaml
LICENSE
package-lock.json
package.json
README.md
swagger.json
yarn.lockA utilização do Docker concentra vários benefícios, como a facilidade de implantação, de forma que a aplicação funcione da mesma maneira em máquinas diferentes e a padronização do ambiente de desenvolvimento, possibilitando criar containers independentes e isolados.
Sequelize é um ORM (Object-Relational Mapping) para Node.js que facilita o trabalho com bancos de dados SQL. Ele suporta a criação de migrações, o que ajuda a manter o esquema do banco de dados com controle de versão. Além disso, o Sequelize simplifica a manipulação de dados com uma API intuitiva, reduzindo a quantidade de código SQL necessário.
Este software está licenciado sob a Licença MIT.
