# Récré — Caisse & Stock Multi-Association

## Stack

Symfony 7 · EasyAdmin · MariaDB 11 · PHP 8.3 · Twig + Stimulus/Turbo · Docker · auto-hébergé.

## Rôles

- `ROLE_SUPER_ADMIN` — crée les associations, désigne les admins.
- `ROLE_ADMIN` — gère son association (produits, stock, stats, vendeurs).
- `ROLE_VENDEUR` — vend sur le front de caisse.

## Règles dures

- Aucun secret dans le repo ni dans les fichiers de suivi. **`.env` est suivi** — comme sur
  LintellO — mais ne contient que des valeurs inoffensives : il documente les clés attendues et
  permet à un clone frais de démarrer. Les vraies valeurs vont dans `.env.local`, jamais suivi.
- Un commit atomique par unité logique, message clair, une branche par feature.
- Après toute modif : lancer les tests, relire le diff, corriger jusqu'au vert.
- Pas de sur-ingénierie. Architecture simple adaptée à l'échelle (assos scolaires).
- Multi-tenant : toute donnée métier est scopée à une `Association`.

## Documentation

- `docs/architecture.md` — vue d'ensemble, modèle de données, pourquoi.
- `docs/conventions.md` — nommage, patterns, structure.
- `docs/specs/` — une spec par feature, statut draft → done.
- `docs/decisions/` — ADR pour les choix structurants.
- `docs/chantiers.md` — file d'attente : bugs et features à venir, en lots, avec les arbitrages.

## Aiguillage — quand une idée arrive

- Nouvelle fonctionnalité → créer `docs/specs/<nom>.md` depuis `_template.md`
- Choix d'archi tranché → ajouter `docs/decisions/NNNN-<titre>.md`
- Travail en cours / état → mettre à jour `STATE.md`
- Bug à corriger maintenant → noter dans `STATE.md` puis traiter
- Idée pas encore mûre / à faire plus tard → une case dans `docs/chantiers.md`
