# Librodrome Site vitrine du projet Le Librodrome — livre + chansons sur l'économie du don. ## Stack - **Nuxt 4** (Vue 3, TypeScript, Nitro) - **Modules** : Nuxt Content, Pinia, UnoCSS, VueUse, Nuxt Image - **Icônes** : Lucide + Phosphor (via @iconify-json) - **Package manager** : pnpm - **Déploiement** : Docker + Traefik, CI via Woodpecker ## Structure ``` app/ 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/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, docker-compose.yml, docker-compose.dev.yml ``` ## Ports dev (CRITIQUE) | Projet | Port | Config | |--------|------|--------| | **librodrome** | **3000** | `nuxt.config.ts` → `devServer.port: 3000` | | **GrateWizard** | **3001** | `package.json` → `next dev --port 3001` | | **SejeteralO frontend** | **3009** | `frontend/nuxt.config.ts` → `devServer.port: 3009` | | **SejeteralO backend** | **8000** | Makefile → `uvicorn --port 8000` | **Ne jamais changer ces ports.** ## Intégration GrateWizard - URL dev : `app/app.config.ts` → `localhost:3001` - URL prod : `https://gratewizard.axiom-team.fr` - Bloc GrateWizard dans la section économique de la home ## Contenu administrable - 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 ``` ## Conventions - Langue du site : français - Commits en français, style concis - CSS via UnoCSS (utility-first) + variables CSS palettes - Composants Vue SFC avec `