# exitchatcontrol × 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 migrate # (re)génère content/ depuis l'ancien site Astro (src/) pnpm dev # serveur de développement pnpm build # build statique dans build/ (prérend les 58 pages) pnpm preview # sert le build localement pnpm check # svelte-check (types + a11y) ``` ## Déploiement `build/` est un site statique : n'importe quel serveur de fichiers convient (nginx du `docker/` existant, YunoHost `my_webapp`, etc.). 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 src/lib/content/ chargeur build-time des fichiers ../content/ src/routes/ / (landing), /outils (annuaire filtrable), /outils/[slug] static/fonts/ 2 WOFF2 auto-hébergés (Atkinson Hyperlegible, Fraunces) scripts/ migrate-tools.mjs ```