top-tran/backend
Rayan Konecny 4492a12ca2 Deploy prd
2026-05-03 21:25:37 -03:00
..
prisma Repo act 2026-05-03 18:02:08 -03:00
src Repo act 2026-05-03 18:02:08 -03:00
.dockerignore Repo act 2026-05-03 18:02:08 -03:00
.env.development Deploy prd 2026-05-03 21:25:37 -03:00
.env.production Deploy prd 2026-05-03 21:25:37 -03:00
.gitignore Deploy prd 2026-05-03 21:25:37 -03:00
deploy.sh Deploy prd 2026-05-03 21:25:37 -03:00
docker-compose.development.yml Deploy prd 2026-05-03 21:25:37 -03:00
docker-compose.production.yml Deploy prd 2026-05-03 21:25:37 -03:00
docker-compose.yml Deploy prd 2026-05-03 21:25:37 -03:00
Dockerfile Deploy prd 2026-05-03 21:25:37 -03:00
package-lock.json Deploy prd 2026-05-03 21:25:37 -03:00
package.json Deploy prd 2026-05-03 21:25:37 -03:00
prisma.config.ts Adjusts in git config 2026-04-27 19:41:17 -03:00
README.md Deploy prd 2026-05-03 21:25:37 -03:00
tsconfig.json Adjusts in git config 2026-04-27 19:41:17 -03:00
tsconfig.tools.json Adjusts in git config 2026-04-27 19:41:17 -03:00

🚀 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ário
  • POST /auth/login - Login
  • POST /auth/refresh - Refresh token

Usuários

  • GET /users/me - Obter dados do usuário
  • GET /users/profile - Obter perfil
  • PATCH /users/profile - Atualizar perfil
  • PUT /users/me - Atualizar usuário
  • DELETE /users/me - Deletar conta

Sincronização

  • GET /sync/companies - Listar empresas
  • POST /sync/companies - Sincronizar empresas
  • GET /sync/rides - Listar corridas
  • POST /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