🌳 PictoTree - Écosystème de Communication Alternative
(CAA)
Résumé du Projet : PictoTree est une plateforme complète (Backend Web + Application
Mobile Native) conçue pour l'Aide à la Communication Alternative et Améliorée (CAA). L'objectif est de
permettre aux utilisateurs (aidants, orthophonistes, parents) de créer, gérer et afficher des "arbres"
de communication personnalisés à l'aide de pictogrammes (notamment via la banque open source ARASAAC ou
via des imports personnels).
Le système en cours de développement est actuellement hébergé en production et accessible sur pictotree.eu.
1. Le Backend Web & API (Python / Flask) ⚙️
Application Flask / JS multifonction au cœur du projet. Elle permet à l'utilisateur d'importer des
pictogrammes, de construire des listes chaînées pour les imprimer, et de concevoir ses propres arbres de
communication qui pourront être synchronisés avec l'application Android.
- API RESTful & Authentification : Développement d'une API mobile dédiée, sécurisée
par jetons JWT, gérant l'authentification et les accès.
- Infrastructure & Déploiement : Actuellement hébergé sur un serveur cloud dédié
(pictotree.eu), le projet a été pensé pour être entièrement conteneurisé avec Docker à court terme.
- Gestion Avancée des Fichiers Utilisateurs : Le backend permet l'import dynamique
d'images personnalisées. Chaque utilisateur dispose d'un espace de stockage cloud cloisonné (un
dossier propre sur le serveur Linux) pour gérer ses ressources en toute sécurité.
- Génération de Documents : Export de fiches PDF à la volée intégrant les
pictogrammes distants de l'utilisateur.
- Base de Données : Architecture relationnelle gérée avec SQLAlchemy et Flask-Migrate
pour le versioning de la DB. Une migration vers MySQL est prévue pour accompagner le passage de
l'application sur Docker.
2. L'Application Mobile Native (Android / Kotlin)
📱
Prolongement direct du backend, cette application permet aux utilisateurs de communiquer en sélectionnant
les arbres de pictogrammes organisés depuis le site web. Pensée pour être accessible et résiliente, elle
est compatible smartphone et tablette, propose une synthèse vocale (Text-to-Speech de Google) pour lire
les descriptions, et peut fonctionner entièrement en mode hors ligne après la première synchronisation
des arbres.
- Architecture Stricte : Développée en suivant le pattern MVVM (Model-View-ViewModel)
recommandé par Google. Séparation claire entre la logique métier, la gestion des données et
l'interface utilisateur.
- Gestion Réactive des États : Utilisation de StateFlow et de classes scellées
(sealed classes pour les UiState) afin de piloter proprement l'affichage de l'interface (Chargement,
Succès, Erreur).
- Réseau & Mode Hors Ligne : Communication API sécurisée via Retrofit / OkHttp.
Implémentation d'une base de données locale avec Room (via KSP) pour la persistance des profils et
des arbres de communication, garantissant l'utilisation de l'application sans connexion internet.
- Internationalisation & Accessibilité : Application 100 % multilingue via
l'utilisation stricte des ressources texte (strings.xml) pour garantir la maintenabilité, couplée
aux outils d'accessibilité vocale natifs.
- Mots-clés / Stack Technique : Python, Flask, SQLAlchemy, Kotlin, Android SDK, MVVM,
Room, Retrofit, Coroutines/Flow, JWT, REST API, Docker (prévu), Hébergement Web.
3. Qualité Logicielle & Culture DevOps 🚀
Pour garantir la stabilité de l'application en production et fluidifier le développement, une approche
DevOps moderne a été intégrée au cœur du projet :
- Tests Automatisés : Mise en place d'une suite de tests (unitaires/intégration) sur
le backend Flask (ex: validation des routes API, tests d'authentification) pour prévenir toute
régression.
- Intégration et Déploiement Continus (CI/CD) : Automatisation du pipeline de
livraison. Chaque mise à jour majeure du code passe par des étapes de validation automatisées avant
d'être auto-déployée sur le serveur de production (pictotree.eu). L'architecture logicielle est
également préparée pour une future conteneurisation intégrale sous Docker.
Les liens
Backend Web & API
Lien vers le dépôt Pictogram-Tree Builder
Lien du dépôt