Likes & Discussions
Published Jul 10, 2026
Every lesson in Praxis924 is a small, self-contained unit of a course — a single ContentItem under a Framework, with four AI-reviewed sections and a set of exercises. Once a lesson is published, it stops being a one-way broadcast. Learners can signal that a lesson landed by liking it, and they can ask or answer questions in a discussion thread that lives under that exact lesson — not a global forum, but a conversation anchored to the material in front of you. This post walks through both, plus the moderation and reporting tools that keep those threads useful. It's for learners who want to engage, and for admins who keep the space clean.
What you'll need
- A verified account and an active session. Register, confirm your email, and sign in — engagement actions are gated behind a logged-in session (they write to your activity feed and, in some cases, trigger achievements).
- A published lesson. Only lessons that admins have moved from
drafttopublishedappear in/learn. Drafts and lessons still ingenerating/failedare not visible to learners and carry no threads. - For moderation steps: an admin account. Admin-only routes are guarded by
require_admin, so the moderation controls simply won't render for a learner.
How to like a lesson
- Open
/learnand pick any published lesson. You land in the focused lesson viewer. - Read (or skim) the four sections —
main_explanation,practical_explanation,key_principles,summary. - Click the Like control on the lesson. The count updates immediately, and the action is recorded against your account.
A like is a lightweight, per-learner signal — one like per person, toggle it off the same way you turned it on. Unlike a bookmark (which is a private "save for later"), a like is public: it feeds the lesson's popularity and shows up in your activity. Think of it as the fastest way to say "this one clicked" without writing a word.
Tip: Likes and bookmarks solve different jobs. Like a lesson to endorse it publicly; bookmark/save it to build your own private reading list. Use both freely — they don't overlap.
How to start or join a discussion
Discussions are lesson-scoped: each thread belongs to one lesson, so questions stay in context and answers reference the material everyone is looking at.
- In the lesson viewer, scroll to the Discussion area for that lesson.
- To ask something, write your comment in the composer and post it. Your comment appears in the thread attributed to you.
- To help someone else, reply to an existing comment. Threads are structured as comment-and-reply, so a question and its answers stay grouped instead of scattering.
- Come back anytime — the thread persists on the lesson, so a good answer keeps paying off for the next learner who hits the same wall.
Because the thread is tied to the lesson's ID, there's no cross-posting and no context-switching: someone reading key_principles and confused by a specific claim can ask right there, and the reader who already understood it can answer in place.
Note: A discussion is a public thread meant for others. If you want a private, personal annotation instead, use notes — a note can be anchored to a specific section or to the whole lesson and is visible only to you. And if you'd rather ask an AI than a peer, open Lucy from the lesson; she folds the lesson's own content into her context and answers with it in view.
Moderation and reporting
Open threads need upkeep. Praxis924 gives two complementary levers.
Admins moderate discussions. From the admin console, an admin can review and remove comments on any lesson's thread — spam, off-topic noise, or anything that violates your community norms. This keeps the lesson-scoped threads trustworthy, which is the whole point of anchoring them to the material.
Anyone can file a report. Two report types exist and they aim at different problems:
| Report type | Use it when | Who acts |
|---|---|---|
| Issue report | A comment breaks the rules, or a lesson has a factual/technical problem | Admin reviews and moderates |
| Edit report | The lesson content itself needs a correction or improvement | Admin reviews against the source |
Reporting is the pressure-release valve: instead of an argument playing out in the thread, flag it and let an admin resolve it.
When it goes wrong
| Symptom | Likely cause | Fix |
|---|---|---|
| No Like or Discussion controls on a lesson | You're viewing a draft/unpublished lesson, or you're signed out | Confirm the lesson is published and that you're logged in |
| "Session expired" mid-post | Short-lived JWT access token lapsed | The refresh token renews it automatically; if not, sign in again and re-post |
| Your comment doesn't appear | Post didn't complete, or it was moderated | Reload the thread; if an admin removed it, check it met community norms |
| Can't see moderation controls | You're not an admin | require_admin hides them from learners by design |
What you get
Turning lessons into conversations changes how a curriculum grows. Likes surface the lessons that actually resonate. Lesson-scoped discussions turn every confusing paragraph into a durable Q&A that helps the next learner, while notes and Lucy cover the private and the AI-assisted paths. And the moderation-plus-reporting loop means the threads stay signal, not noise. From here, pair discussions with follows and public profiles to see what the people you learn alongside are asking — and if a thread keeps surfacing the same gap in a lesson, file an edit report so an admin can fix the source, not just the symptom.