Discourse como LMS / Integração do Discourse com um LMS

Como muitos de vocês neste tópico, tenho buscado uma maneira leve de usar o Discourse nativamente como um LMS. Acho as plataformas dedicadas de LMS muito pesadas, mas o “decaimento de notificações” padrão do Discourse (onde tópicos mais antigos param de aparecer como “não lidos” para novos usuários) torna difícil acompanhar o progresso dos cursos.

Para resolver meu próprio problema, criei uma solução simples combinando configurações de categoria, um pequeno plugin de backend e um componente de tema.

Aqui está como configurei, e o código de código aberto que você pode usar para replicar!

O Conceito Básico: Discourse como um LMS

Para fazer isso funcionar, utilizo recursos padrão do Discourse combinados com o plugin oficial Discourse Doc Categories:

  • Curso = Categoria: Cada curso tem sua própria categoria.
  • Aula = Tópico: Cada aula é um tópico dentro dessa categoria.
  • Permissões: Os membros podem responder às aulas (para fazer perguntas), mas apenas a equipe pode criar novos tópicos.
  • Ordenação: A ordem das aulas é fixada pela data de criação. (Dica: Isso requer um pouco de planejamento ao postar as aulas, ou você pode usar o console do Rails para retroceder rapidamente as datas de criação dos tópicos e forçar a ordenação correta).
  • Plano de Curso: Uso o plugin Discourse Doc Categories para designar um “Tópico Índice”. Esse tópico índice atua como o plano de curso/rastreador e renderiza um outline bonito na barra lateral quando os usuários entram no curso.

A Peça Faltante: Rastreamento Real de Progresso

O problema com a configuração acima é que, quando um novo aluno se junta, os tópicos de aulas mais antigos não aparecem como “não lidos”, então não há como acompanhar visualmente o progresso.

Para resolver isso, criei um plugin de backend que consulta diretamente a tabela do banco de dados TopicUser para obter o status real de leitura histórica, e um componente de tema de frontend que transforma a barra lateral padrão do Discourse em um rastreador de progresso de LMS em tempo real.

1. Insígnias de Progresso na Barra Lateral Principal

O componente de tema substitui os pontos azuis de notificação padrão por indicadores de progresso [lido / total] para suas categorias de curso.

2. Marcas de Conclusão de Aula

Quando um usuário clica em um curso, o plugin Docs renderiza o plano de curso. Meu componente de tema injeta marcas de verificação de sucesso (fa-check) ao lado das aulas específicas que o usuário já terminou de ler.

3. Conclusão do Curso

Assim que um usuário lê todos os tópicos da categoria, a insígnia de progresso da barra lateral se transforma automaticamente em um satisfatório sinal de conclusão!

Como Instalar

Como isso requer contornar o cache padrão de notificações do Discourse, você deve instalar tanto o plugin de backend quanto o componente de tema de frontend.

Passo 1: Instale o Pré-requisito
Certifique-se de ter o plugin oficial Discourse Doc Categories instalado e ativo. Meu plugin mira especificamente apenas em categorias que têm um Tópico Índice configurado.

Passo 2: Instale o Plugin de API de Backend
Adicione isso ao seu app.yml abaixo de docker_manager e reconstrua seu container. Isso fornece um endpoint de API extremamente rápido para status de leitura.
:hammer_and_wrench: Link do Repositório: 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

Passo 3: Instale o Componente de Tema de UI
Instale diretamente pelo seu navegador em Admin > Personalizar > Temas > Instalar > A partir de um Repositório Git.
:hammer_and_wrench: Link do Repositório: https://github.com/zsviczian/discourse-course-progress-theme

Espero que isso ajude outros que estão tentando criar cursos impulsionados pela comunidade sem a complexidade de uma plataforma LMS separada! Me avise se você acabar usando.

3 curtidas