Contexte
Projet personnel — application cross-platform d’assistance pour Donjons & Dragons 5e édition (2014), conçue pour fonctionner prioritairement hors ligne avec synchronisation cloud optionnelle.
L’application cible à la fois les joueurs (gestion de leur fiche de personnage) et les maîtres du jeu (gestion de campagnes, suivi de combat, bibliothèque de monstres). Elle est disponible sur 5 plateformes depuis une seule base de code : iOS, Android, macOS, Windows, Linux.
Fonctionnalités implémentées (MVP)
Gestion des personnages
- Création de personnage complet (race, classe, caractéristiques, background, équipement)
- Fiche de personnage interactive : PV, dés de vie, jets de mort, CA, ressources, sorts
- Calculs automatiques : modificateurs, bonus de maîtrise, CA depuis l’armure équipée
- Export / import JSON pour partage entre joueurs et MJ (hors ligne)
- Bibliothèque de sorts SRD en français, emplacements de sorts par niveau
Campagnes et MJ
- Création de campagnes avec code d’invitation
- Vue MJ : accès aux fiches des joueurs, gestion des dossiers
- Bibliothèque de monstres (SRD + homebrew) avec stat blocks complets
- Création / modification de monstres personnalisés
Combat Tracker
- Initialisation du combat : sélection des participants (PJ + monstres)
- Suivi de l’ordre d’initiative, PV actuels, conditions (étourdi, à terre…)
- Ressources des combattants (emplacements de sorts, charges de capacités)
Compte cloud et synchronisation
- Authentification JWT (inscription / connexion) avec stockage sécurisé du token
- Synchronisation manuelle des données avec résolution de conflits (last-write-wins par
updated_at) - Mode hors ligne complet : l’application fonctionne intégralement sans connexion
Stack technique
Application Flutter
- Flutter 3.22+ / Dart 3.3+
- Drift 2.x (ORM SQLite, offline-first, code generation)
- Riverpod 3.x (state management réactif)
- go_router (navigation déclarative)
- Freezed + json_annotation (modèles immuables, sérialisation)
- Dio (client HTTP) + flutter_secure_storage (tokens JWT)
- share_plus + file_picker (export/import JSON)
Backend (FastAPI)
- FastAPI 0.115.x + Python 3.12
- SQLAlchemy 2.0 async + Alembic (migrations)
- Pydantic v2, Uvicorn, authentification JWT
- PostgreSQL 16
Infrastructure
- Docker + Docker Compose
- Nginx + Let’s Encrypt (SSL)
- Hébergement VPS (Hetzner / OVH)
Architecture
Pattern Feature-first avec séparation stricte data / presentation :
lib/
core/ → database (Drift), auth, router, providers, sync
features/ → character / campaign / combat / monster / spells
data/ → repository
presentation/
screens/ → UI
providers/ → Riverpod
widgets/ → composants
shared/ → constantes SRD, utilitaires D&D
Données SRD (sorts, races, classes, monstres) pré-chargées en base locale via srd_seed.dart au premier lancement — aucune connexion requise pour jouer.