Skip to content

[Phase 3.1] Achievement & Badge System #56

Description

@robinson

Goal

Implement a non-manipulative achievement and badge system that celebrates genuine
learning milestones.

Design Principles

  • Badges reward learning behaviours (e.g. "Asked 10 deep questions"), NOT
    mere time spent.
  • No dark patterns: no badge loss, no artificial scarcity, no FOMO prompts.
  • Badges are private by default; sharing is opt-in.

Scope

  • Backend (eule-core): POST /achievements/check endpoint; SQLite table
    achievements(id, user_id, badge_slug, earned_at).
  • Frontend: Badge showcase screen; toast notification on earn; badge detail
    modal with explanation of why it was earned.
  • Initial badge set: First Question, First Deep-Dive, Streak 3, Streak 7,
    10 Sessions, Subject Explorer (3 subjects), Night Owl, Early Bird.

Acceptance Criteria

  • Earning a badge creates a record in SQLite and surfaces a toast.
  • Badge showcase lists all earned badges with date and reason.
  • No badge can be earned more than once (idempotent check logic).
  • Badges are not displayed to parents on the dashboard without child consent.

References

  • docs/UX_REDESIGN_STRATEGY.md — Part 5: Gamification System
  • eule-core/src/storage/sqlite.rs (current schema)

Phase

Phase 3 — Gamification & Progress · Week 1–2

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions