# Contributing — Le Librodrome ## Architecture ``` app/ pages/ numerique/ # Section autonomie numérique index.vue # Vue d'ensemble (3 piliers) [slug].vue # Détail pilier (contenu YAML) economique/ # Section autonomie économique index.vue # Vue d'ensemble (monnaie libre, livre, productions) monnaie-libre.vue commande.vue # Commande du livre (Bookelis + librairie) productions-collectives.vue modele-eco/ index.vue # Couverture livre + sommaire chapitres [slug].vue # Lecteur de chapitre (Nuxt Content) citoyenne/ # Section autonomie citoyenne index.vue # Vue d'ensemble (decision, tarifs-eau) [slug].vue # Détail (contenu YAML) en-musique/ # Player audio evenement.vue admin/ # Back-office protégé pages/ index.vue # Liste toutes les pages YAML [...path].vue # Éditeur YAML (supporte les sous-dossiers) components/ book/Actions.vue # Boutons partagés du livre (player, PDF, chapitres, commande) home/BookSection.vue # Bloc couverture + CTAs (utilise BookActions) home/AxisBlock.vue # Bloc axe sur la home (supporte actions lien via `to`) home/AxisGrid.vue # Grille 3 axes + GrateWizard stores/palette.ts # 4 palettes saisonnières (été par défaut) ``` ## Contenu YAML API : `GET /api/content/pages/{path}` — supporte les chemins imbriqués (`numerique/logiciel-libre`). Admin : `PUT /api/admin/content/pages/{path}` + `GET /api/admin/content/pages` (liste). Les fichiers YAML sont dans `site/pages/`, organisés en sous-dossiers par section. ## Palettes 4 palettes dans `stores/palette.ts` : automne, hiver, printemps, été. - Défaut : **été** (premier visiteur) - Persisté en `localStorage('palette')` pour les visites suivantes - CSS : variables `--color-primary`, `--color-accent`, etc. + classe `.palette-light`/`.palette-dark` - Overrides light mode dans `main.css` (`.palette-light .text-white` → couleur adaptive) ## Shadoks Illustrations SVG inline sur chaque page, thématiques par section : - Numérique : métiers tech/industrie (codeuse, électricien, soudeuse...) - Économique : artisanat/agriculture (boulangère, potier, forgeron...) - Citoyenne : navigation/justice/théâtre (capitaine, avocate, comédien...) - Modèle éco : livre/édition (typographe, calligraphe, conteuse...) - Événement : spectacle (funambule, accordéoniste, jongleur...) Règles : corps compact, longues pattes, grands pieds plats, bec pointu, postures variées. CSS : `position: absolute`, `pointer-events: none`, `opacity 0.18-0.28`, animation float, `display: none` sur mobile. ## Redirections `server/middleware/redirects.ts` : - `/gestation/*` → section appropriée - `/modele-eco/*` → `/economique/modele-eco/*` - `/decision` → `/citoyenne/decision` - `/lire/*` → `/economique/modele-eco/*` - `/ecouter/*` → `/en-musique/*` ## Conventions - Commits en français, concis - Build prod vérifié avant push (`PORT=3099 node .output/server/index.mjs`) - Port dev : 3000 (fixe, jamais de fallback)