// Ponto de entrada para a API const loadEnv = require('./shared/config/environment.js'); loadEnv(); const express = require('express'); const cors = require('cors'); const routes = require('./routes/routes.js'); const logger = require('./shared/utils/logger.js'); const app = express(); app.set('trust proxy', 1); const PORT = process.env.PORT || 3000; /** * CORS */ app.use(cors({ origin: 'https://sothis.com.br', methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowedHeaders: ['Content-Type', 'Authorization'] })); app.use(express.json()); /** * Logger */ app.use((req, res, next) => { logger.info(`Requisição recebida: ${req.method} ${req.originalUrl} - IP: ${req.ip}`); next(); }); /** * Rotas */ app.use('/api', routes); /** * Tratamento de erros */ app.use((err, req, res, next) => { logger.error(`Erro não tratado: ${err.message}`, { stack: err.stack, url: req.originalUrl, method: req.method, ip: req.ip }); res.status(500).send('Ocorreu um erro interno no servidor.'); }); app.listen(PORT, () => { logger.info(`🚀 Servidor API rodando na porta ${PORT} em modo ${process.env.NODE_ENV}`); }); /* DESCRIÇÃO: Este arquivo é o ponto de entrada principal (entry point) da aplicação. Ele é responsável por inicializar e configurar o servidor Express. FLUXO: 1. Carrega as variáveis de ambiente a partir do arquivo `.env` utilizando a função `loadEnv`. 2. Importa as dependências necessárias, como o `express` para o servidor, `routes` para o roteamento e `logger` para os logs. 3. Cria uma instância do aplicativo Express. 4. Define a porta do servidor, utilizando a variável de ambiente `PORT` ou o valor padrão `3000`. 5. Configura o middleware `express.json()` para permitir que a API aceite e interprete corpos de requisição no formato JSON. 6. Associa as rotas importadas de `./routes/routes.js` ao prefixo `/api`. Todas as rotas definidas nesse arquivo serão acessíveis a partir de `/api/...`. 7. Inicia o servidor para escutar na porta definida. 8. Registra um log informativo quando o servidor é iniciado com sucesso, indicando a porta e o ambiente de execução (`development`, `production`, etc.). Este arquivo é o coração da API, orquestrando a configuração inicial e o roteamento de todas as requisições recebidas. */