api/): expone endpoints REST, aplica middleware de seguridad (Helmet, CORS, rate limiting) y logging con Pino.db.ts): almacena usuarios, rutas de estudio, modulos, quizzes, logros y trabajos de TTS. Pgvector habilita busqueda semantica.config/rabbitmq.config.ts y services/queueService.ts): gestiona colas para trabajos asincronos.workers/): procesos independientes que consumen mensajes de RabbitMQ y ejecutan tareas largas.services/typesenseService.ts): motor de busqueda por texto para modulos, disponible tanto en Railway (produccion) como local via Docker.services/geminiService.ts, services/grokService.ts): modelos de IA usados para generar rutas, quizzes, TTS e imagenes.services/blobService.ts): almacenamiento de audio generado por TTS.db.ts.queueService.workers/consumers/tasks.consumer.ts consume el mensaje y ejecuta la tarea especifica (ej. generar ruta, quiz, TTS).GET /text-to-speech/:id) para conocer el progreso.| Servicio | Uso | Variables clave |
|---|---|---|
| PostgreSQL | Persistencia | DB_USER, DB_PASSWORD, DB_HOST, DB_DATABASE, DB_PORT |
| RabbitMQ | Colas de tareas | RABBITMQ_USER, RABBITMQ_PASS, RABBITMQ_URL (opcional) |
| Typesense | Busqueda por texto | TYPESENSE_HOST, TYPESENSE_PORT, TYPESENSE_PROTOCOL, TYPESENSE_API_KEY, TYPESENSE_PUBLIC_URL |
| Gemini | Generacion de texto, embedding, TTS | API_KEY |
| Groq | Generacion de imagenes | XAI_API_KEY |
| Vercel Blob | Almacenamiento de audio | BLOB_READ_WRITE_TOKEN |
npm run dev: levanta API y worker en paralelo (usa concurrently con developer y start:worker).npm run start:worker: ejecuta solo el consumidor de RabbitMQ si deseas levantarlo aparte.docker compose up: levanta PostgreSQL, RabbitMQ y Typesense para desarrollo local.Mantener tanto la API como el worker activos es necesario para que las tareas asincronas se completen.