# Lagé Chat Control × OKI — frontend Annuaire souverain d'outils libres. SvelteKit 2 + Svelte 5, site 100 % prérendu, zéro CDN tiers, zéro tracker. Voir [`ADR.md`](../ADR.md) pour la décision d'architecture et `../docs/` pour le design system et le guide de contenu. ## Prérequis Node ≥ 22.12, pnpm. ## Commandes ```sh pnpm install pnpm dev # serveur de développement pnpm build # build statique dans build/ (prérend toutes les pages) pnpm preview # sert le build localement pnpm check # svelte-check (types + a11y) pnpm audit:a11y # audit axe-core sur le build servi en local ``` ## Déploiement `build/` est un site statique : n'importe quel serveur de fichiers convient. Voir [`docs/DEPLOYMENT.md`](../docs/DEPLOYMENT.md) pour la mise en production sur un VPS (Caddy, nginx, YunoHost, Docker). Aucune dépendance cloud, aucun service à maintenir — un miroir = une copie du dossier. ## Arborescence ``` src/styles/ tokens, reset, base, layouts (cascade @layer) src/lib/i18n/ fr.json + gcf.json typés, store de langue (runes) src/lib/components/ ToolCard, DifficultyBadge, CategoryNav, SearchBar, LanguageSwitcher, EndMarker, ShortcutsDialog, OfflineBadge, AdoptButton src/lib/content/ chargeurs build-time des fichiers ../content/ (tools.server.ts, quiz.server.ts) src/routes/ / (landing), /outils (annuaire filtrable), /outils/[slug], /quiz, /contribuer src/service-worker.js précache + offline-first static/fonts/ 2 WOFF2 auto-hébergés (Atkinson Hyperlegible, Fraunces) scripts/audit-a11y.mjs audit axe-core (pnpm audit:a11y) ``` Le contenu éditorial (fiches d'outils, quiz, catégories) vit dans [`../content/`](../content/) à la racine du dépôt, pas dans `frontend/` — voir [`docs/CONTENT_GUIDE.md`](../docs/CONTENT_GUIDE.md) pour l'éditer.