Uma API financeira construída com NestJS, Prisma e PostgreSQL, totalmente containerizada com Docker.
- Docker
- Docker Compose
- Git
# Clone o repositório
git clone <seu-repositorio>
cd finmoni-api
# Copie o arquivo de ambiente
cp .env.example .env# Subir todos os serviços (banco + aplicação)
docker-compose up -d- API: http://localhost:3000
- Banco: localhost:5433
- Status:
docker-compose ps
# Iniciar todos os serviços
docker-compose up -d
# Ver logs em tempo real
docker-compose logs -f app
# Ver status dos containers
docker-compose ps
# Parar todos os serviços
docker-compose down
# Reiniciar apenas a aplicação
docker-compose restart app# Ver logs da aplicação (para acompanhar mudanças)
docker-compose logs -f app
# Rebuild após mudanças no package.json
docker-compose build app
docker-compose up -d
# Limpar volumes (cuidado: apaga dados do banco)
docker-compose down -v# Gerar Prisma Client após mudanças no schema
docker-compose exec app npx prisma generate
# Aplicar mudanças no banco (development)
docker-compose exec app npx prisma db push
# Criar e aplicar migration
docker-compose exec app npx prisma migrate dev --name nome_da_migration
# Abrir Prisma Studio (interface visual do banco)
docker-compose exec app npx prisma studio# 1. Editar prisma/schema.prisma (adicionar models)
# 2. Gerar client
docker-compose exec app npx prisma generate
# 3. Aplicar no banco
docker-compose exec app npx prisma db push- Edite qualquer arquivo
.ts - Salve o arquivo
- Aguarde o log mostrar restart (2-3 segundos)
- Recarregue o browser manualmente (F5)
src/
├── prisma/ # Configuração do Prisma
├── modules/ # Seus módulos (criar conforme necessário)
├── app.module.ts # Módulo principal
└── main.ts # Bootstrap da aplicação
# Executar comando NestJS dentro do container
docker-compose exec app npx nest generate module users
docker-compose exec app npx nest generate controller users
docker-compose exec app npx nest generate service users# Verificar quem está usando a porta
lsof -i :3000
lsof -i :5433
# Mudar porta no docker-compose.yml se necessário# Ver logs de erro
docker-compose logs app
docker-compose logs postgres
# Rebuild forçado
docker-compose build --no-cache app# Parar tudo e limpar
docker-compose down -v
docker system prune -f
# Subir novamente
docker-compose up -d# 1. Verificar se o container reiniciou
docker-compose logs -f app
# 2. Verificar se o arquivo foi salvo
# 3. Recarregar o browser manualmente
# 4. Se não funcionar, restart manual
docker-compose restart app# Verificar se postgres está rodando
docker-compose ps
# Testar conexão
docker-compose exec app npx prisma db push
# Verificar variáveis de ambiente
docker-compose exec app printenv | grep DATABASE_URL# Parar e remover containers
docker-compose down
# Remover containers + volumes (CUIDADO: apaga dados)
docker-compose down -v
# Limpeza geral do Docker
docker system prune -f
# Rebuild completo
docker-compose build --no-cache
docker-compose up -d# Dentro do container (docker-compose exec app <comando>)
npm run start:dev # Modo desenvolvimento
npm run start:prod # Modo produção
npm run build # Build da aplicação
npm run lint # Executar linting
npm run format # Formatar código
npm run test # Executar testes
# Prisma
npx prisma generate # Gerar client
npx prisma db push # Aplicar schema no banco
npx prisma migrate dev # Criar migration
npx prisma studio # Interface visual# Database
DATABASE_URL="postgresql://finmoni:finmoni123@postgres:5432/finmoni_db?schema=public"
# Application
NODE_ENV=development
PORT=3000
# JWT (quando implementar autenticação)
JWT_SECRET=your-super-secret-jwt-key-here
JWT_EXPIRES_IN=7d- Altere credenciais do banco
- Configure
NODE_ENV=production - Use secrets seguros para JWT
# 1. Subir a aplicação
docker-compose up -d
# 2. Acompanhar logs
docker-compose logs -f app# Editar código → Salvar → Aguardar restart → Recarregar browser
# Ver logs: docker-compose logs -f app# 1. Editar prisma/schema.prisma
# 2. Aplicar: docker-compose exec app npx prisma db push
# 3. Gerar client: docker-compose exec app npx prisma generate# Parar aplicação (mantém dados)
docker-compose down# Aplicação não responde
docker-compose restart app
# Banco de dados corrompido
docker-compose down -v
docker-compose up -d
# Reset completo
docker-compose down -v
docker system prune -f
docker-compose build --no-cache
docker-compose up -d- Adicionar Models: Edite
prisma/schema.prisma - Criar Módulos: Use
npx nest generate - Implementar Autenticação: JWT + Guards
- Testes: Configure Jest para testes unitários
- Deploy: Configure Docker para produção
- Crie uma branch:
git checkout -b feature/nova-funcionalidade - Desenvolva usando Docker:
docker-compose up -d - Teste suas mudanças
- Commit:
git commit -m "Adiciona nova funcionalidade" - Push:
git push origin feature/nova-funcionalidade
- Logs:
docker-compose logs -f app - Status:
docker-compose ps - Rebuild:
docker-compose build app
Lembre-se: Sempre use Docker! Evite instalar Node.js localmente para manter consistência. 🐳