Files
gong.gp/DEPLOIEMENT.md
sucupiraandClaude Opus 4.8 cd9b9b093c Refonte complète en SvelteKit (méthode OKI, AI-Overview ready)
Reconstruit le site statique mono-page (Bulma + htmx + Strapi) en SvelteKit 2 +
Svelte 5 (runes) + TypeScript, 100 % statique (adapter-static), auto-hébergé.

- Contenu enrichi à partir du dossier documentaire sourcé : 28 pages (histoire,
  Mé 67, procès 1968, 9 fiches militants, idéologie, héritage, publications,
  charte, orientation, sources, FAQ, actualités, contact, mentions légales).
- Souveraineté : retrait de Bulma/htmx/mustache/ionicons/Plausible/Google Fonts
  et de l'API Strapi. Polices Archivo/Inter et sprite SVG auto-hébergés (zéro emoji).
- Identité GONG (drapeau vert/blanc/rouge), thème sombre par défaut + clair AA,
  cadences motion gwoka, KineticText, timeline, 404 kréyòl, PWA hors-ligne.
- SEO/AI-Overview : HTML sémantique, JSON-LD (Organization, Person, Event,
  FAQPage, Article...), hreflang, sitemap dynamique, robots/humans.txt.
- Sécurité : CSP hachée + en-têtes (.htaccess o2switch + _headers Cloudflare), HSTS.
- Actualités éditées via Sveltia CMS (git-based) ; Strapi retiré.

npm run build : vert · npm run check : 0 erreur / 0 warning · JS 97 Ko gzip.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 23:57:37 -04:00

3.1 KiB

Déploiement — gong.gp (SvelteKit statique)

Site 100 % statique (SvelteKit + adapter-static, tout pré-rendu). Aucun serveur Node n'est requis en production. Doctrine : souveraineté — zéro service tiers, tout auto-hébergé.

Build

npm install
npm run build      # → dossier build/
npm run preview    # prévisualisation locale

Le dossier build/ contient le site complet (HTML pré-rendu, _app/, fonts/, images/, sitemap.xml, sw.js, manifest.webmanifest, .htaccess, _headers, 404.html).

Hébergement

Option A — o2switch / Apache (mutualisé)

Copier le contenu de build/ à la racine web. Le .htaccess fourni gère : HTTPS forcé, en-têtes de sécurité, cache immuable, ErrorDocument 404 /404.html. Vérifier que mod_headers, mod_rewrite, mod_expires, mod_deflate sont actifs.

Option B — Cloudflare Pages

Build command : npm run build · Output directory : build. Le fichier _headers applique les en-têtes de sécurité et le CSP d'en-tête.

Dans les deux cas, le CSP script-src/style-src est porté par la balise <meta> hachée générée par SvelteKit (kit.csp) ; les _headers/.htaccess n'ajoutent que les directives d'en-tête (frame-ancestors, HSTS…).

Administration des actualités — Sveltia CMS

L'admin est servie à /admin/ (bundle Sveltia auto-hébergé, static/admin/sveltia-cms.js). Elle édite les fichiers content/actualites/*.md directement dans le dépôt Git (backend Gitea).

Configuration unique (à faire côté forge Gitea labola.o-k-i.net) :

  1. Créer une application OAuth2 : Paramètres → Applications → Nouvelle application OAuth2.
    • URL de redirection : https://gong.gp/admin/
  2. Reporter le Client ID dans static/admin/config.ymlbackend.app_id.
  3. Vérifier backend.branch = branche déployée en production.

Chaque publication depuis l'admin crée un commit ; un nouveau build/déploiement régénère le site. Le bundle Sveltia a été vendorisé depuis le paquet npm @sveltia/cms (mise à jour : recopier node_modules/@sveltia/cms/dist/sveltia-cms.js dans static/admin/).

Retrait de Strapi (api.gong.gp)

Le back-office Strapi (serveur Node + SQLite) n'est plus utilisé : les actualités passent par Sveltia (git-based) et le contenu historique est figé dans le dépôt (src/lib/data/gong.ts). Le dépôt api.gong.gp peut être archivé. Les éventuels articles Strapi existants sont à ré-exporter manuellement en content/actualites/*.md (front-matter : titre, date, chapeau, couverture, couvertureAlt, top + corps markdown).

Push sur la forge (labola.o-k-i.net)

Voir le mémo GITEA.md de l'écosystème OKI. En résumé :

git push origin svelte      # branche de travail
# après validation, fusionner dans la branche de production

Vérifications avant mise en ligne (DoD)

  • npm run build && npm run check : 0 erreur, 0 warning.
  • Aucun domaine tiers dans build/ (grep -rE 'cdnjs|jsdelivr|plausible|googleapis|api.gong').
  • sitemap.xml et robots.txt accessibles ; JSON-LD présents (Rich Results Test).
  • Lighthouse mobile ≥ 90/95/95/95.