Files
librodrome/CLAUDE.md
2026-02-25 16:05:43 +01:00

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.tsdevServer.port: 3000
GrateWizard 3001 package.jsonnext dev --port 3001
SejeteralO frontend 3009 frontend/nuxt.config.tsdevServer.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.tslocalhost: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">