diff --git a/CLAUDE.md b/CLAUDE.md index 04127cb..ccd5e78 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -14,26 +14,36 @@ Site vitrine du projet Le Librodrome — livre + chansons sur l'économie du don ``` app/ - pages/ # Routes : index, lire/, ecouter/, autonomie, evenement, gratewizard, a-propos, admin/ - components/ # admin, book, content, home, layout, player, song, ui - composables/ # useAudioPlayer, useBookData, useGrateWizard, usePlaylist, usePageContent, useSiteContent... - assets/css/ # main.css (UnoCSS) -data/ - pages/ # Contenu YAML par page (home, lire, ecouter, autonomie, evenement...) - site.yml # Config globale du site + pages/ + numerique/ # Autonomie numérique (index + [slug] détail) + economique/ # Autonomie économique (index, monnaie-libre, commande, productions-collectives) + modele-eco/ # Livre : sommaire + chapitres [slug] + citoyenne/ # Autonomie citoyenne (index + [slug] détail) + en-musique/ # Player audio + evenement.vue # Événement + admin/ # Back-office (pages/, book/, songs, messages, media) + components/ + book/Actions.vue # Boutons partagés livre (player, PDF, chapitres, commande) + home/ # BookSection, AxisBlock, AxisGrid, HeroSection, Messages + admin/, player/, song/, ui/ + composables/ # useAudioPlayer, useBookData, useGrateWizard, usePageContent... + stores/palette.ts # 4 palettes saisonnières (été par défaut, persisté localStorage) + assets/css/ # main.css (UnoCSS + overrides light mode) +site/ + pages/ # Contenu YAML par section (numerique/, economique/, citoyenne/) + site.yml # Config globale (nav, footer, GrateWizard) + bookplayer.config.yml # Config player/chapitres server/ - api/ # Endpoints API (admin, health) - middleware/ # Auth middleware + api/content/pages/[...path].get.ts # GET pages YAML (chemins imbriqués) + api/admin/content/pages/[...path].put.ts # PUT pages YAML + api/admin/content/pages.get.ts # Liste toutes les pages + middleware/redirects.ts # 301 : /gestation, /modele-eco, /decision, /lire docker/ - Dockerfile # Build multi-stage (dev + prod) - docker-compose.yml # Production (Traefik) - docker-compose.dev.yml # Dev Docker + Dockerfile, docker-compose.yml, docker-compose.dev.yml ``` ## Ports dev (CRITIQUE) -Chaque projet a un port fixe pour éviter les conflits Nuxt auto-increment : - | Projet | Port | Config | |--------|------|--------| | **librodrome** | **3000** | `nuxt.config.ts` → `devServer.port: 3000` | @@ -41,32 +51,32 @@ Chaque projet a un port fixe pour éviter les conflits Nuxt auto-increment : | **SejeteralO frontend** | **3009** | `frontend/nuxt.config.ts` → `devServer.port: 3009` | | **SejeteralO backend** | **8000** | Makefile → `uvicorn --port 8000` | -Script de gestion : `/home/yvv/Documents/PROD/DEV/dev-ports.sh` (status/kill/clean/start) - -**Ne jamais changer ces ports.** Si un port est occupé, tuer le process parasite plutôt que laisser Nuxt auto-incrémenter. +**Ne jamais changer ces ports.** ## Intégration GrateWizard -- URL dev configurée dans `app/app.config.ts` → `localhost:3001` +- URL dev : `app/app.config.ts` → `localhost:3001` - URL prod : `https://gratewizard.axiom-team.fr` -- Ouverture en popup via `composables/useGrateWizard.ts` -- GrateWizard est un projet Next.js séparé (`/home/yvv/Documents/PROD/DEV/GrateWizard`) +- Bloc GrateWizard dans la section économique de la home -## Contenu +## Contenu administrable -Le contenu des pages est dans `data/pages/*.yml` et chargé via `composables/usePageContent.ts`. Le contenu riche (articles) utilise Nuxt Content avec des fichiers Markdown. +- YAML dans `site/pages/` organisé par section (sous-dossiers) +- API supporte les chemins imbriqués (`numerique/logiciel-libre`) +- Admin : `/admin/pages` liste toutes les pages, `/admin/pages/{path}` édite en YAML +- Git sync auto en prod (ADMIN_GIT_SYNC=true) ## Commandes ```bash pnpm dev # Dev server sur :3000 pnpm build # Build production -pnpm generate # Génération statique ``` ## Conventions - Langue du site : français - Commits en français, style concis -- CSS via UnoCSS (utility-first), pas de framework CSS externe +- CSS via UnoCSS (utility-first) + variables CSS palettes - Composants Vue SFC avec ` diff --git a/app/components/book/ChapterNav.vue b/app/components/book/ChapterNav.vue index 2ff2559..e4657bf 100644 --- a/app/components/book/ChapterNav.vue +++ b/app/components/book/ChapterNav.vue @@ -6,7 +6,7 @@