Retour aux réalisations
Knowledge
App d'apprentissage par IA · web + mobile · Une leçon par jour, des exercices de code et du vocabulaire, notés par l'IA.
Le volet apprentissage de Life Client, construit comme une app à part entière : une leçon quotidienne tirée de vrais articles de science et de tech, des exercices de logique de code notés sur 10 avec un indice et une vidéo quand on bloque, un outil de vocabulaire avec mode entraînement, et une liste de lectures résumées par IA.
Contexte
Les outils d'auto-apprentissage sont éparpillés : une app de leçons, un site d'exercices de code, un paquet de vocabulaire, une liste de lecture. Knowledge réunit les quatre dans une routine quotidienne et les relie au système de progression de Life Client. Elle tourne dans son propre déploiement : on peut la lier, la faire évoluer ou l'extraire sans toucher au reste de Life Client.
Comment ça marche
- Sa propre app, une seule couche de données: Un déploiement Next.js séparé, avec son propre projet Vercel et son domaine, qui partage le projet Firebase, la connexion Google et le package de données TypeScript de Life Client. Un compte Life Client fonctionne ici sans nouvelle inscription.
- L'IA derrière des routes authentifiées: Leçons, exercices, notation, vocabulaire et résumés sont sept routes d'API sur Vercel Functions. Chacune vérifie le jeton d'identité Firebase de l'appelant avant de générer quoi que ce soit, et firebase-admin reste côté serveur. La clé Gemini n'atteint jamais le navigateur.
- De vraies sources, pas du texte générique: La leçon du jour et la liste de lectures s'appuient sur de vrais flux de science et de tech plutôt que sur Wikipédia, avec de vrais liens d'articles et un contrôle de pertinence. Les titres récupérés sur le web sont décodés correctement (entités HTML).
- Un entraînement qui s'adapte: Les exercices de code sont notés de 0 à 10 par le modèle. En dessous de 7, un indice et une vidéo apparaissent ; on peut modifier sa réponse, passer ou supprimer un exercice, et tester des boucles dans un bac à sable JS/TS. Le vocabulaire bien retenu passe dans un Dictionnaire.
- Une progression qui compte: Une statistique Insight, une série de jours et un historique d'exercices vivent dans l'app et alimentent les caractéristiques de Life Client. L'onglet Knowledge de l'app mobile appelle les mêmes routes d'API.
Ce que j'ai construit
- Une leçon quotidienne générée à partir de vrais articles de science et de tech, avec de vrais liens.
- Des exercices de code notés de 0 à 10, avec indice et vidéo en dessous de 7, réponse modifiable, passer/supprimer et un bac à sable JS/TS.
- Un outil de vocabulaire avec mode entraînement et un Dictionnaire pour les mots appris.
- Une liste de lectures où chaque lien reçoit un résumé par IA.
- Progression Insight, série de jours et historique des exercices dans l'app.
- Le même design system que l'app web de Life Client, puis une refonte sombre façon « centre de commande ».
Ingénierie et qualité
- Chaque route d'API authentifie l'appelant avant de dépenser le moindre jeton du modèle.
- L'accès aux données passe par la façade de données partagée : l'app suit la migration de Life Client de Firebase vers Supabase sans réécriture.
- Choix du modèle documenté dans le code : le modèle gratuit flash-lite de Gemini appelé directement, car passer par une passerelle d'IA exigeait une carte enregistrée pour toute requête.
- Qualité de génération corrigée au fil de l'eau : mots répétés, dérive de difficulté et pertinence des articles ont chacun eu leur correctif.
Chronologie
- 25 Aug 2026: Extraite de Life Client en app autonome.
- 26-27 Aug 2026: Mode entraînement et statistique Insight, notation des exercices et bac à sable, vrais flux d'articles, Dictionnaire.
- 8 Sep 2026: Accès aux données déplacé derrière la façade partagée.
- 24-25 Sep 2026: Design system unifié avec l'app web, puis refonte sombre.
En chiffres
- Commits sur cette app: 20
- Sections: 4
- Routes d'API: 7
Next.js · TypeScript · Firebase Auth + Firestore · Vercel Functions · firebase-admin · Google Gemini (flash-lite) · Expo (mobile tab)