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.
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.
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.



