-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Descripción
Conectar el frontend (página de curso / RegistroCurso) con Supabase para guardar y recuperar el progreso real de lecciones por usuario (por wallet). Al completar una lección o sección, debe persistirse en BD; al cargar el curso, debe mostrarse el estado guardado.
Pasos
1. Cliente Supabase en el frontend
- Instalar
@supabase/supabase-jsen el proyecto del frontend (ej.criptounam). - Crear un cliente Supabase (singleton) usando
SUPABASE_URLySUPABASE_ANON_KEY. - Asegurar que solo se usen políticas permitidas con la anon key (RLL ya configurado en el issue de esquema).
2. Identificación del usuario
- Decidir cómo mapear “usuario” a Supabase en frontend: por wallet address (recomendado si no hay Supabase Auth). Crear o actualizar fila en
perfilesal conectar wallet si se usa esa tabla. - Si Supabase Auth se usa en el futuro: documentar migración de “progreso por wallet” a “progreso por user_id”.
3. Inscripción en curso
- Al completar la firma de inscripción (flujo actual en
RegistroCurso), además de Telegram:- Insertar o actualizar fila en
inscripciones(wallet, curso_id, timestamp).
- Insertar o actualizar fila en
- Al cargar la página del curso, comprobar en Supabase si el usuario está inscrito; si hay datos en BD, priorizar sobre estado local.
4. Progreso de lecciones
- Al marcar una lección como completada (
handleCompletarLecciono equivalente):- Insertar/upsert en
progreso_lecciones(wallet, curso_id, leccion_index o seccion_id, completado_en).
- Insertar/upsert en
- Al cargar el curso:
- Obtener de Supabase la lista de lecciones/secciones completadas para ese wallet y curso.
- Inicializar estado local (ej.
leccionesCompletadas) con esos datos para que la UI y la barra de progreso sean correctas.
- Manejar offline/error: si Supabase falla, mostrar mensaje y opcionalmente guardar en
localStoragepara retry después (opcional).
5. Consistencia con cursos con capítulos
- Si el curso usa
capitulosysecciones, el índice plano (ej.leccion_index) debe coincidir congetLeccionesFlat(curso)para que el progreso se mapee bien entre frontend y BD.
Criterios de aceptación
- Al completar una lección, el cambio se refleja en Supabase (visible en dashboard o con una query de prueba).
- Al recargar la página o volver otro día, el progreso mostrado es el guardado en Supabase.
- La inscripción al curso queda registrada en Supabase además del flujo actual (firma + Telegram).
Relación con otros issues
- Bloqueado por: “[Infra] Configurar Supabase y esquema de BD para cursos y progreso”.
- Bloquea: “Sistema de puntos por progreso y mostrarlos en perfil” (el cálculo de puntos usará estos datos).
Labels sugeridos
frontend, supabase, progreso, epic: progreso y puntos
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request