Judo Progress : un carnet Flutter hors connexion

Garder une trace des séances de judo, des observations et du prochain point à travailler. J’ai conçu et développé ce projet personnel autour d’une contrainte simple : le carnet doit rester utilisable sans serveur.

Flutter / DartBloc / CubitSQLite / sqfliteFR / EN

Étude vérifiée le . Rôle : conception et développement personnels.

Contexte et usage

Le carnet relie une séance à des observations concrètes et à un défi de progression. La saisie doit rester courte ; la relecture doit aider à préparer la séance suivante. Les données du carnet sont saisies par l’utilisateur, tandis que le référentiel technique est initialisé par l’application.

Mon périmètre

Modèle des séances et défis, écrans Flutter, gestion de l’état avec Bloc/Cubit, dépôts de persistance SQLite et évolution du schéma. La vérification présentée ici porte sur le carnet, les migrations de base et la résolution de langue.

Architecture

L’interface affiche l’état du carnet fourni par un Cubit. Les opérations métier passent par un contrat de dépôt, implémenté avec sqflite. Un composant dédié ouvre la base, active les clés étrangères et applique les créations ou migrations de schéma.

  1. 01

    Flutter

    Saisie, carnet, préparation et relecture.

  2. 02

    Bloc / Cubit

    État de l’interface et cycle des défis.

  3. 03

    Repository / SQLite

    Persistance locale, relations et migrations.

Compromis retenus

La base locale comme référence

Le carnet n’a pas besoin d’une réponse réseau pour enregistrer une séance. Ce choix simplifie l’usage hors connexion. En contrepartie, il ne fournit pas à lui seul une synchronisation multiappareil ; sauvegarde et transfert nécessitent leur propre conception.

Un modèle de progression explicite

Le cycle d’un défi distingue activation, pause et clôture. Le Cubit traite aussi le conflit avec un défi déjà actif. Ces règles ont un état propre et peuvent être testées sans traverser tous les écrans de l’application.

Préserver ce que l’utilisateur a saisi

Le schéma évolue par migrations. Les anciennes données de démonstration sont identifiées précisément, afin de les distinguer des séances et défis réellement ajoutés. Une base neuve initialise le référentiel mais laisse le carnet vide.

Validation réellement exécutée

Le 23 octobre 2026, quatre fichiers de tests ont été exécutés sur le code local : 40 tests ciblés réussis, aucun échec. Ils contrôlent la création et les migrations SQLite, le dépôt du carnet, le cycle des défis et la résolution de langue français/anglais.

Ce que cette vérification établit

Les tests de persistance utilisent SQLite en mémoire et des données de test. Ils vérifient notamment un carnet initialement vide, l’enregistrement et la relecture de séances, ainsi que la préservation des données lors de migrations couvertes. La résolution de langue respecte les préférences prises en charge.

Ce contrôle ciblé ne constitue ni une recette sur tous les appareils ni une mesure d’usage. Aucun nombre d’utilisateurs, gain sportif ou résultat client n’est revendiqué.

Une application qui doit fonctionner sur le terrain ?

Décrivez les appareils, les conditions réseau et les données à conserver. Premier retour sous 48 h ouvrées, devis après cadrage.

← Toutes les réalisations