# šŸš€ 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash NODE_ENV=production podman-compose -f docker-compose.yml logs -f backend ``` ### Stop ```bash podman-compose -f docker-compose.yml down ``` ## šŸ—„ļø Banco de Dados ### MigraƧƵes ```bash # 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) ```bash 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 ```env # 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 ```bash chmod +x deploy.sh # Desenvolvimento ./deploy.sh development # Produção ./deploy.sh production ``` ### Opção 2: Manual com Docker Compose ```bash # 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 ```bash # 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'" ```bash npm install npm run build ``` ### Erro: "Database connection refused" ```bash # Verificar se PostgreSQL estĆ” rodando podman ps | grep postgres # Verificar DATABASE_URL em .env cat .env ``` ### Erro: "port 4000 already in use" ```bash # Parar container antigo podman stop toptran-backend # Ou usar porta diferente PORT=5000 podman-compose up -d ``` ## šŸ“š ReferĆŖncias - [Express.js](https://expressjs.com/) - [Prisma](https://www.prisma.io/) - [TypeScript](https://www.typescriptlang.org/) - [Docker](https://docs.docker.com/) ## šŸ‘¤ Autor Rayan ## šŸ“„ LicenƧa ISC