All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- Structure par section : /numerique, /economique, /citoyenne (plus de /gestation) - Chaque section a index + sous-pages avec contenu YAML administrable - API content supporte les chemins imbriqués ([...path]) - Admin : liste des pages + éditeur par section - Page /economique : monnaie libre (picto Ğ1), modèle éco, productions collectives, commande livre - Page /citoyenne : decision (CTA Glibredecision), tarifs-eau (CTA SejeteralO) - BookActions : composant partagé (player, PDF, chapitres, commande) sur home, eco et modele-eco - GrateWizard remonté dans la section économique de la home - Palette été par défaut, choix persisté en localStorage - Fix lisibilité été (text-white/65 + variables CSS) - Shadoks thématiques sur toutes les pages (8-10 par page, métiers variés) - Redirections 301 : /gestation/*, /modele-eco/*, /decision, /lire/* - README, CONTRIBUTING, CLAUDE.md mis à jour Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.1 KiB
3.1 KiB
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/pagesliste toutes les pages,/admin/pages/{path}édite en YAML - Git sync auto en prod (ADMIN_GIT_SYNC=true)
Commandes
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
<script setup lang="ts"> - Shadoks SVG inline thématiques sur chaque page (hidden mobile)