Curriculum engine
CEFR-graded progression
240 lessons grouped into 48 modules across A1, A2, B1, and B2 tracks. Each module unlocks sequentially based on completion thresholds, with diagnostic placement for returning learners.
Exercise framework
20+ activity types
Drag-and-drop ordering, conjugation drills, dictation, gap-fill, free-response with grading rubrics, listening comprehension, and bilingual translation pairs — all sharing one extensible interface.
Authentication
Custom JWT auth
Refresh-token rotation, HTTP-only cookies, replay protection. No third-party auth provider — full control over sessions, account recovery, and entitlement gating.
State sync
Cross-device progress
Zustand stores hydrate from MongoDB on auth and persist optimistically. Switch devices mid-lesson and pick up exactly where you left off — no lost streaks.
Monetisation
Multi-plan subscriptions
Monthly, annual, and lifetime plans with prorated upgrades, gated content access, and webhook-driven entitlement updates. Built lean to keep margins viable from day one.
Localisation
Bilingual FR / EN UI
Every label, error, and CTA flips between French and English at the route level. Learners can immerse themselves in a French-only interface or fall back to English while they're getting started.