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
-
Você precisará ter o Node.js instalado
-
Instalação
# Clona o projeto para sua máquina
git clone https://github.com/geovanesv/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/ecommerceNest?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
- 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