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>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
b89c1a80b7
commit
cd9b9b093c
@@ -0,0 +1,68 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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.yml` → `backend.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é :
|
||||
```bash
|
||||
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.
|
||||
Reference in New Issue
Block a user