Activity Feed
Published Jul 9, 2026
The Activity Feed turns invisible study effort into something you can see. Every time you open a lesson, read a section, or come back after a break, Praxis924 quietly records it — and surfaces it as a live, at-a-glance stream of what's actually happening. This how-to is for two audiences: learners who want proof of their own momentum, and admins who want to know whether a cohort is truly engaged or just enrolled. By the end you'll know how activity is tracked, where to read the feed, and how to pull a per-learner report.
How activity gets tracked
You don't do anything special to generate activity — it's captured automatically as you use the app. Two mechanisms do the work:
UserSession— a session opens when you sign in and start using Praxis924, and a lightweight heartbeat keeps it alive while you're active. This is what powers "recently active" signals and time-on-platform.LessonTimeSpent— as you read a lesson in the focused viewer, time is attributed to that specific lesson, so the feed can tell the difference between "opened and bounced" and "read for twelve minutes."
Together these feed the recent activity stream — a chronological list of meaningful events (sessions started, lessons opened, time spent, recent learning) rendered newest-first.
Note: Heartbeats are how the system knows a session is live rather than just open. If you leave a tab idle, the heartbeat lapses and the session is treated as ended — so the feed reflects real attention, not abandoned tabs.
Step 1 — Do something worth tracking
Sign in and use the app the way you normally would. Open a published lesson in /learn, read through the four sections in the lesson viewer, run a practice exercise in /practice/[lessonId], or ask Lucy a question. Each of these produces events. There's no "start tracking" button — being logged in and active is enough.
Tip: Read in the focused lesson viewer rather than skimming and closing. Because LessonTimeSpent attributes time per lesson, sustained reading is what makes your feed (and your progress stats) look like real learning.
Step 2 — Read your recent activity
Your activity shows up as a live feed of what you've been doing — the lessons you've touched, how recently you were active, and the time you've been putting in. Use it as a quick self-check: it pairs naturally with your Progress view (completion %, accuracy, streak) to answer "am I actually keeping momentum?" The feed is chronological, so the top of the list is always the most recent thing you did.
Because the feed is built from sessions and time-spent rather than only from completions, it captures effort that doesn't show up elsewhere — the lesson you re-read before a challenge, or the ten minutes you spent with Lucy unpacking a concept.
Step 3 — Admins: pull a per-learner activity report
Admins get a wider lens. From the /admin console you can open a per-learner activity report that aggregates that learner's sessions and lesson time into a readable summary. This is the tool for the questions cohorts actually raise:
- Is this learner active, or have they gone quiet?
- Where are they spending their time — which lessons, how long?
- Does their time-on-platform line up with their completion and accuracy?
The report reads the same UserSession and LessonTimeSpent data the learner-facing feed uses, so admin and learner are looking at one consistent source of truth — no separate accounting to reconcile.
Tip: Cross-reference the activity report with the learner's progress summary. High time-spent but low accuracy points to a lesson that needs a rewrite or a fill-gaps pass; low time-spent but high accuracy usually means the material is too easy.
When it goes wrong
Activity tracking is passive, so most "missing data" issues trace back to session state rather than a bug.
| Symptom | Likely cause | What to check |
|---|---|---|
| Feed looks empty for a new learner | No sessions recorded yet | Confirm they've actually signed in and opened a lesson, not just registered |
| Time-spent seems too low | Idle tab — heartbeat lapsed | Reading counts only while the session is live; background tabs stop accruing |
| Learner "missing" from admin report | Only registered, never active | Registration ≠ activity; look for at least one UserSession |
| Nothing updates after actions | Stale client session / expired token | Re-authenticate; the short-lived access token may have expired and needs a refresh |
Note: The feed is a reflection of recorded events, not a live socket you have to babysit. If an event is genuinely missing, the question is almost always "was there a live session when it happened?" — not "is the feed broken?"
What you get
Once you're using it, the Activity Feed gives you three concrete things. Learners get honest proof of momentum — a feed that rewards showing up and putting in time, not just finishing lessons. Admins get a per-learner engagement report that turns "are they learning?" into evidence they can act on. And the whole platform gets a single, consistent record of attention — sessions and time-spent — that plugs straight into progress stats, spaced review, and achievements.
Next: pair the feed with your Progress summary and streak to plan what to review, and if you're an admin, make the per-learner report part of your regular cohort check-in so quiet learners get a nudge before they drift.