Discourse como LMS / Integración de Discourse con un LMS

Por supuesto, gracias por tu interés.

Actualmente tenemos una comunidad donde se reúnen jóvenes universitarios que quieren superarse. Aquí, principalmente realizamos módulos de ciencia y filosofía, reuniones semanales y animamos a las personas a hacer presentaciones. También intenté abrir un foro para esta comunidad para que las personas puedan tener discusiones y chats más cómodos y a largo plazo. Actualmente es privado para la comunidad, pero planeamos abrirlo a todo internet en el futuro.

Actualmente, la mayor parte del flujo de información, como lecturas diarias, detalles de presentaciones, detalles de reuniones, etc., se realiza a través de WhatsApp. La tasa de participantes que utilizan el foro sigue siendo baja. Queremos establecer una operación más funcional y asegurar que las personas accedan más al foro transfiriendo lo que hacemos en WhatsApp al foro.

  1. ¿Hay alguna forma de enviar notificaciones a las personas cuando se usa como una Progressive Web App en teléfonos móviles?
  2. ¿Podemos crear un sistema donde podamos verificar si los participantes han realizado sus lecturas diarias y recompensarlos o recordarles? (Le pregunté a ChatGPT sobre esto, dijo que podría hacerlo creando un nuevo escenario con el plugin de automatización de Discourse, pero no hay opción para crear un nuevo escenario)
  3. ¿Podemos crear un sistema de certificación donde daremos diplomas a los participantes en función de su asistencia a las reuniones semanales en los módulos?

Estas eran las características que he estado buscando durante unos días. Si tienes características que crees que serían funcionales en un sistema similar, estoy abierto a ellas.

2 Me gusta

Utilicé un sistema de insignias para las tareas. Los estudiantes creaban un tema con una etiqueta para la tarea y si me :heart:aba, obtenían una insignia (con badge sql). Escribí un script que leía un archivo csv del lms de la escuela y lo actualizaba para poder volver a cargarlo en el lms de la escuela.

6 Me gusta

Sí, absolutamente a la PWA.

¿Puedes explicar esto? ¿Has intentado añadir una nueva automatización a través del panel de administración?

Y como dice Jay, las insignias son una buena manera de hacer esto.

3 Me gusta

Lo acabo de mirar de nuevo, tengo que habilitar las notificaciones en la configuración de Discourse. Gracias.

ChatGPT me engañó un poco, ahora lo entiendo, pero el método que me dijo no parece funcionar.

Gracias por la respuesta.

Como dije, ¿puedo crear un sistema donde pueda recompensar a los usuarios que dejan emojis en sus publicaciones de lectura diarias solo usando BadgeSQL? ¿Debo hacerlo dándoles insignias, el sistema de clasificación requiere un mayor esfuerzo? Y si puedes proporcionar una guía o un punto de partida para BadgeSQL, estaría muy feliz.

1 me gusta

Sí.

El plugin de tabla de clasificación no existía cuando hice esto y no he hecho mucho (¿nada?) con él.

https://meta.discourse.org/tag/sql-triggered-badge

Si el tema de las insignias funciona para ti, entonces un plugin (¿o quizás algo que llame a la API?) que automatice la creación de la insignia con el SQL asociado sería una buena idea.

Si es diario, entonces podría haber alguna manera de hacer que el SQL de la insignia otorgue una insignia por ayer; o simplemente tener una sola insignia que se pueda otorgar varias veces y otorgar una insignia cada día que publiquen el emoji.

2 Me gusta

Como muchos de ustedes en este hilo, he estado buscando una forma ligera de usar Discourse de forma nativa como LMS. Considero que las plataformas LMS dedicadas son demasiado pesadas, pero la “desvanecimiento de notificaciones” predeterminada de Discourse (donde los temas más antiguos dejan de aparecer como “no leídos” para los usuarios nuevos) dificulta el seguimiento del progreso del curso.

Para satisfacer mi propia necesidad, creé una solución sencilla combinando configuraciones de categorías, un pequeño plugin de backend y un componente de tema.

Así es como lo configuré, ¡y aquí está el código de código abierto que pueden usar para replicarlo!

El concepto básico: Discourse como LMS

Para que esto funcione, utilizo las funciones estándar de Discourse combinadas con el plugin oficial Discourse Doc Categories:

  • Curso = Categoría: Cada curso tiene su propia categoría.
  • Lección = Tema: Cada lección es un tema dentro de esa categoría.
  • Permisos: Los miembros pueden responder a las lecciones (para hacer preguntas), pero solo el personal puede crear nuevos temas.
  • Ordenamiento: El orden de las lecciones se fija por la fecha de creación. (Consejo: Esto requiere un poco de visión de futuro al publicar las lecciones, o pueden usar la consola de Rails para retroceder rápidamente los tiempos de creación de los temas y forzar el ordenamiento correcto).
  • Plan de estudios: Utilizo el plugin Discourse Doc Categories para designar un “Tema Índice”. Este tema índice actúa como el plan de estudios/rastreador del curso y muestra un hermoso esquema en la barra lateral cuando los usuarios ingresan al curso.

La pieza que falta: Seguimiento real del progreso

El problema con la configuración anterior es que, cuando un nuevo estudiante se une, los temas de lecciones más antiguos no aparecen como “no leídos”, por lo que no tienen forma de rastrear visualmente su progreso.

Para solucionar esto, creé un plugin de backend que consulta directamente la tabla de base de datos TopicUser para obtener el estado de lectura histórico real, y un componente de tema de frontend que transforma la barra lateral estándar de Discourse en un rastreador de progreso LMS en tiempo real.

1. Insignias de progreso en la barra lateral principal

El componente de tema reemplaza los puntos azules de notificación estándar con indicadores de progreso [leído / total] para sus categorías de cursos.

2. Marcas de verificación de finalización de lección

Cuando un usuario hace clic en un curso, el plugin Docs muestra el plan de estudios. Mi componente de tema inyecta marcas de verificación de éxito (fa-check) junto a las lecciones específicas que el usuario ha terminado de leer.

3. Finalización del curso

Una vez que un usuario lee cada tema de la categoría, la insignia de progreso de la barra lateral se transforma automáticamente en una marca de verificación de finalización satisfactoria.

Cómo instalarlo

Dado que esto requiere omitir la caché de notificaciones estándar de Discourse, deben instalar tanto el plugin de backend como el componente de tema de frontend.

Paso 1: Instalar el requisito previo
Asegúrese de tener instalado y activo el plugin oficial Discourse Doc Categories. Mi plugin apunta específicamente solo a las categorías que tienen un Tema Índice configurado.

Paso 2: Instalar el plugin de API de backend
Agregue esto a su app.yml debajo de docker_manager y reconstruya su contenedor. Esto proporciona un punto final de API ultrarrápido para los estados de lectura.
:hammer_and_wrench: Enlace al repositorio: https://github.com/zsviczian/discourse-course-progress**

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/zsviczian/discourse-course-progress.git

Paso 3: Instalar el componente de tema de interfaz de usuario
Instálelo directamente desde su navegador web en Administración > Personalizar > Temas > Instalar > Desde un repositorio Git.
:hammer_and_wrench: Enlace al repositorio: https://github.com/zsviczian/discourse-course-progress-theme

Espero que esto ayude a otros que están intentando crear cursos impulsados por la comunidad sin la complejidad de una plataforma LMS separada. ¡Háganmelo saber si terminan usándolo!

3 Me gusta

¿Hubo alguna razón por la que no incluiste el código del componente de tema del frontend en el plugin, en lugar de tener dos por separado?

Sin embargo, eché un vistazo rápido a tu código y resultó mucho más sencillo lograr esto de lo que pensaba. ¡Me encanta!

1 me gusta

Pensé que a la gente le gustaría tener un aspecto y una sensación diferentes para el seguimiento de sus cursos y no quería imponer mi gusto a los demás.

El componente de tema incluye colores, insignias y especificaciones que se adaptan a mis necesidades, pero no necesariamente a las de otros.

El plugin implementa una pequeña característica faltante en la documentación de Discourse. Puedes construir tu propio componente de tema alrededor de él y usar el mío solo como ejemplo o inspiración.

Desde que uso esta solución (¡solo hace un día!) ya estoy pensando en que podría agregar algunos gráficos del Explorador de datos para ver el progreso general de los estudiantes con los cursos y luego añadir personalizaciones encima. Podría agregar eso al plugin una vez que lo haya utilizado en la vida real durante un tiempo.

1 me gusta

Puedes cambiar la marca de tiempo del tema en la interfaz si eres administrador. Se encuentra en el menú Acciones del tema.
Lamentablemente, solo funciona para un tema; no se puede hacer para una publicación individual.

1 me gusta