https://github.com/brenonsc/todos-api
Repositório criado para armazenar API em Node.js, para uma To-Do List.
https://github.com/brenonsc/todos-api
bcrypt express-js jwt-authentication node-js postgresql sequelize-orm swagger
Last synced: 9 days ago
JSON representation
Repositório criado para armazenar API em Node.js, para uma To-Do List.
- Host: GitHub
- URL: https://github.com/brenonsc/todos-api
- Owner: brenonsc
- License: mit
- Created: 2025-02-15T15:23:12.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-17T23:51:18.000Z (about 1 year ago)
- Last Synced: 2025-07-07T02:46:56.663Z (9 months ago)
- Topics: bcrypt, express-js, jwt-authentication, node-js, postgresql, sequelize-orm, swagger
- Language: JavaScript
- Homepage:
- Size: 67.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# To-Dos API :white_check_mark:



Esta é uma API RESTful para gerenciar tarefas de usuários. Permite que os usuários autentiquem, criem, atualizem, deletem e listem tarefas.
## Tecnologias utilizadas 🔨
## Instalação 🖥️
1. **Clone o repositório:**
```sh
git clone https://github.com/brenonsc/todos-api.git
cd todos-api
```
2. **Copie o arquivo `.env.example` para `.env` e mude as variáveis de ambiente caso sinta necessidade:**
```sh
cp .env.example .env
```
3. **Certifique-se de que o Docker está instalado na sua máquina.**
Caso não tenha, faça o download em: [Docker Desktop](https://www.docker.com/products/docker-desktop/).
4. **Execute a aplicação:**
```sh
docker compose up --build
```
## Documentação :arrow_forward:
A API está documentada em Swagger, e pode ser acessada em `http://localhost:3000/apidocs`.
## Endpoints :hash:
### Auth
- **POST /login**
- Resumo: Autenticar um usuário.
- Corpo da Solicitação:
```json
{
"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.
### Users
- **POST /users**
- Resumo: Criar um novo usuário.
- Corpo da Solicitação:
```json
{
"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:
```json
{
"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.
### Todos
- **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:
```json
{
"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:
```json
{
"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.
## Estrutura do projeto :open_file_folder:
``` bash
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.lock
```
## Motivação de uso de ferramentas 🧰
### Docker 🐳
A 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 :diamond_shape_with_a_dot_inside:
**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.
## Licença 📋
Este software está licenciado sob a [Licença MIT](https://github.com/brenonsc/todos-api/blob/main/LICENSE).