E-Commerce Backend
API com endpoints para criação de usuários, produtos, compras e avaliações com autenticação e autorização
📑 Índice
📌 Features
- [x] CRUD de usuários
- [x] Autenticação de usuário
- [x] Rotação de Refresh Token
- [x] Detecção de Reuso Automático
- [x] Rotação de Refresh Token
- [x] Autorização de usuário (admin)
- [x] CRUD de produtos
- [x] Upload de imagens
- [x] CRUD de categorias
- [x] CRUD de compras
🔧 Instalação
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
🔩 Testes
- 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
💻 Tecnologias
- 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