108 lines
4.8 KiB
Markdown
108 lines
4.8 KiB
Markdown
# 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 (G1-G9) — Exécutif
|
||
|
||
- **G1** Inviter un membre — code 48h
|
||
- **G2** Gérer les membres — fiche complète, droit à l'oubli
|
||
- **G3** Affecter les postes — n'affiche que les postes vacants
|
||
- **G4** Terminer un mandat — transition manuelle, note pour le successeur
|
||
- **G5** Planifier les rotations — calendrier serviteurs
|
||
- **G6** Lancer un sondage — oui/non, choix multiple, unanimité
|
||
- **G7** Jumeler parrain/filleul — confidentiel
|
||
- **G9** Paramètres du groupe — nom, horaire, adresse, format
|
||
- **G10** Gérer les postes — créer, abolir, candidatures
|
||
|
||
## 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
|
||
```
|
||
|
||
---
|
||
|
||
*«Nos leaders sont des serviteurs de confiance ; ils ne gouvernent pas.» — 2e Tradition*
|