¿Qué están construyendo?
// El problema → ¿Qué es un LMS? → Los actores → El reto del progreso
Un docente que comparte materiales por WhatsApp, correo o PDF no tiene forma de saber si sus estudiantes realmente los leyeron, cuánto llevan avanzado, ni qué lecciones les costaron más. El estudiante tampoco puede llevar un registro ordenado de lo que ha completado.
Su plataforma resuelve exactamente eso: un espacio donde el docente crea y el estudiante aprende con seguimiento real.
Learning Management System — Sistema de Gestión del Aprendizaje.
- El docente crea cursos con múltiples lecciones
- El estudiante se inscribe en los cursos que le interesan
- El sistema registra el progreso por lección y por curso
- El docente puede ver quiénes están inscritos en sus cursos
Plataformas reales: Moodle, Canvas, Coursera, Google Classroom. La suya es la versión en consola.
- Docente: crea cursos, les agrega lecciones, y consulta quiénes están inscritos y cómo van.
- Estudiante: explora los cursos disponibles, se inscribe, va completando lecciones y consulta su progreso.
El docente no puede inscribirse en cursos. El estudiante no puede crear cursos. Sus vistas son completamente distintas.
Este proyecto tiene un desafío algorítmico que los otros no tienen: calcular qué porcentaje de un curso ha completado un estudiante.
Pregunta: ¿cómo calcularían el porcentaje? ¿Qué datos necesitan para eso?
Bonus: ¿qué debería pasar cuando un estudiante completa todas las lecciones de un curso?
¿Cómo se organizan?
// Roles del equipo → Tablero Kanban → El reto de las 4 entidades
curso_service.py y la lógica de agregar lecciones a un curso.El Dev de Matrícula + Progreso necesita entender bien cómo se relacionan los 4 JSON antes de escribir una sola línea.
¡Muevan tarjetas aquí
cuando las empiecen!
el trabajo
terminado.
La tarjeta 🏆 en rosa es el "boss challenge" del proyecto: la más difícil, la que más lógica requiere, y la que más impresiona en la exposición.
Todo el equipo decide juntos la estructura exacta de los 4 JSON. Nadie empieza a programar hasta que todos estén de acuerdo.
El campo curso_id en Lecciones.json debe ser exactamente el mismo id de Cursos.json. Si uno los cambia sin avisar, todo se rompe.
Escriban a mano los 4 JSON con 2–3 registros de ejemplo antes de escribir una función. Si los datos se ven bien a mano, el código va a ser más fácil.
¿Por dónde empieza el código?
// Entidades y relaciones → JSON × 4 → Arquitectura → CRUD → El cálculo del progreso
o estudiante
+ curso + lección
Progreso.json es el archivo más importante: registra que tal estudiante completó tal lección de tal curso. Contar esos registros es como se calcula el porcentaje.
Noten que hay 3 archivos de servicio, no 1 como en los otros proyectos.
total = contar lecciones con ese curso_id
hechas = contar registros en Progreso donde estudiante_id y curso_id coincidan
% = (hechas / total) × 100
| Operación | Entidad | Ejemplo concreto en su app | ¿Quién lo hace? |
|---|---|---|---|
| CREATE | Curso / Lección | Docente crea un nuevo curso y le agrega lecciones | Docente |
| CREATE | Progreso | Estudiante se inscribe en un curso (primer registro) o marca lección como completada | Estudiante |
| READ | Cursos / Lecciones | Estudiante ve cursos disponibles / Docente ve sus cursos y quiénes están inscritos | Ambos |
| READ | Progreso | Estudiante consulta cuánto lleva completado de cada curso (el cálculo %) | Estudiante |
| UPDATE | Curso / Lección | Docente edita el título o descripción de un curso | Docente |
| DELETE | Curso | Docente elimina un curso (y sus lecciones) | Docente |
id coincidan entre archivos.
"id": "C001", en Lecciones.json el campo curso_id de esa lección debe ser exactamente "C001".No hay preguntas malas. Si algo no quedó claro, este es el momento.
leccion_id y no solo el curso_id?
calcular_progreso()? ¿Qué contarían y cómo?
matricula_service.py?