Este projeto é um template de back-end desenvolvido em NestJS com integração ao PostgreSQL e Prisma ORM, documentação via Swagger e Redoc, testes com Jest e suporte a execução via Docker.
- NestJS – Framework Node.js para construção de APIs escaláveis.
- Prisma – ORM moderno para Node.js e TypeScript.
- Swagger – Documentação interativa da API.
- Redoc – Documentação estática da API.
- PostgreSQL – Banco de dados relacional.
- Jest – Framework de testes.
- Docker & Docker Compose – Containerização e orquestração.
.
├── prisma/ # Esquema do Prisma e migrações do banco de dados
├── src/
│ ├── core/ # Núcleo da aplicação (compartilhado entre módulos)
│ │ ├── decorators/ # Decorators personalizados
│ │ ├── dtos/ # DTOs universais usados por todo o projeto
│ │ ├── exceptions/ # Classes para tratamento de erros
│ │ ├── interceptors/ # Interceptadores globais
│ │ ├── filters/ # Filtros de exceção (Exception Filters)
│ │ ├── pipes/ # Pipes globais
│ │ └── utils/ # Funções utilitárias
│ │
│ └── modules/ # Módulos de cada entidade
│ └── <entidade>/ # Exemplo: user, product, order, etc.
│ ├── controllers/ # Controladores HTTP (rotas)
│ ├── services/ # Serviços com regras de negócio
│ ├── use-cases/ # Casos de uso
│ │ ├── commands/ # Comandos (ações que modificam estado)
│ │ └── queries/ # Consultas (ações que leem dados)
│ ├── dtos/ # DTOs específicos da entidade
│ └── entities/ # Modelos ou classes da entidade
│
├── test/ # Testes unitários e de integração (Jest)
├── docker-compose.yml # Configuração Docker
├── package.json
└── README.md
NODE_ENV="development"
# NODE_ENV="production"
# NODE_ENV="test"
# NODE_ENV="homologation"
PORT="8080"
API_VERSION="v1"
FRONTEND_URL="http://localhost:5173"
DB_USER="admin"
DB_PASSWORD="admin"
DB_PORT="5433"
DB_NAME="template_test"
DB_HOST="localhost"
DATABASE_URL="postgresql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}?schema=public"
ADMIN_NAME="admin"
ADMIN_EMAIL="admin@admin.com"
ADMIN_PASSWORD="Teste@123"
JWT_SECRET="ee8184f1c73ee6e4b07ac4f3c0cf96c8554f06733fc8105867bcdd758b876f"
CRYPTO_SECRET_KEY="a91f3464d74ed76e542b909f777bf11366eb7ba7e1898e49aef9b282376958"
docker compose up -d
- PostgreSQL na porta
5434
- API na porta
8081
(internamente8080
)
Rodar migrações do Prisma:
docker exec -it template-backend pnpm prisma migrate deploy
Parar os containers:
docker compose down
Acompanhar logs:
docker compose logs -f
Tipo | URL |
---|---|
Swagger UI | http://localhost:8081/api/v1/docs |
Swagger JSON | http://localhost:8081/swagger.json |
Redoc | http://localhost:8081/api/v1/redoc |
pnpm install
pnpm run test
pnpm run test:cov
pnpm install
pnpm run build
pnpm run start
Para aplicar migrações:
pnpm prisma migrate dev
Este projeto é um template livre para uso e modificação.