Skip to content

brenonsc/todos-api

Repository files navigation

To-Dos API  ✅

License Node.js Docker

Esta é uma API RESTful para gerenciar tarefas de usuários. Permite que os usuários autentiquem, criem, atualizem, deletem e listem tarefas.


Tecnologias utilizadas  🔨

node      express     sequelize      jsonwebtoken      postgresql   swagger docker

Instalação  🖥️

  1. Clone o repositório:

    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:

    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.

  4. Execute a aplicação:

    docker compose up --build

Documentação  ▶️

A API está documentada em Swagger, e pode ser acessada em http://localhost:3000/apidocs.


Endpoints  #️⃣

Auth

  • 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.

Users

  • 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.

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:

      {
        "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.

Estrutura do projeto  📂

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  💠

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.

About

Repositório criado para armazenar API em Node.js, para uma To-Do List.

Topics

Resources

License

Stars

Watchers

Forks

Contributors