
PairWise Cards : application de flashcards avec répétition espacée
Application de flashcards conçue pour tester trois niveaux d'effort de rappel, avec répétition espacée et progression conservée localement dans le navigateur.
Problème
Les différents formats de flashcards ne sollicitent pas tous la mémoire de la même manière.
Le mode glissement permet de réviser rapidement, mais repose largement sur l'auto-évaluation et peut devenir trop passif. À l'inverse, la saisie force à produire une réponse complète, mais demande parfois de reconstruire toute sa formulation alors que seule une connaissance précise doit être vérifiée.
J'ai donc cherché à proposer un format intermédiaire : suffisamment actif pour solliciter le rappel, mais assez léger pour éviter de transformer chaque révision en exercice de rédaction.
Une première version du projet, commencée en août 2024, réunissait trop de fonctionnalités et reposait sur une architecture difficile à maintenir. Je l'ai laissée de côté, puis reprise avec un périmètre recentré sur un MVP cohérent, finalisé en avril 2026.
Approche
J'ai développé trois modes complémentaires : la saisie, le glissement et le texte à trous.
Le mode texte à trous masque automatiquement certains éléments jugés importants de la réponse afin de demander à l'utilisateur de les retrouver sans lui faire réécrire l'intégralité de celle-ci. Leur sélection repose sur une heuristique de scoring prenant notamment en compte les noms propres, nombres, termes techniques et longueur des mots.
Le moteur de répétition repose sur une implémentation de SM-2 qui adapte les intervalles de révision en fonction des réponses. Les différents modes produisent des évaluations différentes afin d'adapter le calcul de l'intervalle au type d'interaction.
L'application adopte une approche local-first : les decks, cartes et données de progression sont persistés dans une base IndexedDB gérée avec Dexie.js. La base est versionnée afin de permettre l'évolution du modèle de données.
La validation du mode saisie est configurable par deck. Trois niveaux de tolérance permettent d'adapter la comparaison des réponses au type de contenu : une liste de vocabulaire peut privilégier une correspondance exacte, tandis qu'une liste de connaissances théoriques peut tolérer certaines fautes de frappe ou d'orthographe grâce à une comparaison basée sur la distance de Levenshtein.
Résultats
L'application permet de créer et gérer plusieurs decks, d'importer des cartes depuis des fichiers CSV, JSON ou TSV et de réviser selon les cartes dues par SM-2.
La progression est conservée entre les sessions directement dans le navigateur, sans compte utilisateur ni backend. Une page dédiée permet de visualiser la répartition des cartes selon leur niveau de maîtrise et leur progression.
Les trois modes d'apprentissage, la navigation au clavier et le mode d'entraînement libre permettent d'adapter l'utilisation de l'application à différentes situations de révision.
J'ai également ajouté des tests unitaires avec Vitest, notamment autour de la logique de sélection des mots du mode texte à trous.
Limites
Le mode texte à trous repose sur des heuristiques basées sur des caractéristiques lexicales et de position. Cette approche permet d'obtenir un fonctionnement entièrement local, mais elle ne comprend pas réellement le contexte sémantique d'une réponse.
La qualité des mots sélectionnés peut donc varier selon la formulation du contenu.
Prochaines étapes
Améliorer la sélection des mots du mode texte à trous avec une analyse linguistique plus contextuelle.
Renforcer la couverture des tests autour de l'algorithme SM-2 et de ses cas limites.
Enrichir les statistiques de progression pour fournir un suivi plus détaillé des habitudes de révision.