Aller au contenu
← projets/

01 / 02

Memnos

Application de mémorisation par répétition espacée : on crée ses cartes, l'algorithme décide quand les revoir pour qu'elles tiennent en mémoire long terme.

État
en service·2026
Mon rôle
Conception, développement et exploitation — projet personnel mené seul
Stack
  • Next.js
  • ·TypeScript
  • ·Supabase
  • ·PostgreSQL
  • ·Tailwind CSS
  • ·Docker
Capture de Memnos

Le problème

Réviser en relisant ses notes donne l'illusion de savoir : on reconnaît le contenu sans être capable de le restituer. Les deux mécanismes qui marchent vraiment sont le rappel actif (se forcer à retrouver la réponse) et la répétition espacée (revoir juste avant d'oublier). Les outils qui les implémentent existent, mais ils sont soit austères, soit lourds à prendre en main.

Memnos part de là : garder l'algorithme sérieux, enlever tout le reste.

Ce que j'ai construit

Algorithme de planification
FSRS
Installable sur mobile
PWA
Rappels de révision
Web Push

L'ordonnancement repose sur FSRS (Free Spaced Repetition Scheduler) : à chaque réponse, le modèle réestime la difficulté de la carte et la stabilité du souvenir, puis en déduit la prochaine date de révision. C'est plus fin qu'un simple multiplicateur d'intervalle, et ça change vraiment la charge de révision quotidienne.

Autour de ce noyau :

  • Création et partage de decks — un paquet de cartes peut être publié et repris par quelqu'un d'autre.
  • PWA installable — l'app s'ajoute à l'écran d'accueil et se comporte comme une application native.
  • Rappels par notification web push — un déclencheur périodique côté serveur envoie les rappels aux personnes qui ont des cartes à revoir.
  • Suivi des erreurs — les exceptions côté client remontent dans un journal exploitable, pour ne pas découvrir un bug par hasard.

Choix techniques et pourquoi

Monorepo pnpm. Le web et ce qui viendra ensuite partagent les types et la logique métier. Un seul endroit pour le modèle de données, pas de dérive entre deux copies.

Supabase plutôt qu'un backend maison. Postgres géré, authentification et politiques de sécurité au niveau des lignes (RLS) : les règles d'accès sont dans la base, pas seulement dans le code de l'application. Sur un projet mené seul, c'est ce qui garantit qu'une route oubliée ne devient pas une fuite de données.

Déploiement conteneurisé avec un environnement de préproduction séparé. Le site tourne derrière Nginx sur mon serveur, avec une instance de staging identique à la production. Toute modification sensible y passe avant la mise en ligne.

État actuel

Le service est en production sur memnos.fr. Le produit est fonctionnel et utilisé ; le travail en cours porte sur l'acquisition et sur la validation des rappels push sur iOS, où les contraintes du navigateur sont les plus strictes.