# o-k-i.net Site web officiel de **ORGANISATION KA INTERNATIONALE (OKI)** — « Le numérique au service de vos luttes ». Version 3, reconstruite avec **SvelteKit + Svelte 5 (runes) + TypeScript**, entièrement pré-rendue en statique (`adapter-static`). L'ancienne version Eleventy est conservée sur la branche `main`. ## À propos ORGANISATION KA INTERNATIONALE (OKI) construit un internet différent : un espace où nos langues ont leur place, où nos données nous appartiennent vraiment, et où nos communautés se connectent sur des plateformes qu'on contrôle collectivement. Applis web sur mesure à tarifs solidaires pour associations, collectifs et organisations militantes. ## Technologies - **SvelteKit 2 / Svelte 5** — composants en runes, TypeScript strict - **adapter-static** — pré-rendu intégral, aucun serveur Node requis - **vite-imagetools** — images AVIF/WebP responsives générées au build - **vite-plugin-pwa** — service worker + shell hors-ligne - **CSS vanilla** — tokens de la charte OKI (`src/lib/styles/oki-tokens.css`), aucun framework - **Polices self-hébergées** — Archivo (600-900) et Inter (400-800) en woff2 (`static/fonts/`) - **Zéro service tiers** — aucune requête vers un CDN, Google Fonts ou autre domaine externe ## Développement ```bash npm install npm run dev # serveur de développement npm run build # build de production → build/ npm run preview # prévisualisation du build npm run check # svelte-check (types + a11y) ``` ## Structure ``` src/ app.html # coquille HTML (thème anti-FOUC, fonts, manifest) hooks.server.ts # attribut lang fr/en selon la route lib/ styles/ # oki-tokens.css (charte), base.css (primitives) i18n/ # bundles FR/EN (contenu éditorial, repris de la V2) assets/images/ # sources images (optimisées au build) components/ # Seo, Nav, Footer, sections/, motion/, icons/ motion/tokens.ts # gate reduced-motion, stagger syncopé gwoka routes/ +layout.svelte # skip-link, ScrollProgressBar, Nav, Footer, View Transitions +page.svelte # accueil FR en/+page.svelte # accueil EN dons/ # dons FR en/donate/ # dons EN presse/ # presse FR en/press/ # presse EN mentions-legales/ # légal FR en/legal-notice/ # légal EN offline/ # page hors-ligne (cible navigateFallback du SW) +error.svelte # 404/erreurs designée (microcopy KA) static/ fonts/ icons.svg images/ assets/press/ theme.js lang-redirect.js manifest.webmanifest 404.html robots.txt sitemap.xml _headers .htaccess ``` ## Internationalisation FR par défaut, EN sous `/en/`. Les bundles JSON de `src/lib/i18n/{fr,en}/` alimentent les composants via `getBundle(locale)`. Les correspondances d'URLs FR↔EN (hreflang, bascule de langue) sont dans `alternatePath()` (`src/lib/i18n/index.ts`). ## Sécurité & déploiement Headers de sécurité (CSP stricte `default-src 'self'`, HSTS, `X-Frame-Options: DENY`, `nosniff`, `Referrer-Policy`, `Permissions-Policy`) livrés en deux formats : `static/.htaccess` (Apache/o2switch) et `static/_headers` (Cloudflare Pages). Voir **DEPLOY.md**. ## Charte et documents de référence Ces documents de travail sont **locaux** (non versionnés, voir `.gitignore`) : - **`charte-oki-design-system.md`** — marque canonique : couleurs, typographie, motion (cadences gwoka), iconographie SVG (zéro emoji en interface), voix. Prime pour tout ce qui est marque. - **`recette-sveltekit-playbook-agent.md`** — méthode technique : principes, budgets performance, règles motion, DoD (sa version longue : `recette-sveltekit-15-sites-awwwards.md`). - **`AGENTS.md`** — point d'entrée pour les agents de code : impose l'usage de l'outillage Svelte MCP. - **`svelte-5_code_writer.md`** — commandes `@sveltejs/mcp` (doc Svelte 5 + `svelte-autofixer`, à passer sur tout composant modifié). - **`svelte_core_bestpractices.md`** — conventions runes Svelte 5 ($state/$derived/$effect, events, snippets, styles). - **`DEPLOY.md`** — déploiement o2switch (Apache) et Cloudflare Pages (versionné, lui). Thème sombre par défaut, thème clair en opt-in persisté (`localStorage['oki-theme']`). ## Licence AGPL-3.0 — voir `LICENSE`.