דיסקורז כ- LMS / אינטגרציה של דיסקורז עם LMS

Of course, thank you for your interest.

We currently have a community where university-aged young people who want to improve themselves meet. Here, we mainly hold modules on science and philosophy, weekly meetings, and encourage people to make presentations. I also tried to open a forum for this community so that people can have more comfortable and long-term discussions and chats. It is currently private to the community, but we are planning to open it to the entire internet in the future.

Currently, most of the information flow such as daily readings, presentation details, meeting details, etc. is done via WhatsApp. The rate of participants using the forum is still low. We want to both establish a more functional operation and ensure that people enter the forum more by transferring the things we do on WhatsApp to the forum.

  1. Is there a way to send notifications to people when used as a Progressive Web App on mobile phones?
  2. Can we create a system where we can check whether participants have done their daily readings and reward or remind them? (I asked chatgpt about this, it said I could do it by creating a new scenario with the discourse automation plugin, but there is no option to create a new scenario)
  3. Can we create a certification system where we will give diplomas to participants based on their weekly meeting attendance in the modules?

These were the features I have been looking for for a few days. If you have features that you think would be functional in a similar system, I am open to them.

2 לייקים

I used a system of badges for assignments. Students would create a topic with a tag for the assignment and if i :heart: ed it, they get a badge (with badge sql). I wrote a script that would read a csv file from the schools lms and update it so it could be uploaded back to the school lms.

6 לייקים

Yes, absolutely to the PWA.

Can you elaborate on this? Have you tried adding a new automation via the admin dashboard?

And as Jay says, badges are a good way to do this.

3 לייקים

I just looked again, I have to enable notifications in Discourse settings. Thank you.

ChatGPT misled me a bit, I understand now, but the method it told me doesn’t seem to work.

Thanks for the answer.

As I said, can I make a system where I can reward users who leave emojis on their daily reading posts just by using BadgeSQL? Should I do this by giving them badges, does the leaderboard system require a bigger effort? And if you can provide a guide or a starting point for BadgeSQL, I would be very happy.

לייק 1

Yes.

The leader-board plugin didn’t exist when I did this and I haven’t done much (anything?) with it.

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

If the badge thing works for you, then a plugin (or perhaps something that calls the api?) that would automate creating the badge with the associated SQL would be a good idea.

If it’s a daily one, then there could be some way to make the badge SQL grant a badge for yesterday; or just have a single badge that can be awarded multiple times and grant a badge every day that they post the emoji.

2 לייקים

Like many of you in this thread, I’ve been looking for a lightweight way to use Discourse natively as an LMS. I find dedicated LMS platforms too bloated, but Discourse’s default “notification decay” (where older topics stop showing as “unread” for new users) makes tracking course progress difficult.

To scratch my own itch, I built a simple solution using a combination of category settings, a tiny backend plugin, and a theme component.

Here is how I set it up, and the open-source code you can use to replicate it!

The Basic Concept: Discourse as an LMS

To make this work, I use standard Discourse features combined with the official Discourse Doc Categories plugin:

  • Course = Category: Each course gets its own category.
  • Lesson = Topic: Each lesson is a topic within that category.
  • Permissions: Members can reply to lessons (to ask questions), but only staff can create new topics.
  • Ordering: Lesson order is fixed by creation date. (Tip: This requires a bit of forward-thinking when posting lessons, or you can use the Rails console to quickly backdate topic creation times to force the correct sorting).
  • Syllabus: I use the Discourse Doc Categories plugin to designate an “Index Topic.” This index topic acts as the course syllabus/tracker and renders a beautiful outline on the sidebar when users enter the course.

The Missing Piece: True Progress Tracking

The problem with the setup above is that when a new student joins, the older lesson topics don’t show up as “unread,” so they have no way to visually track their progress.

To solve this, I built a backend plugin that directly queries the TopicUser database table for true historical read status, and a frontend Theme Component that transforms the standard Discourse sidebar into a real-time LMS progress tracker.

1. Main Sidebar Progress Badges

The theme component replaces standard blue notification dots with [ read / total ] progress indicators for your course categories.

2. Lesson Completion Checkmarks

When a user clicks into a course, the Docs plugin renders the syllabus. My theme component injects success checkmarks (fa-check) next to the specific lessons the user has finished reading.

3. Course Completion

Once a user reads every topic in the category, the sidebar progress badge automatically transforms into a satisfying completion tick!

How to Install it

Because this requires bypassing the standard Discourse notification cache, you must install both the backend plugin and the frontend theme component.

Step 1: Install the Prerequisite
Ensure you have the official Discourse Doc Categories plugin installed and active. My plugin specifically only targets categories that have an Index Topic configured.

Step 2: Install the Backend API Plugin
Add this to your app.yml below docker_manager and rebuild your container. This provides the lightning-fast API endpoint for read statuses.
:hammer_and_wrench: Repository Link: 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

Step 3: Install the UI Theme Component
Install this directly via your web browser in Admin > Customize > Themes > Install > From a Git Repository.
:hammer_and_wrench: Repository Link: https://github.com/zsviczian/discourse-course-progress-theme

I hope this helps others who are trying to build community-driven courses without the bloat of a separate LMS platform! Let me know if you end up using it.

3 לייקים

Was there a reason why you didn’t include the frontend Theme Component code in the plugin instead of having 2 separate ones?

But, I had a quick peek at your code, and it was much simpler to achieve this than I thought. Love it!

לייק 1

I thought people might want a different look and feel for their course tracking and didn’t want to force my taste on others.

The theme component includes colors, badges, and specifics that fit my needs, but not necessarily those of others.

The plugin implements a small missing feature in Discourse docs. You can build your own theme component around it and only use mine as an example / inspiration.

Since using this solution - 1 day only :slight_smile: - I’m already thinking that I could add a few data explorer graphs to see overall student progress with courses, then add customizations on top. I might add that to the plugin once I’ve used it in real life for a while.

לייק 1

You can change Topic Timestamp in the UI if you are Admin
It is in the Topic Actions menu.
Sadly only works for a Topic, cannot be done for an individual Post

לייק 1