41 lines
1.4 KiB
Markdown
41 lines
1.4 KiB
Markdown
|
|
# 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
|
|||
|
|
```
|