- Introduced "Pension Scheme & Benefits" detailing secondary employment benefits and pension specifics. - Created "Roles & Accountabilities" outlining the Holacracy role structure and responsibilities within Respellion. - Added "Security" section covering GDPR compliance and workplace safety protocols. - Established "Spending and Contracting" policy detailing expense categories and submission processes. - Documented "Who We Are" to define Respellion's identity, services, and operational model under Holacracy and ISO 9001.
1.8 KiB
1.8 KiB
Gamification spec
A lightweight points-and-badges layer that motivates weekly completion. There is no separate progress service — points are written by the test flow and badges are computed at render time.
- Ledger: the
leaderboardcollection - Award path:
src/lib/testService.js → saveTestResult - Display:
src/pages/Leaderboard.jsx(+ the Dashboard mini-leaderboard)
Points
- +2 points per correct quiz answer (
pointsEarned = score * 2). - Written via
db.upsertLeaderboardEntry(userId, name, pointsDelta, testsCompletedDelta), which incrementspointsandtests_completed.
leaderboard fields: user_id, name, points, tests_completed,
learnings_completed (reserved).
Badges (computed at render time)
Defined in Leaderboard.jsx; not stored in the database:
| Badge | Condition |
|---|---|
| First Steps | tests_completed > 0 |
| Veteran | tests_completed >= 5 |
| Perfectionist | any test scored 100% (perfectScores > 0) |
Leaderboard
- Admins are filtered out of the public board.
- All non-admin members appear, even with 0 points.
- Sorted by
pointsdescending; top 3 shown as a podium, the rest as a ranked list with their earned badges. The current user is highlighted. - The Dashboard shows a compact top-3 + the viewer's rank.
Notes & possible extensions
- The earlier design described developer-themed XP ("commits"), levels (Intern→Principal), weekly streaks, a GitHub-style heatmap, and public milestone cards. None of those shipped — the live system is the points + 3-badge model above.
- If extending: add fields to
leaderboard(or a new collection + migration inpb_migrations/, mirrored inscripts/setup-pb-collections.mjs), increment them on the relevant completion events, and surface them inLeaderboard.jsx.