API com endpoints para criação de usuários, produtos, compras e avaliações com autenticação e autorização
- CRUD de usuários
- Autenticação de usuário
- Rotação de Refresh Token
- Detecção de Reuso Automático
- Rotação de Refresh Token
- Autorização de usuário (admin)
- CRUD de produtos
- Upload de imagens
- CRUD de categorias
- CRUD de compras
🔗 Docs usando Compodoc no GitHub Pages
-
Você precisará ter o Node.js instalado
-
Instalação
# Clona o projeto para sua máquina
git clone https://github.com/alvaromrveiga/ecommerce-backend
# Entra na pasta do projeto
cd ecommerce-backend
# Instala as dependências
yarn
-
Crie um arquivo .env na raiz do projeto preenchendo as informações descritas no .env.example
-
Iniciar servidor
# Roda as migrations
yarn migrate:dev
# Inicia o servidor em modo de desenvolvimento
yarn start:dev
# O servidor abrirá na porta 3000.
# Você pode acessar a documentação com Swagger em http://localhost:3000/api/
# Para visualizar o banco de dados
yarn prisma studio
-
Crie um arquivo .env.test na raiz do projeto alterando no mínimo o banco de dados que colocou no .env
- Exemplo: postgresql://username:password@localhost:5432/ecommerce-test?schema=public
# Roda as migrations no bando de testes yarn migrate:test # Roda todos os testes unitários e de integração # Pode demorar alguns poucos minutos # 10 suites e 187 testes yarn test:all # Roda apenas os testes unitários yarn test # Roda apenas os testes de integração yarn test:e2e # Para visualizar o banco de dados de testes yarn studio:test
A coleção de 30 requisições para testar o projeto no Insomnia pode ser encontrada aqui.
- Para importar no Insomnia:
- Clique na engrenagem no canto superior direito
- Aba de Data
- Import Data
- From File
- Selecione o arquivo insomnia-requests.json dentro da pasta assets na raiz do projeto
- Typescript - tooling e minimizar erros
- Node.js e NestJS com Express - construir o servidor
- Prisma com PostgreSQL - armazenar dados
- Passport e passport-jwt - autenticação com Json Web Token
- Class-validator e class-transformer - validações nos dados de entrada dos endpoints
- Bcrypt - hashs de senhas
- currency.js - cálculos monetários
- ms - cálculo da data de expiração do refresh token
- Prisma-error-enum - identificar os códigos para tratar as exceções do prisma
- Jest, SuperTest - testes
- Swagger UI Express e compodoc - documentação
- ESLint e Prettier - linting e formatação de código