A shared operations deck for two people revising two entirely different syllabi — and holding each other to it.
◆ Thabo · BCom◆ Naledi · Matric
React · Vite · Express · Postgres
01
The problem
Two syllabi. One shared push.
2
Curricula, zero overlap
57
Topics to keep honest
0
Tools built for a pair
Habit apps track one person. Study planners track one course. Nothing tracks how well you actually know a thing — or lets someone else see you working.
02
The shape of it
Five tabs. That's the whole app.
01
Subjects
Drill course → module → topic. Rate what you know.
02
Together
A shared, server-owned study clock. Plus games.
03
Exams
Scope a paper, score your readiness for it.
04
Resources
Timetable, files, deadlines, calendar sync.
05
Stats
Both of you, side by side, no hiding.
Subjects
Naledi
Your subjects7
Mathematics
2 papers · 11 topics
Physical Sciences
2 papers · 15 topics
Life Sciences
2 papers · 9 topics
Business Studies
4 papers · 15 topics
Subjects
Together
Exams
Files
Stats
03
Subjects · four levels deep
Everything narrows to one topic.
Mathematics
Mathematics
54%
Competency
11
Topics
Papers2
Paper 1
6 topics
48%
Paper 2
5 topics
61%
Paper 2
Topics5
Trigonometry
Comp72
Conf55
Euclidean geometry
Comp31
Conf22
Statistics
Comp80
Conf74
Analytic geometry
Comp58
Conf63
Euclidean
Competency31 · Needs work
Confidence22
Unclear items3
Cyclic quad proofs
Open
Ratio & similarity thm
Open
Tan-chord
Done
Sessions142 min
14 Aug · 45 min
Course → Module → Topic → Detail
04
The idea that makes it work
What you know vs. what you think you know.
Every topic carries two independent 0–100 sliders. The gap between them is the whole diagnostic.
Conf > Comp
The dangerous one. You'll skip revision you needed.
Comp > Conf
You know it. You just don't believe it yet.
CompetencyConfidence
05
Together · the shared clock
The timer lives on the server.
Lock your phone, background the tab, lose signal — the clock keeps running, because elapsed time is derived from a started_at row, never from whether your socket is alive.
Away ≠ stopped
Presence reports away while the session keeps counting.
Honest totals
Stop returns the authoritative duration — the client never invents one.
Together
Thabo
You
Studying
01:12:40
Naledi
Studying · away
00:38:05
Session running
01:12:40
Discard
Stop & log
Idle since 21:04 — trim the away time?
Subjects
Together
Exams
Files
Stats
06
Together · the break
A break you take with someone.
Three live-matched games sit behind the timer. Stop studying, play a round, go back — instead of drifting off into a feed alone.
Sudoku
Solo, co-op on one board, or race the same puzzle.
Connect Four
Turn-synced across both devices. Four in a row.
Hangman
Co-op guessing, or set each other the word.
07
Exams · readiness, not vibes
Scope the paper. Score the gap.
Tick the topics an exam actually covers, then mark each one prepped as you finish it. Readiness is computed from your own competency scores — not from how many hours you sat there.
64%
Overall readiness · 12 days out
Exams
Naledi
Physical Sci P1
12
Days left
64%
Readiness
6/10
Prepped
ScopeComp · Prep
Mechanics
82Prepped
Momentum
76Prepped
Electric circuits
49Open
Doppler effect
28Open
Electrodynamics
31Open
Subjects
Together
Exams
Files
Stats
08
Stats · side by side, always
Two operators, one chart.
ThaboNaledi
84min
Thabo · daily average
106min
Naledi · daily average
Mock data · seven-day window
09
Report card · what actually happened
Predicted vs. marked.
Every returned test goes in with its mark, total and date. The app bands it — Distinction, Merit, Pass, Bare Pass, Fail — and surfaces your best module and your worst one without being asked.
Best module
Life Sciences · 78% average
Needs work
Mathematics · 51% average
ModuleMarkBand
Life Sciences P278/100Dist
Business Studies P169/100Merit
Physical Sci P158/100Pass
Mathematics P242/100Bare
OVERALL61.8%
10
Resources & calendar
Timetable, files, deadlines — in the same place.
Timetable
Lectures, tutorials and tests on a repeating weekly grid — once, daily or weekly.
Attachments
Past papers and notes pinned to the topic they belong to. Written through instantly, never batched.
Google sync
Optional two-way calendar link, so deadlines land where the rest of life already lives.
11
Gamification · derived, never stored
XP you can't fake.
Level, streak and badges are recomputed from logged minutes and topic scores every render. There is no XP column to inflate.
Signing in is per-device and never syncs. Viewing your partner's data drops the app into read-only observer mode — and every mutator refuses a write aimed at anyone but the signed-in profile.
Guarded writes
A mis-fired control no-ops and warns rather than corrupting the other person's data.
Observer mode
A persistent banner makes it obvious whose data you are looking at.
Clean handover
Switching profile stops the timer and leaves any live match first — confirmed, then swapped.
13
Architecture · offline-tolerant by default
Three layers, no spinners.
L1
Local first
State hydrates synchronously from localStorage — the UI paints before the network is consulted.
L2
Server reconciles
One GET replaces local state; an echo-guard suppresses the PUT it would otherwise trigger.
L3
Debounced write-back
Every change saves locally at once and syncs 800 ms later. Failures toast; the app keeps working.
Stack
ClientReact + Vite
APIExpress
StorePostgres
DeployRailway · single origin
StateOne context, guarded
14
Where else this fits
Any two people revising toward a date.
Study partners
Different courses, same deadline pressure. The shared clock is the accountability.
Parent & matric student
Observer mode gives visibility into readiness without letting anyone edit the record.
Tutor & tutee
Unclear items become the agenda for the next session. Competency tracks whether it landed.
Certification prep
Exam scope + readiness maps cleanly onto any syllabus with a fixed exam date.
15
StudyForge / OPS
Study is lonely. This makes it a two-person job.
Competency over hours. A clock that can't be gamed. And someone on the other side of it.