2.5 KiB
2.5 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/ # 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
server/
api/ # Endpoints API (admin, health)
middleware/ # Auth middleware
docker/
Dockerfile # Build multi-stage (dev + prod)
docker-compose.yml # Production (Traefik)
docker-compose.dev.yml # Dev Docker
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 |
| 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 |
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.
Intégration GrateWizard
- URL dev configurée dans
app/app.config.ts→localhost:3001 - URL prod :
https://gratewizard.ml - Ouverture en popup via
composables/useGrateWizard.ts - GrateWizard est un projet Next.js séparé (
/home/yvv/Documents/PROD/DEV/GrateWizard)
Contenu
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.
Commandes
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
- Composants Vue SFC avec
<script setup lang="ts">