AI-Studyqueue

Arquitectura de alto nivel

Componentes principales

Flujo de request basico

  1. Cliente envia una peticion HTTP a la API Express.
  2. La API valida y persiste datos en PostgreSQL usando db.ts.
  3. Para tareas pesadas la API publica un mensaje en RabbitMQ mediante queueService.
  4. workers/consumers/tasks.consumer.ts consume el mensaje y ejecuta la tarea especifica (ej. generar ruta, quiz, TTS).
  5. Los workers pueden llamar servicios externos (Gemini, Groq, Vercel Blob, Typesense) y actualizar la base de datos con los resultados.
  6. El cliente consulta endpoints de estado (ej. GET /text-to-speech/:id) para conocer el progreso.

Servicios externos y credenciales

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

Procesos en ejecucion

Mantener tanto la API como el worker activos es necesario para que las tareas asincronas se completen.