Tribalbyte

Apprendre / UML séquence

Un cours de langue personnel,
protégé comme une application d’entreprise.

Un manuel personnel et ses enregistrements deviennent un lecteur mobile privé : leçons 1 à 5 complètes, audio organisé sur 100 leçons, marque-pages et programme quotidien, réservés à un seul compte.

Cadre
Projet personnel
État
Publié en privé · contenu partiel
Outils
Python · Waitress · Caddy · SQLite · Google Identity

Le besoin

Étudier une méthode de langue sur téléphone, n’importe où, en retrouvant sa page et sa position audio. Le contenu est personnel et ne doit être accessible qu’à son propriétaire.

L’analyse

La règle de découpage a guidé tout le reste : une leçon = une page web, même lorsqu’une photo du livre couvre la fin d’une leçon et le début de la suivante. Dialogues, traductions, notes, exercices et corrigés se lisent au même endroit, chaque phrase enregistrée ayant son bouton audio.

La sécurité a été traitée comme une exigence à part entière : chaque accès — page, image, piste audio — exige une session valide, vérifiée côté serveur.

Le processus documenté

Ouvrir une leçon sans session

UML 2 · diagramme de séquence
Diagramme de séquence UML de l’accès au lecteur de coursSans session, le serveur redirige vers la connexion ; un nonce à usage unique est émis ; Google renvoie un ID token vérifié par le serveur ; si le compte est l’unique compte autorisé, une session opaque est créée, sinon l’accès est refusé.alt[e-mail vérifié = compte autorisé ∧ sub épinglé][sinon]NavigateurServeur du lecteurGoogle IdentityBase SQLiteGET une leçonpas de session : vers la connexionouvrir la page de connexionnonce (usage unique, 10 min)se connecter avec GoogleID token (callback)POST ID token + nonce + jeton CSRFvérifier signature, audience,expiration, émetteur, noncecréer la session (condensat SHA-256)cookie HttpOnly, SameSite=Lax → leçonaccès refusé

← Faire défiler le schéma →

Le fragment alt montre la décision d’autorisation : seul le compte autorisé, dont l’identifiant Google stable est épinglé, obtient une session.

Règles de gestion

Ce que l’outil doit respecter.

  1. RG-01Une leçon = une page web, indépendamment du découpage des pages imprimées.
  2. RG-02Date prévue d’une leçon = date de départ + (numéro − 1) jours ; la date de départ est conservée par compte.
  3. RG-03Un numéro de 1 à 100 désigne une leçon, jamais une page imprimée.
  4. RG-04La reprise audio ne démarre jamais seule : l’utilisateur relance la lecture.
  5. RG-05Rien n’est inventé : une leçon dont les pages ne sont pas encore importées reste en audio seul.
  6. RG-06Session expirée après 15 minutes d’inactivité, 8 heures au maximum.

Exigences de sécurité

  • Vérification de l’ID token côté serveur : signature, audience, expiration, émetteur.
  • Nonce à usage unique, jeton CSRF, contrôle strict de l’origine.
  • Session opaque dont seul le condensat est stocké ; cookie HttpOnly.
  • Aucun fichier servi en dehors du catalogue validé.

Le contenu du manuel reste privé et n’est pas diffusé.

État au 13 octobre 2026

Une réalisation, un périmètre précis.

Ce qui est réalisé

Lecteur privé publié avec connexion Google, audio, reprise, marque-pages et calendrier. Les leçons 1 à 5 sont complètes ; les pistes audio sont organisées sur 100 leçons.

Ce qui a été vérifié

Connexion, lecture audio et affichage mobile vérifiés lors de la publication du 11 octobre. La fiche décrit 41 tests de sécurité, navigation et calendrier ; ils n’ont pas été relancés pendant cette revue.

Limites actuelles

La disponibilité du lecteur et des pistes audio ne signifie pas que les 100 leçons sont transcrites. Les leçons restantes attendent leurs sources textuelles.

Prochaine étape

Importer progressivement les textes disponibles et contrôler le rattachement de chaque phrase à sa leçon et à son audio.

Exemples de critères de recette

Ces critères décrivent le résultat attendu. Ils ne constituent pas, à eux seuls, des tests réussis.

  1. Sans session valide ou avec un compte non autorisé, une URL directe de leçon, d’image ou d’audio ne livre aucun contenu privé.
  2. Les leçons 1 à 5 affichent leurs contenus complets ; une leçon non transcrite reste explicitement en audio seul, sans texte inventé.

Parlons de votre projet

Un besoin concret.
Une première discussion.

Un processus trop manuel, une donnée peu fiable ou une idée à tester ? Commençons par clarifier ce qui vous serait vraiment utile.

Échanger avec Loïc