db5a997e50
Architecture décidée et documentée dans ADR.md : SvelteKit natif en fichiers plats plutôt que Strapi (55 outils, données statiques, souveraineté et budget performance prioritaires — doctrine §1.2, §4.4). - frontend/ : SvelteKit 2 + Svelte 5 (runes), adapter-static, 58 pages prérendues, CSS natif en @layer (reset→tokens→base→layouts→components), tokens oklch(), container queries, typo fluide clamp(), 2 polices WOFF2 auto-hébergées (Atkinson Hyperlegible, Fraunces), zéro CDN tiers - i18n FR/gcf typé (clé manquante = erreur de build), bascule Kréyòl persistée en localStorage, micro-textes créoles (« Ou pa manké ayen ») - Composants : ToolCard, DifficultyBadge (forme+texte+couleur, jamais la couleur seule), CategoryNav (≤5 entrées, divulgation progressive), SearchBar (raccourci /), LanguageSwitcher, EndMarker - content/ : 55 fiches migrées depuis src/ (script frontend/scripts/ migrate-tools.mjs, idempotent), licences SPDX reprises de directory.json - docs/ : DESIGN_SYSTEM.md et CONTENT_GUIDE.md Budgets vérifiés : JS 41 Ko gzip, CSS 2,9 Ko gzip, svelte-check 0 erreur. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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 pour la
décision d'architecture et ../docs/ pour le design system et le guide
de contenu.
Prérequis
Node ≥ 22.12, pnpm.
Commandes
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