Creando un sitio de videotutoriales
Antecedentes
Existe un reto llamado 100 días de código que consiste en programar todos los días durante una hora, para aprender un nuevo lenguaje o para mejorar alguno ya conocido. Como tengo mucho que aprender de Django, he decidido crear un nuevo proyecto y trabajar en él durante 100 días.
Requisitos
El proyecto se llama LACar que son las siglas para Loca Academia de Cartografía y es una especie de clon de Udemy o esas plataformas de capacitación por videos. Veamos si podemos establecer las características iniciales que va a tener LACar.
- Tiene dos tipos de usuarios: maestros y alumnos, unos suben los cursos, otros se inscriben a estos cursos.
- Los maestros pueden crear, activar/desactivar o borrar cursos.
- Los maestros pueden agregar, borrar, modificar, cambiar el orden de las lecciones.
- Los alumnos y maestros pueden comentar cada lección.
- Los comentarios de los maestros están identificados.
- Los maestros y alumnos reciben una notificación cuando crean un comentario a su curso o contestan un comentario.
Los cursos están compuestos por n lecciones, generalmente en video, pero también es posible que tengan algún otro tipo de recursos, como un PDF, una presentación una plantilla de Geomedia, archivo Shape de Qgis, etc.
El proyecto incluye la parte del servidor o backend y la parte que se visualiza en el navegador o frontend.
Frontend
La idea es que el frontend de una lección se vea así:
Para el frontend usaremos Bootstrap 4.3.1 ya que LACar se integrará con el Cuadro de Mando Integral. La parte del encabezado y del pie de página no serán tratados en esta serie.
Backend
Ahora bien, las claves de este proyecto son los modelos de los cursos, las lecciones. Y si queremos que se registre el avance de los alumnos, debemos enlazar a los alumnos con los cursos y lecciones.
El curso con el que haremos las pruebas, tiene unas 35 lecciones acomodadas en en secciones, además, tiene dos tipos de alumnos, de Junta Local o de las subdelegaciones o juntas distritales. Aunque no creo necesario bloquear el contenido.
El curso además tiene dos lecciones de apoyo, que no forma parte propiamente del curso y algunos recursos como formatos, archivos de proyecto y de layout que tenemos que integrar al curso.
ReactJS
Creo que merece una mención aparte. El objetivo no solo es mejorar mi dominio de Django, sino también de React, así que vamos a integrar a Django y a React… o tal vez sea un proyecto independiente, en cuyo caso usaría Django Rest Framework. Ya veremos.
El día de mañana empezaré con los modelos.