Skip to content

[Infra] Configurar Supabase y esquema de BD para cursos y progreso #8

Description

@MarxMad

Descripción

Configurar el proyecto Supabase (si no existe) y definir el esquema de base de datos para cursos, inscripciones y progreso de usuarios. Este issue es la base para los siguientes (sincronizar progreso y puntos).


Pasos

1. Proyecto Supabase

  • Crear proyecto en Supabase para el entorno correspondiente (dev/staging/prod) o confirmar que ya existe.
  • Anotar SUPABASE_URL y SUPABASE_ANON_KEY (y SERVICE_ROLE_KEY solo en backend si aplica).
  • Configurar variables de entorno en el repo (ej. en .env.example y en Vercel/Netlify) sin exponer la service role en el frontend.

2. Esquema de tablas

Diseñar e implementar (migraciones SQL o desde el dashboard) al menos:

  • cursos (opcional si los cursos siguen en código): id, titulo, descripcion, duracion, nivel, imagen, capitulos/lecciones (JSON o tablas relacionadas), etc.
  • usuarios o perfiles: identificador por wallet_address (o user_id si más adelante hay auth adicional). Campos útiles: wallet_address (PK o unique), puntos, created_at, updated_at.
  • inscripciones: id, wallet_address, curso_id, inscrito_en (timestamp), opcional firma_mensaje o hash para auditoría.
  • progreso_lecciones: id, wallet_address, curso_id, leccion_index (o seccion_id), completado_en, completado (boolean). Clave única por (wallet, curso, leccion) para no duplicar.

3. Row Level Security (RLS)

  • Activar RLS en tablas que contengan datos por usuario (perfiles, inscripciones, progreso_lecciones).
  • Políticas: cada usuario solo puede leer/escribir filas donde wallet_address = auth.uid() o equivalente (si usan custom JWT con wallet) o mediante service_role en backend.
  • Documentar en el repo cómo se identifica al usuario (wallet vs Supabase Auth) para futuras consultas.

4. Documentación

  • Añadir al repo (ej. docs/SUPABASE.md o README) un resumen del esquema, enlaces al proyecto Supabase (sin credenciales) y pasos para correr migraciones localmente si aplica.

Entregables

  • Proyecto Supabase creado y accesible.
  • Esquema SQL aplicado (script en repo o migración versionada).
  • RLS configurado y probado con un usuario de prueba.
  • .env.example actualizado con las variables necesarias.
  • Documentación mínima del esquema y políticas.

Relación con otros issues

  • Bloqueado por: ninguno (es el primero).
  • Bloquea: “Sincronizar progreso de lecciones con Supabase” y “Sistema de puntos por progreso y mostrarlos en perfil”.

Labels sugeridos

infra, supabase, database, epic: progreso y puntos

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions