Este documento resume cómo la app Android debe consumir el backend de Ritmo. Está pensado para ser utilizado por un modelo de IA en Android Studio que genere código Kotlin siguiendo nuestro flujo objetivo.
http://10.0.2.2:3000 para el emulador (o la IP local en dispositivos reales).{ "error": "mensaje" }.Content-Type: application/json en peticiones con body.userId se gestiona desde la app tras crear o recuperar un usuario.Onboarding / registro
username (y opcionalmente avatar/gusto inicial para personalizar UI).POST /users y guardar id devuelto como userId persistente (SharedPreferences / DataStore).Solicitud de ruta de estudio
POST /study-path con topic y userId.requestId de la respuesta.GET /study-path-requests/:requestId hasta que status sea completed o failed.modules, almacenar studyPathId y navegar a la vista de ruta.Listado de rutas
GET /study-paths?userId={userId} (orden descendente).GET /study-path/:id para cargar módulos con image_url.Detalle de módulo
title, description, subtopics, image_url.POST /text-to-speech con text, userId, moduleId y luego mostrar estado usando GET /text-to-speech/:jobId o GET /text-to-speech?userId=....GET /modules/:moduleId/quiz. Si no hay quiz, mostrar mensaje y un botón para generar (POST /modules/:moduleId/quiz).POST /progress/modules/complete y refrescar timeline/progreso.Timeline diario
GET /progress/users/{userId}/timeline para mostrar:
requests), rutas (studyPaths), módulos pendientes (pendingModules), quizzes, trabajos TTS, logros, progreso reciente.Búsqueda
GET /search?q= (pgvector, resultados semánticos).GET /search/typesense?q= (keyword).study_path_id y module_id).Gestión de trabajos TTS
GET /text-to-speech?userId=... (ordenados por creación).audioUrl cuando status == "completed".Progreso y logros
GET /progress/users/{userId}/progress y GET /progress/users/{userId}/dashboard.generated_image_url cuando exista).Estados y errores
pending, processing, failed, completed en las respuestas.response.error cuando el backend devuelva códigos 4xx/5xx.userId almacenado; redirige al onboarding si no.study-path y TTS cuando se quiera actualizar automáticamente).docs/endpoints.md.Loading, Success, Error) para cada flujo asincrono.docs/mvp-flow.http y un emulador Pixel/Android 14.Esta guía debe mantenerse sincronizada con los cambios del backend para que el asistente de Android genere código alineado con el MVP real.