Contexto
El flujo anterior creaba un repositorio privado por estudiante. Ese diseño preservaba la privacidad, pero no escalaba: cada inscripción agregaba otro repositorio a la cuenta de eeminionn.
GitHub autoriza por repositorio, no por carpeta. Por eso no es seguro guardar respuestas en el repositorio público tomatin-code-lab ni invitar a todos los estudiantes como colaboradores de un repositorio compartido: podrían leer soluciones ajenas.
Decisión técnica
Usar un único repositorio privado eeminionn/tomatin-code-lab-resoluciones, administrado por el backend. Cada entrega se guarda en una ruta estable:
resoluciones/<github-login>-<id-corto>/misiones/<slug>/solucion.<ext>
Los estudiantes no son colaboradores del repositorio central. La aplicación muestra únicamente el estado y la ruta de su propia sincronización. Los commits usan el nombre y correo noreply verificado del estudiante para conservar la atribución cuando GitHub puede asociarla.
Tareas
Criterios de aceptación
Privacidad y seguridad
Migración
La entrega existente de louu27 fue copiada a resoluciones/louu27-ff7b18ec/... conservando el mismo blob SHA. El repositorio individual anterior no fue eliminado.
Resultado
Implementado y fusionado en #38. Supabase, GitHub Pages y CI de main finalizaron correctamente.
Contexto
El flujo anterior creaba un repositorio privado por estudiante. Ese diseño preservaba la privacidad, pero no escalaba: cada inscripción agregaba otro repositorio a la cuenta de
eeminionn.GitHub autoriza por repositorio, no por carpeta. Por eso no es seguro guardar respuestas en el repositorio público
tomatin-code-labni invitar a todos los estudiantes como colaboradores de un repositorio compartido: podrían leer soluciones ajenas.Decisión técnica
Usar un único repositorio privado
eeminionn/tomatin-code-lab-resoluciones, administrado por el backend. Cada entrega se guarda en una ruta estable:Los estudiantes no son colaboradores del repositorio central. La aplicación muestra únicamente el estado y la ruta de su propia sincronización. Los commits usan el nombre y correo
noreplyverificado del estudiante para conservar la atribución cuando GitHub puede asociarla.Tareas
Criterios de aceptación
Privacidad y seguridad
Migración
La entrega existente de
louu27fue copiada aresoluciones/louu27-ff7b18ec/...conservando el mismo blob SHA. El repositorio individual anterior no fue eliminado.Resultado
Implementado y fusionado en #38. Supabase, GitHub Pages y CI de
mainfinalizaron correctamente.