O projeto foi desenvolvido com o intuito de criar uma API para gerenciar usuários e consumir apis públicas de terceiros.
Para instalar e rodar a API basta rodar os seguintes comandos
1 - Clonando o projeto
git clone https://github.com/juninhokaponne/api_node.git2 - Instalando as dependências
npm install
3 - Rodar as migrations
npx prisma migrate dev4 - Rodar o conteiner ( -D ou Detached mode: Roda um container em background )
docker-compose up -d
5 - Rodar o projeto localmente
npm run dev
6 - Rodar os testes
npm run test
Criei um enviroment de produção pelo Heroku para o back-end, você pode testar diretamente pela seguinte url
Endpoint de cadastrar usuário:
https://api-node-prod-c6ef4b4f2eef.herokuapp.com/api/users
Todas as rotas necessitam de autenticação, para isso é necessário passar o token no header da requisição.
A rota de cadastro e login de usuário não necessitam de token.
Authorization : Bearer <token> GET /localhost/api/users GET /localhost/api/users/:id POST /localhost/api/users PUT /localhost/api/users/:id DELETE /localhost/api/users/:id GET /localhost/api/moviesHá um arquivo .env.example na raiz do projeto, você pode copiar e colar o conteúdo dele em um arquivo .env e preencher as variáveis de ambiente.
Para rodar esse projeto, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env
DATABASE_URL
OBS: Rodando localmente você pode utilizar as mesmas informações que disponibilizei no docker-compose.yml com base nele só montar a url de conexão. Dessa forma você consegue rodar um container local rodando postgres com conexão com o prisma.
Back-end: Node, Express, Jest, Prisma.
Arquitetura do projeto: Me inspirei na Layered Architecture + Clean Code.
Principios: Solid
Alguns pontos que buscaria melhorar na minha solução seriam, autenticação, middlewares, testes, CI/CD, documentação ... são alguns pontos que identifico que poderiam ser feitos.