Initialise le projet : documentation et squelette

Extension Firefox pour publier une sélection d'événements du calendrier
Nextcloud de L'Atelier du Huit vers l'agenda de la mairie de Cugnaux.

- README : vue d'ensemble et installation
- CLAUDE.md : guide agent et contraintes structurantes
- docs/RECHERCHE.md : faits techniques vérifiés (CalDAV, formulaire, agenda, ICS)
- docs/DECISIONS.md : choix d'architecture et leur pourquoi
- package.json : Bun comme outil de dev minimaliste (pas de build au runtime)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Pierre Martin
2026-06-29 23:40:13 +02:00
commit 328df2d181
6 changed files with 290 additions and 0 deletions

46
CLAUDE.md Normal file
View File

@@ -0,0 +1,46 @@
# Guide agent — Écho du Huit
Extension **Firefox** (Manifest V3) qui pousse une sélection d'événements du
calendrier Nextcloud de L'Atelier du Huit vers le formulaire de l'agenda mairie
de Cugnaux. Voir [`README.md`](README.md) pour la vue d'ensemble.
## Avant de coder
1. Lis [`docs/RECHERCHE.md`](docs/RECHERCHE.md) : faits **vérifiés** (URLs, ids
de champs, valeurs du thème, structure de l'agenda, cas limites de l'ICS).
Ne redécouvre pas ce qui y est déjà confirmé.
2. Lis [`docs/DECISIONS.md`](docs/DECISIONS.md) : choix actés et leur pourquoi.
Ne les relitige pas sans raison nouvelle.
3. Le backlog vit dans **Piaire** (tenant `perso`, projet `echo-du-huit`).
Le code est la seule source de vérité du comportement réel.
## Contraintes structurantes (ne pas violer sans accord)
- **JS vanilla, pas de build, pas de runtime.** L'extension tourne dans le
navigateur. Pas de Bun/Node au runtime, pas de bundler. Dépendance externe
uniquement si vendorée en `.js` (ex. `ical.js` de Mozilla pour le parsing).
Bun est autorisé **uniquement comme outil de dev** (`bun test`, vendoring) —
jamais embarqué dans l'extension livrée.
- **Aucun secret stocké.** L'accès Nextcloud passe par la session du navigateur
(`credentials: 'include'` + `host_permissions`). Ne jamais écrire de mot de
passe dans le repo ou la config.
- **Pas d'auto-submit du formulaire mairie.** On pré-remplit le DOM ; l'humain
relit, complète et envoie. Le formulaire est modéré et les descriptions
méritent souvent un enrichissement.
- **Image = manuelle.** Un content script ne peut pas remplir un `<input
type=file>`. L'extension aide à glisser l'affiche, ne l'injecte pas.
- **Statut partagé dans Nextcloud.** *ignoré* / *soumis* = tag `CATEGORIES`
écrit en CalDAV (visible par tous les bénévoles, durable). *publié* = dérivé
de l'agenda mairie. Pas d'état privé local pour ces statuts.
## Conventions
- Code simple et expressif ; commentaires seulement pour le *pourquoi*.
- Nouveaux paramètres/fonctions : obligatoires par défaut (optionnels seulement
si la rétrocompat l'exige).
- Messages et UI en français (public = bénévoles associatifs).
- TDD quand c'est pertinent.
## Ne pas committer
`config.local.json` (organisateur/email), artefacts de packaging, `.env`.