Brief 06 · Oefenen-pijler · Leaderboard & Achievements

Motivatie zonder schaamte — daily én weekly in één blik.

Sleutel-states voor Leaderboard, Trophy Case (web) en de cross-pijler streak-chip. Pulse-blue family voor jouw-positie, gold/silver/bronze als smaakvolle accenten op top-3, "Bijna behaald"-laag voor momentum.

A · Concept-rationale

Voor 12-18 met examenstress is een leaderboard alleen behulpzaam als jouw positie nooit verdwijnt — ook niet op #4523. We tonen daarom altijd een persoonlijke "JIJ"-kaart bovenaan elk lijstje, en duwen daily + weekly nooit in een tab-switch maar zetten ze als twee gelijkwaardige glance-kolommen naast elkaar (Robin's hard requirement). Top-3 krijgt smaakvolle gold/silver/bronze accenten via 3px-borders + display-numerals — geen Vegas-trofeeën. In de Trophy Case introduceren we een dedicated "Bijna behaald"-laag voor locked-badges met ≥50% voortgang: dat is waar momentum zit, niet bij 0%-locked. De cross-pijler streak-chip krijgt drie expliciete states (active / not-active / broken) zodat broken nooit als verwijt voelt.

Leidende principes

Jij bent altijd in beeld

Eigen rank zit boven elke lijst als persoonlijke kaart, plus 3px-Pulse-border in de lijst zelf. Niet schreeuwerig, wel onmiskenbaar.

Daily + Weekly = even-weight

Twee kolommen, identieke structuur. Geen dominante hoofd-tab. Glance-comparison ipv switch-cost.

Momentum > volledigheid

"Bijna behaald" sectie tilt locked-met-progress eruit — zien wat dichtbij is motiveert meer dan een muur trofeeën.

Broken streaks = informatie

Geen rode wond, geen schaamte-copy. Neutraal grijs + helpende Pulse-quote.

B · Sleutel-states

11 ontworpen states verdeeld over drie modules (canvas hieronder).

Leaderboard 5 states

Trophy Case 4 states

Streak-chip 2 deliverables

C · Deviations vs huidige Snapsnelds

Verplicht alleen voor de Trophy Case (mobile bestaat). Leaderboard + streak-chip = blank canvas, geen deviations.

OnderdeelHuidig (mobile)Jij (web)Waarom
Layout achieved+lockedVolledige mix in één grid, sequentieelDrie-laags: Recent → Bijna behaald (≥50%) → Nog op te bouwenWeb heeft ruimte; "Bijna behaald" tilt momentum eruit. Locked-met-3% en locked-met-87% verdienen niet dezelfde behandeling.
Locked badge-stylingWitte achtergrond, slot-icoon rechtsbovenSubtiele diagonal-stripe-pattern + 92% opacity + lock-bubble onderaan icoonStripe-pattern leest sneller "incomplete" zonder dat het er kapot uitziet. Lock-bubble matcht check-bubble bij achieved.
Stat-headersDrie aparte cijfers in horizontale stripTwee compact + Pulse-coach-card "3 staan op 50%+"Mobile-headers zijn passieve metrics. Web krijgt extra ruimte voor een actionable observatie.
Categorie-tabs5 tabs (Alle / Leren / Streaks / Sociaal / Speciaal)6 tabs incluis dedicated Cross-pijler-categorieCross-pijler-badges zijn het zwaarste signaal van studiecyclus-engagement; verdienen eigen filter, niet verstopt onder "Speciaal".
Cross-pijler badge-stijlIdentiek aan andere badgesGradient-rand (Pulse-blue → Oefenen-green → Plannen-purple) + sparkles-icoonVisueel signaal "deze badge bestrijkt alle drie pijlers" — niet zomaar nóg een trofee.
Reward-zichtbaarheidDatum behaald, geen XP/Snaps zichtbaarMini-chips "+XP / +Snaps" op elke kaart, ook lockedDoelgroep wil weten wat ze krijgen vóór ze investeren. Reward-info verlaagt drempel om locked-badges te benaderen.

D · Challenge-vragen — expliciet beantwoord

1 · Daily én weekly naast elkaar zonder cognitive-load — hoe?
Twee gelijkwaardige glance-kolommen, identieke structuur. Geen tab-switch (verliest "én-én"-betekenis), geen toggle-tussen-cards (extra klik), geen monthly+alltime erbij (te druk in V1). Per kolom: header met periode-naam + reset-countdown → JIJ-kaart (dashed Pulse-blue, persoonlijke score) → top-7 lijst → "+93 spelers · bekijk top 100" link. Cognitive-load blijft laag omdat de structuur identiek is — je leest één kolom-pattern, en past 'm twee keer toe. Bij smalle viewports (mobile / V1.1) stack-en de kolommen verticaal zonder design-aanpassing.
2 · Mix achieved+locked, of aparte "Bijna behaald" sectie?
Drie-laags hybride. Op de web-versie introduceren we naast Recent-unlocks en Nog-op-te-bouwen een dedicated "Bijna behaald · ≥50%" laag — gemarkeerd met een MOMENTUM-pill in amber. Reden: locked-met-3%-progress en locked-met-87%-progress hebben totaal verschillende emotionele waarde. Door ze samen te tonen verlies je de motivatie-piek waar 'ie zit. Op mobile (waar ruimte schaars is) kan de bestaande mix blijven; op web met 4 kolommen is een eigen sectie van 3-4 cards heel betaalbaar en levert direct return-engagement op.

Privacy-question · <16-no-consent state

Communicatie vermijdt "je bent niet zichtbaar" als hoofdboodschap (voelt als straf). Hoofdkop is "Je doet mee — alleen niet zichtbaar voor anderen." en de score-kaarten zijn identiek qua design aan de gewone leaderboard-kaarten — alleen de publieke lijst is afwezig. Een tweede card legt het GDPR-mechanisme uit + toont route naar consent. Toon: feitelijk + behulpzaam, niet excuserend.

Streak-chip · broken-state copy

Bestaande Snapsnelds-conventie zou waarschijnlijk een rood waarschuwingspatroon zijn. Wij kiezen neutraal grijs zonder rood: "0 dagen" met een 55%-opacity vlam-icoon. Pulse-quote in de popup: "Streak weg. Geen ramp — vandaag opnieuw beginnen." Schaamte ontstaat als de UI agreement zoekt met je teleurstelling; door neutraal te blijven biedt 'ie een fresh start in plaats van een autopsie.

E · Robin's bijsturing — verwerkt in deze finale

  1. Periode-tabs gefinaliseerd: Daily + Weekly verplicht (Robin's OQ5 / A17), Monthly als optioneel 3e tab (matcht school-cijferperiodes — niet kwartaal, dat is willekeurig vergeleken met week/maand-ritme waar 12-18 mee leeft). All-time NIET in V1 — veteranen zouden domineren, conflicteert met "geen schaamte"-principe. → tab-strip toegevoegd in State 1.
  2. JIJ-cap: geen cap die JIJ verbergt. Default-view toont top-7 visueel + "bekijk top 100"-knop voor scannability. Maar als je in top 100 staat (bv. #47), auto-scrollt de uitgeklapte lijst naar JIJ-row zodat die altijd in viewport blijft — anders is de "top 100"-label misleidend. Bij rank #101+ blijft de bestaande sticky-bar (A18) leidend. → footer-copy in PeriodCard schaalt nu mee in 3 cases (in-top-7 / in-top-100 / outside).
  3. Achievement-toast: in-app only voor V1 (toast + modal varianten). Push-notif schuift naar V1.1 — V1 = web-only, GDPR voor <16 vereist parental consent voor push, en achievement-unlock werkt het sterkst in context (post-quiz moment). Push als comeback-mechanic ("3 dagen weg") is waardevol maar hoort in V1.1 user-retention scope. → geen push-notif varianten meer in deze brief.

Analytics-events (footnote)

Per Robin's eerdere bijsturing — events die deze states moeten emitteren voor product-analytics:

Resterende open vragen

  1. Achievement V1 hardcoded list — mijn 15 badges zijn educated guesses. Voor copy + iconen-keuze validatie graag de echte 10-15-lijst van Robin.
  2. Test bij 14-jarigen — voelt de "Bijna behaald" sectie als aanmoediging of als "je bent er nog niet"? Aanname: eerste. Dit is precies waar user-tests nodig zijn vóór final copy.

↓ Sleutel-states canvas — sleep, klik om uit te vergroten ↓