| .. | ||
| prisma | ||
| src | ||
| .dockerignore | ||
| .env.development | ||
| .env.production | ||
| .gitignore | ||
| deploy.sh | ||
| docker-compose.development.yml | ||
| docker-compose.production.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| package-lock.json | ||
| package.json | ||
| prisma.config.ts | ||
| README.md | ||
| tsconfig.json | ||
| tsconfig.tools.json | ||
🚀 ToP Tran Backend
Backend da aplicação ToP Tran construído com Node.js, Express, TypeScript e Prisma.
📋 Requisitos
- Node.js 18+
- Docker/Podman
- PostgreSQL 16+
🏗️ Estrutura
src/
├── controllers/ # Lógica HTTP
├── routes/ # Definição de rotas
├── services/ # Lógica de negócios
├── repositories/ # Acesso ao banco de dados
├── middlewares/ # Middlewares Express
├── lib/ # Bibliotecas utilitárias
└── server.ts # Ponto de entrada
prisma/
├── schema.prisma # Definição do banco de dados
└── migrations/ # Histórico de mudanças no BD
🚀 Quick Start
Desenvolvimento Local
# 1. Instalar dependências
npm install
# 2. Configurar .env
cp .env.example .env
# 3. Executar migrações
npx prisma migrate dev
# 4. Iniciar servidor
npm run dev
Com Docker
# Desenvolvimento
chmod +x deploy.sh
./deploy.sh development
# Produção
./deploy.sh production
📦 Scripts Disponíveis
| Script | Descrição |
|---|---|
npm run dev |
Iniciar servidor em modo watch |
npm run build |
Compilar TypeScript para JavaScript |
npm run start |
Rodar aplicação compilada |
npm run typecheck |
Verificar tipos sem compilar |
🐳 Docker Commands
Build
# Com NODE_ENV=production (padrão)
NODE_ENV=production podman build -t toptran-backend:latest .
# Com NODE_ENV=development
NODE_ENV=development podman build --build-arg NODE_ENV=development -t toptran-backend:dev .
Run
# Produção
NODE_ENV=production podman-compose --env-file .env.production -f docker-compose.yml up -d
# Desenvolvimento
NODE_ENV=development podman-compose --env-file .env.development -f docker-compose.yml up -d
Logs
NODE_ENV=production podman-compose -f docker-compose.yml logs -f backend
Stop
podman-compose -f docker-compose.yml down
🗄️ Banco de Dados
Migrações
# Criar nova migração
npx prisma migrate dev --name descricao_da_mudanca
# Aplicar migrações
npx prisma migrate deploy
# Resetar banco (⚠️ deleta dados)
npx prisma migrate reset
Studio (GUI)
npx prisma studio
📡 Rotas da API
Autenticação
POST /auth/register- Registrar usuárioPOST /auth/login- LoginPOST /auth/refresh- Refresh token
Usuários
GET /users/me- Obter dados do usuárioGET /users/profile- Obter perfilPATCH /users/profile- Atualizar perfilPUT /users/me- Atualizar usuárioDELETE /users/me- Deletar conta
Sincronização
GET /sync/companies- Listar empresasPOST /sync/companies- Sincronizar empresasGET /sync/rides- Listar corridasPOST /sync/rides- Sincronizar corridas
🔑 Variáveis de Ambiente
# Banco de Dados
DATABASE_URL=postgresql://user:password@host:5432/db_name
DB_USER=user
DB_PASSWORD=password
DB_HOST=localhost
DB_PORT=5432
DB_NAME=toptran
# Servidor
PORT=4000
NODE_ENV=production
# JWT
JWT_SECRET=sua_chave_secreta_aqui
JWT_REFRESH_SECRET=sua_chave_refresh_aqui
🚢 Deploy
Opção 1: Script de Deploy
chmod +x deploy.sh
# Desenvolvimento
./deploy.sh development
# Produção
./deploy.sh production
Opção 2: Manual com Docker Compose
# Produção
NODE_ENV=production podman-compose \
--env-file .env.production \
-f docker-compose.yml \
up --build -d
# Executar migrações
NODE_ENV=production podman-compose \
--env-file .env.production \
-f docker-compose.yml \
exec -T backend npx prisma migrate deploy
Opção 3: SSH para Servidor
# No servidor
cd /var/www/toptran-backend
git pull origin main
npm ci --only=production
npm run build
npx prisma migrate deploy
# Com PM2
pm2 restart toptran-backend
pm2 save
🔍 Troubleshooting
Erro: "Cannot find module 'express'"
npm install
npm run build
Erro: "Database connection refused"
# Verificar se PostgreSQL está rodando
podman ps | grep postgres
# Verificar DATABASE_URL em .env
cat .env
Erro: "port 4000 already in use"
# Parar container antigo
podman stop toptran-backend
# Ou usar porta diferente
PORT=5000 podman-compose up -d
📚 Referências
👤 Autor
Rayan
📄 Licença
ISC