Configuración principal de Express
Este archivo inicializa y configura la aplicación backend utilizando Express.
Incluye configuración de CORS, middlewares, rutas, documentación Swagger y tareas programadas, además de definir el punto de entrada para iniciar el servidor.
🔍 Ubicación
src/app.ts
📌 Descripción general
-
Importación de módulos clave
express,cors,body-parserpara el servidor y middlewares.swagger-ui-expresspara exponer la documentación de API.dotenvpara cargar variables de entorno.cronJobspara iniciar tareas programadas.- Rutas manuales (
ocr.routes,user.routes) y rutas generadas automáticamente por tsoa.
-
Carga de variables de entorno
Se utilizadotenv.config()para leer el archivo.env. -
Configuración de CORS
Restringe el acceso a orígenes específicos (localhost:5173ylocalhost:5174) y define los métodos y credenciales permitidas. -
Middlewares de parsing
bodyParser.jsonybodyParser.urlencodedcon límite de 3 MB para manejar datos entrantes en JSON o formularios.
-
Registro de rutas
/api/ocr→ Rutas de OCR./api→ Rutas de usuario.RegisterRoutes(app)→ Registra las rutas generadas automáticamente con tsoa.
-
Documentación Swagger
- Solo se carga en entornos que no sean producción.
- Usa el archivo generado
docs/swagger.json.
-
Subida de imágenes
RutaPOST /uploadque usa el middlewareuploadProductospara subir imágenes a Cloudinary.
Devuelve la URL y elpublic_iddel archivo subido. -
Ruta raíz (
/)
Devuelve un mensaje de bienvenida e indica cómo probar las rutas en Swagger o Postman según el entorno. -
Inicio del servidor
Escucha en el puerto definido enprocess.env.PORTo en3000por defecto.
🔗 Uso
Este archivo se ejecuta automáticamente cuando se levanta el servidor.
En un proyecto TypeScript, normalmente es invocado desde src/index.ts o directamente con el comando de inicio (npm run dev / npm start).
🧩 Relación con otros módulos
- Rutas manuales:
ocr.routes.ts,user.routes.ts. - Middleware de subida de archivos:
allCloudinaryUploads. - Rutas generadas:
routes/routes.ts(producidas por tsoa). - Tareas programadas:
utils/cronJobs.ts. - Documentación: archivo
docs/swagger.json.
⚠️ Consideraciones
- En producción, el endpoint
/docs(Swagger UI) está deshabilitado por seguridad. - El límite de 3 MB en
bodyParserpuede ajustarse según la necesidad de subida de datos. - El CORS está limitado a entornos de desarrollo por dominio; si se despliega en otro dominio, debe actualizarse la configuración.
- La subida de imágenes requiere que las credenciales de Cloudinary estén correctamente configuradas en el
.env. - El módulo
cronJobscomienza a ejecutar tareas tan pronto como se importa.