3e60f48c5e
- Liens et assets via {base}, polices déplacées vers src/lib/assets (hachage Vite)
- Service worker base-aware, précache sur les pages prérendues
- CSP hash documentée : l'hôte ne doit pas fixer script-src
- Docs : déploiement Apache/YunoHost (DEPLOYMENT, APACHE_AUTOINDEX)
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 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 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 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/ à la racine du dépôt, pas dans frontend/ —
voir docs/CONTENT_GUIDE.md pour l'éditer.