Uma API RESTful construída com NestJS para o sistema BellsPretty.
- ✅ NestJS framework (v10)
- ✅ TypeScript
- ✅ Swagger/OpenAPI documentation
- ✅ Validation pipes com class-validator
- ✅ Configuration management
- ✅ CORS enabled
- ✅ Health check endpoints
- ✅ ESLint & Prettier configurados
- ✅ Jest para testes
- ✅ Estrutura preparada para TypeORM
- ✅ Multi-ambiente: SQLite (dev) + PostgreSQL (prod)
- ✅ Migrações configuradas
- ✅ Autenticação JWT + Refresh Tokens
- ✅ Sistema de registro e login
- ✅ Proteção de rotas com Guards
- ✅ Interfaces e DTOs padronizados
- Node.js (v16 ou superior)
- npm ou yarn
- PostgreSQL (para produção) - SQLite usado automaticamente em desenvolvimento
.\setup.ps1chmod +x setup.sh
./setup.sh- Clone o repositório:
git clone <repository-url>
cd bellspretty-api- Instale as dependências:
npm install- Configure as variáveis de ambiente:
cp .env.example .env-
Edite o arquivo
.envcom suas configurações. -
Compile e teste:
npm run build
npm test# Desenvolvimento
npm run start:dev # Inicia o servidor em modo watch
# Build
npm run build # Compila o projeto
# Produção
npm run start:prod # Inicia o servidor em produção
# Testes
npm run test # Executa testes unitários
npm run test:watch # Executa testes em modo watch
npm run test:cov # Executa testes com coverage
npm run test:e2e # Executa testes e2e
# Banco de dados
npm run migration:generate -- --name=CreateUsers # Gera migração
npm run migration:run # Executa migrações
npm run migration:revert # Desfaz última migração
# Qualidade de código
npm run lint # Executa ESLint
npm run format # Formata código com PrettierGET /api- Mensagem de boas-vindasGET /api/health- Status detalhado da aplicação e banco de dados
POST /api/auth/register- Registrar novo usuárioPOST /api/auth/login- Fazer loginPOST /api/auth/refresh- Renovar access tokenPOST /api/auth/logout- Logout específicoPOST /api/auth/logout-all- Logout em todos os dispositivosGET /api/auth/profile- Perfil do usuário autenticado
GET /api/docs- Interface Swagger UI
src/
├── auth/ # Módulo de autenticação
│ ├── dto/ # DTOs de autenticação
│ ├── guards/ # Guards JWT e Local
│ ├── strategies/ # Estratégias Passport
│ ├── auth.controller.ts # Endpoints de auth
│ ├── auth.service.ts # Lógica de autenticação
│ └── auth.module.ts # Módulo de auth
├── common/ # Arquivos compartilhados
│ ├── decorators/ # Decorators customizados
│ ├── dto/ # Data Transfer Objects
│ │ └── pagination.dto.ts # DTO para paginação
│ └── interfaces/ # Interfaces TypeScript
│ └── api-response.interface.ts
├── config/ # Configurações
│ ├── app.config.ts # Configuração da aplicação
│ └── database.config.ts # Configuração multi-ambiente do banco
├── entities/ # Entidades TypeORM
│ ├── user.entity.ts # Entidade de usuário
│ └── refresh-token.entity.ts # Entidade de refresh tokens
├── migrations/ # Migrações do banco (produção)
├── main.ts # Ponto de entrada
├── app.module.ts # Módulo principal
├── app.controller.ts # Controller principal
├── app.service.ts # Service principal
└── app.service.spec.ts # Testes unitários
data/ # Banco SQLite (desenvolvimento)
├── development.sqlite # Arquivo SQLite criado automaticamente
└── README.md
test/ # Testes e2e
├── app.e2e-spec.ts
└── jest-e2e.json
Copie .env.example para .env e configure:
# Desenvolvimento (SQLite - automático)
NODE_ENV=development
PORT=3000
DB_DATABASE=data/development.sqlite
# Produção (PostgreSQL)
NODE_ENV=production
PORT=3000
DB_HOST=your-postgres-host
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=your-secure-password
DB_DATABASE=bellspretty_prod
DB_SSL=true
# JWT
JWT_SECRET=your-secret-key
JWT_EXPIRES_IN=7dnpm run start:devA aplicação estará disponível em http://localhost:3000.
A documentação Swagger estará em http://localhost:3000/api/docs.
# Testes unitários
npm test
# Testes com coverage
npm run test:cov
# Testes e2e
npm run test:e2e- Controllers: Responsáveis por receber requests e retornar responses
- Services: Contêm a lógica de negócio
- DTOs: Validação e transformação de dados de entrada
- Interfaces: Tipagem de responses e contratos
- Modules: Organização e injeção de dependências
-
Sistema de autenticação está pronto! ✅
- JWT com access e refresh tokens
- Registro e login de usuários
- Proteção de rotas implementada
- Logout individual e global
-
Banco de dados está configurado! ✅
- SQLite configurado para desenvolvimento
- PostgreSQL configurado para produção
- Entidades
UsereRefreshTokenimplementadas
-
Próximas funcionalidades:
# Criar novos módulos nest generate module products nest generate module orders -
Melhorias futuras:
- Rate limiting para endpoints de auth
- Recuperação de senha por email
- Autenticação 2FA
- Auditoria de login
- Middleware de logging personalizado
A aplicação implementa um sistema completo de autenticação:
- Access Tokens: JWT de curta duração (15 min)
- Refresh Tokens: Tokens de longa duração (7 dias)
- Múltiplos Dispositivos: Logout específico ou global
- Segurança: Hash bcrypt, validação de entrada
Veja AUTHENTICATION.md para o guia completo de autenticação.
A aplicação usa configuração multi-ambiente:
- Desenvolvimento: SQLite (
data/development.sqlite) - Teste: SQLite em memória
- Produção: PostgreSQL
Veja DATABASE.md para detalhes completos sobre configuração do banco.
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -am 'Adiciona nova feature') - Push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
Este projeto está sob a licença [UNLICENSED].