# Groupe Méditation — Application PWA **District 87-16 · Région 87 · Alcooliques anonymes** Application mobile-first pour la gestion des groupes AA. 1 module = 1 tâche. ## Architecture | Couche | Technologie | |--------|-------------| | Frontend | React 18 + Vite (PWA installable) | | UI | Tailwind CSS (mobile-first) | | État | Zustand | | Backend | FastAPI (Python) async, 82 routes | | DB | PostgreSQL + SQLAlchemy async (23+ tables) | | Auth | JWT 30 jours + bcrypt 12 rounds (prénom + PIN) | | PDF | WeasyPrint | | Serveur | NGINX (statiques + reverse proxy HTTPS) | ## Modules ### Consultation (C1-C7) — Tous les membres - **C1** Rapports PDF — finances, PV, résolutions, rapport complet - **C2** Événements à venir — anniversaires de sobriété et événements ad hoc du district - **C4** Littérature — inventaire avec prix, alerte stock bas - **C5** Décisions en cours — suivi des résolutions - **C6** Votes ouverts — sondages de conscience de groupe, vote anonyme - **C7** Mon profil — modifier, changer PIN, notifications - **C8** Propositions — soumettre, seconder, voter (créables en tout temps) - **C9** S'impliquer — postes vacants, candidatures ### Saisie hebdomadaire (S1-S5) - **S1** Collecte 7e Tradition — saisie le jour de réunion, confirmation par un second membre, historique mensuel avec totaux - **S1T** Trésorerie — soldes (banque + encaisse + disponible après réserves), réception des collectes et ventes de littérature, registre détaillé des transactions, opérations bancaires (dépôt/retrait/relevé) - **S2** Remise de jeton — 9 types, historique - **S3** Vente littérature — stock auto-décrémenté, montant à remettre au trésorier - **S4** Rapport de réunion — thème + annonces - **S5** Dépenses — 6 champs, engagements non débités, confirmation de débit par le trésorier ### Saisie mensuelle (M1-M6) - **M1** Rédiger PV — auto-renseigné depuis les propositions secondées, décisions structurées - **M2** Présences réunion d'affaires - **M3** Rapport RSG — template 3 sections - **M4** Envoi contributions — somme disponible affichée par défaut, destinataire + montant + méthode - **M5** Ajuster inventaire — +/−, ajout catalogue - **M6** Commander jetons — état stock 30 jours ### Gestion — Exécutif - **G1** Inviter un membre — code 48h - **G2** Gérer les membres — fiche complète, droit à l'oubli - **G6** Lancer un sondage — oui/non, choix multiple, unanimité - **G9** Paramètres du groupe — nom, horaire, adresse, format - **G11** Gestion des mandats — affecter, terminer, planifier les rotations - **G12** Gestion des postes — créer, abolir, candidatures, accès aux modules ## Trésorerie Le calcul des soldes repose sur le relevé bancaire mensuel : - **Solde banque** = dernier relevé + dépôts − retraits depuis le relevé - **Disponible** = solde banque − engagements non débités − réserves - **Réserves** = réserve prudente (500 $) + réserve anniversaire (20 $/mois) - **Encaisse** = collectes reçues + ventes remises − dépôts − dépenses cash Toute dépense par chèque ou virement est un engagement. Le trésorier confirme le débit lorsque l'argent quitte effectivement le compte. ## Propositions et résolutions Les propositions peuvent être créées en tout temps par n'importe quel membre, sans nécessiter une réunion d'affaires. Le cycle est : proposée → secondée → votée (adoptée/rejetée). Lorsqu'adoptée, la proposition devient une résolution numérotée (RES-2026-001) et peut être associée à l'assemblée d'affaires lors du vote. Le PV de la réunion d'affaires s'auto-renseigne depuis les propositions secondées en attente de vote. ## Principes - **Anonymat AA (12e Tradition)** — prénom seul dans les écrans partagés - **Pas d'administrateur (2e Tradition)** — permissions = exécutif du groupe - **Mandats manuels** — aucune terminaison automatique - **Zéro traçage** — pas d'analytics, pas de cookies tiers - **Hébergé au Québec** — souveraineté numérique · 100 % logiciel libre ## Fichiers ``` backend/ API FastAPI (Python) app/ core/ Config, DB, sécurité models/ Modèles SQLAlchemy (23+ tables) routers/ Routes API (26 groupes) schemas/ Schémas Pydantic frontend/ React + Vite + Tailwind src/ pages/ 33 pages stores/ Zustand + API helper components/ Composants réutilisables deploy/ Service systemd, NGINX, seed, backup docs/ DEPLOIEMENT.md, RUNBOOK.md ``` ## Documentation - [Guide utilisateur](docs/UTILISATEURS.md) - [Déploiement Ansible](docs/ANSIBLE.md) - [Runbook d'exploitation](docs/RUNBOOK.md) --- *«Nos leaders sont des serviteurs de confiance ; ils ne gouvernent pas.» — 2e Tradition*