L'idée
Une app d'échecs qui ne se contente pas d'afficher des puzzles : elle apprend de toi et te fait réviser au bon moment. Deux briques rendent ça possible : la répétition espacée FSRS et un moteur Stockfish natif.
FSRS
Le Move Trainer traite chaque coup d'ouverture ou motif tactique comme une « carte » (façon Anki moderne) : sa prochaine échéance de révision est recalculée selon ta facilité à le retrouver. L'algorithme vit dans un package dédié packages/chess, découplé de l'UI, donc testable sans lancer l'app.
Stockfish en natif
Pas de WebView : le moteur tourne en natif via un Expo Dev Client (expo prebuild). En dev, un mock engine prend le relais tant que le module natif n'est pas buildé (flag extra.useNativeEngine) — l'UI se code sans dépendre d'Xcode à chaque fois.
Données
- chess.com PubAPI — stats et parties, sans OAuth
- Lichess API — OAuth2, Opening Explorer proxifié par l'API pour ne pas exposer les tokens côté mobile
- Base de puzzles Lichess (licence CC0) — sous-ensemble importé côté serveur
Architecture
Backend NestJS hexagonal (Domain / Application / Infrastructure / Presentation), domaine décrit une seule fois via des schémas Zod partagés (packages/types). CI GitHub Actions path-filtered : un workflow par app.
Stack
React Native · Expo · NestJS · FSRS · Stockfish · Turborepo · TypeScript
Retour d'expérience détaillé : Répétition espacée FSRS + Stockfish natif en React Native.