- CRUD usuários (clientes | admins)
- CRUD carros
- Autenticação de usuários
- Atribuição e desatribuição de cargo admin
- middleware para validar os dados recebidos via REST API
- middleware para validar autenticação e restringir acessos
- testes unitários e de integração
- Dockerizar a aplicação
- Nest.js
- Typescript
- Prisma (ORM)
- Postgresql
- Bcrypt
Me baseei nos conceitos de clean architecture para construir esse projeto tentando manter o código o mais claro possível.
Na camada de infra implementei os controllers devidamente separados de acordo com os casos de uso.
A camada de usecases é responsável pela lógica especifica da aplicação e nela os casos de uso estao separados em modulos (auth, cars, users).
renomeie o arquivo .env.example para .env.dev na raiz do projeto
Para executar esse projeto utilizando o docker
docker compose up -d
o script de inicialização leva cerca de 1 minuto para concluir as migrations e popular o banco de dados com os dados iniciais. verifique se a API já esta pronta para receber conexões executando:
docker logs cybergenios
a aplicação estará rodando em localhost:3000 e pode ser acessada utilizando o Insomnia ou outro cliente REST
Uma collection do insomnia está disponível na raiz desse repositório para facilitar os testes manuais
# usuário admnistrador
email: [email protected]
password: cybergenios
#usuário cliente
email: [email protected]
password: fulano
Como primeiro passo para executar os testes e2e é necessário ter um banco de dados postgres instalado
docker run -p 5433:5432 --name pg -e POSTGRES_USER=admin -e POSTGRES_PASSWORD=admin postgres -d
docker start pg
Rodar as migrations no banco de dados
yarn migrate:test
Para executar os testes e2e
yarn test:e2e
Para executar os testes unitários
yarn test