Skip to content
riadh-mnasriPublic

About

Generic language-revision engine decoupled from its content, shipped with a first pack covering Chinese HSK1 to HSK3 and designed to easily onboard new packs.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Lingopack

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.

README in English

Principe

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.

Fonctionnement

  • 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.

Stack

Ajouter une nouvelle langue

  1. Créer src/packs/<code>/items.ts avec les mots (PackItem[] : target, reading?, translation, category, level, exemples optionnels).
  2. Créer src/packs/<code>/index.ts avec les métadonnées du pack (LanguagePack : couleurs, drapeau, script).
  3. L'ajouter au tableau packs dans src/packs/registry.ts.
  4. Ajouter les clés de traduction du pack (packs.<code>.name, packs.<code>.tagline) dans messages/fr.json et messages/en.json.

Développement local

npm install
npm run dev

L'application est servie sur http://localhost:3550.

Scripts

  • npm run dev : serveur de développement (port 3550)
  • npm run build : build de production
  • npm run start : sert le build de production
  • npm run lint : vérifie le code avec ESLint

Déploiement

Le projet est déployé sur Vercel, avec déploiement automatique à chaque push sur main.

Licence

© 2026 Riadh MNASRI

About

Generic language-revision engine decoupled from its content, shipped with a first pack covering Chinese HSK1 to HSK3 and designed to easily onboard new packs.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages