Uma API RESTful para gerenciar tarefas, desenvolvida com Node.js, Express e Sequelize. A API suporta autenticação com JWT, manipulação de usuários e gerenciamento de tarefas com um banco de dados PostgreSQL.
- Node.js: Plataforma JavaScript para desenvolvimento do servidor.
- Express.js: Framework minimalista para criação de APIs.
- Sequelize: ORM para integração com bancos de dados relacionais.
- PostgreSQL: Banco de dados utilizado para persistência.
- JWT (JSON Web Token): Para autenticação e autorização.
- bcryptjs: Para criptografar senhas.
- Node.js e Express: Proporcionam alta performance e facilidade no desenvolvimento de APIs.
- Sequelize: Abstrai operações de banco de dados, reduzindo a complexidade de consultas SQL.
- PostgreSQL: Banco robusto e confiável, ideal para sistemas relacionais.
- JWT: Garante segurança na autenticação sem armazenar sessões no servidor.
Antes de começar, você precisará ter instalado em sua máquina:
- Node.js (v14 ou superior)
- PostgreSQL (v12 ou superior)
- npm (gerenciador de pacotes do Node.js)
- Clone o repositório
git clone <URL_DO_REPOSITÓRIO> cd to-do-list
- Instale as dependências
npm install
- Configure as variáveis de ambiente
Crie um arquivo .env na raiz do projeto e adicione as seguintes variáveis:
DB_NAME=<nome_do_banco> DB_USER=<usuario_do_banco> DB_PASSWORD=<senha_do_banco> DB_HOST=<host_do_banco> JWT_SECRET=<chave_secreta_jwt> PORT=3000
- Inicie o servidor
npm run start
- Teste a API A API estará rodando em http://localhost:3000
Autenticação:
Registrar Usuário
- URL: /auth/register
- Método: POST
- Body:
{ "username": "string", "email": "string", "password": "string" }
- Resposta:
{ "message": "User registered", "user": { "id": "number", "username": "string", "email": "string" } }
Login de Usuários:
- URL: /auth/login
- Método: POST
- Body:
{ "email": "string", "password": "string" }
- Resposta:
{ "message": "Success on Login!", "token": "string" }
Tarefas
- Headers:
{ "Authorization": "Bearer <token>" }
Criar Tarefa:
- URL: /task
- Método: POST
- Body:
{ "title": "string", "description": "string" }
- Resposta:
{ "id": "number", "title": "string", "description": "string", "status": "boolean", "userId": "number" }
Listar Tarefas:
- URL: /task
- Método: GET
- Resposta:
[ { "id": "number", "title": "string", "description": "string", "status": "boolean", "userId": "number" } ]
Atualizar Tarefa:
- URL: /task/:id
- Método: PUT
- Body:
{ "title": "string", "description": "string", "status": "boolean" }
- Resposta:
{ "id": "number", "title": "string", "description": "string", "status": "boolean", "userId": "number" }
Deletar Tarefa:
- URL: /task/:id
- Método: DELETE
- Resposta: 204 No Content
Este projeto está sob a licença ISC. Esse arquivo fornece uma documentação completa com instruções claras para configurar e usar sua API.