- Autenticação: Endpoint para login e geração de token JWT.
- Gerenciamento de Produtos:
- Cadastro, edição, listagem e exclusão de produtos.
- Controle de acesso para que os usuários vejam apenas os produtos que cadastraram.
- Gerenciamento de Usuários:
- Cadastro, edição, listagem e exclusão de usuários.
- Apenas administradores podem acessar as rotas de gerenciamento de usuários.
- Proteção de Rotas: Rotas protegidas por autenticação JWT e controle de acesso baseado em roles.
- Documentação: Documentação dos endpoints e valores esperados.
- Framework: Desenvolvido utilizando NestJS com Prisma ORM.
- Testes: Implementação de testes utilizando JEST.
- Tratamento de Erros: Respostas com códigos de status HTTP apropriados e mensagens de erro claras.
- POST /auth
- Gera um token JWT para autenticação.
- Payload:
{ "username": "string", "password": "string" }
-
POST /users
- Cria um novo usuário.
- Payload:
{ "name": "string", "username": "string", "email": "string", "password": "string" }
-
GET /users
- Lista todos os usuários (somente para administradores).
- Headers:
{ "Authorization": "Bearer {{authToken}}" }
-
GET /users/:username
- Obtém detalhes de um usuário pelo nome de usuário.
- Headers:
{ "Authorization": "Bearer {{authToken}}" }
-
GET /user/:id
- Obtém detalhes de um usuário pelo ID.
- Headers:
{ "Authorization": "Bearer {{authToken}}" }
-
PUT /users/:id
- Atualiza as informações de um usuário.
- Headers:
{ "Authorization": "Bearer {{authToken}}" }
- Payload:
{ "name": "string", "email": "string", "password": "string", "username": "string" }
-
DELETE /users/:id
- Deleta um usuário.
- Headers:
{ "Authorization": "Bearer {{authToken}}" }
-
POST /products
- Cria um novo produto.
- Headers:
{ "Authorization": "Bearer {{authToken}}" }
- Payload:
{ "name": "string", "quantity": "number", "value": "number" }
-
GET /products
- Lista todos os produtos do usuário logado.
- Headers:
{ "Authorization": "Bearer {{authToken}}" }
-
GET /products/:id
- Obtém detalhes de um produto pelo ID.
- Headers:
{ "Authorization": "Bearer {{authToken}}" }
-
PUT /products/:id
- Atualiza as informações de um produto.
- Headers:
{ "Authorization": "Bearer {{authToken}}" }
- Payload:
{ "name": "string", "quantity": "number", "value": "number" }
-
DELETE /products/:id
- Deleta um produto.
- Headers:
{ "Authorization": "Bearer {{authToken}}" }
-
Clone o repositório:
git clone https://github.com/pedrodecf/txai-desafio-backend.git cd txai-desafio-backend
-
Instale as dependências:
npm install
-
Inicie o docker:
docker compose up -d
-
Configure as variáveis de ambiente no arquivo
.env
. -
Execute as migrações do Prisma:
npx prisma migrate dev
-
Inicie a aplicação:
npm run start:dev
-
Acesse a documentação das rotas no arquivo
client.http
.
- Para executar os testes unitários:
npm run test