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:
46
CLAUDE.md
Normal file
46
CLAUDE.md
Normal 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`.
|
||||
Reference in New Issue
Block a user