Une application de révision de langues pour ados, ergonomique et pensée pour donner envie de continuer : cartes courtes, répétition espacée façon Leitner (5 boîtes), série (streak) à ne pas casser, XP à chaque révision.
Le moteur de révision (Leitner, streak, XP, stockage) est totalement indépendant de la langue apprise. Chaque langue est un pack de contenu (src/packs/<code>/) branché sur ce moteur via un registre unique (src/packs/registry.ts). Le premier pack disponible est le chinois (mandarin, vocabulaire HSK 1 à 3, débutant/intermédiaire/avancé). D'autres langues (allemand, espagnol, italien...) peuvent être ajoutées en créant un nouveau pack, sans toucher au moteur ni aux pages.
- Chaque mot vit dans une des 5 boîtes du système Leitner. Une bonne réponse fait monter le mot d'une boîte (intervalle de révision plus long) ; une mauvaise réponse le renvoie en boîte 1.
- Les mots dus aujourd'hui sont ceux dont la date de révision est passée.
- La progression (boîtes, série, XP, historique) est stockée en local dans le navigateur (
localStorage), séparément pour chaque pack de langue. Aucune donnée n'est envoyée à un serveur. - Pour le chinois, chaque carte affiche le caractère (hanzi) au recto, avec un bouton discret pour révéler le pinyin sans retourner la carte ; le verso affiche le pinyin, la traduction française et un exemple pour les mots les plus courants.
- Next.js (App Router, Turbopack) + TypeScript
- Tailwind CSS
- next-intl pour l'interface bilingue français / anglais
- Déploiement sur Vercel
- Créer
src/packs/<code>/items.tsavec les mots (PackItem[]:target,reading?,translation,category,level, exemples optionnels). - Créer
src/packs/<code>/index.tsavec les métadonnées du pack (LanguagePack: couleurs, drapeau, script). - L'ajouter au tableau
packsdanssrc/packs/registry.ts. - Ajouter les clés de traduction du pack (
packs.<code>.name,packs.<code>.tagline) dansmessages/fr.jsonetmessages/en.json.
npm install
npm run devL'application est servie sur http://localhost:3550.
npm run dev: serveur de développement (port 3550)npm run build: build de productionnpm run start: sert le build de productionnpm run lint: vérifie le code avec ESLint
Le projet est déployé sur Vercel, avec déploiement automatique à chaque push sur main.
© 2026 Riadh MNASRI