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:
sucupira
2026-07-24 23:57:37 -04:00
co-authored by Claude Opus 4.8
parent b89c1a80b7
commit cd9b9b093c
104 changed files with 14569 additions and 1383 deletions
+5
View File
@@ -0,0 +1,5 @@
# CSP spécifique à l'administration (Sveltia CMS) : doit joindre la forge Gitea.
<IfModule mod_headers.c>
Header always set X-Robots-Tag "noindex, nofollow"
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https://labola.o-k-i.net; font-src 'self' data:; connect-src 'self' https://labola.o-k-i.net; frame-ancestors 'none'; base-uri 'self'"
</IfModule>
+47
View File
@@ -0,0 +1,47 @@
# Sveltia CMS — administration des actualités du GONG.
# Backend git : forge Gitea/Forgejo de l'écosystème OKI (labola.o-k-i.net).
# Prérequis (une seule fois) : créer une application OAuth dans Gitea
# (Paramètres → Applications → Nouvelle application OAuth2),
# URL de redirection : https://gong.gp/admin/ — puis renseigner `app_id` ci-dessous.
# Voir DEPLOIEMENT.md.
backend:
name: gitea
repo: ORGANISATION-KA-INTERNATIONALE/gong.gp
branch: prod # ⚠️ doit correspondre à la branche déployée en production
base_url: https://labola.o-k-i.net
# app_id: "<client-id-oauth-gitea>"
# Édition locale sans authentification : `npx @sveltia/cms-cli` ou ?dev côté outillage.
# media : images des actualités auto-hébergées dans le dépôt.
media_folder: static/images/actualites
public_folder: /images/actualites
# Interface en français.
locale: fr
collections:
- name: actualites
label: Actualités
label_singular: Actualité
description: Communiqués, commémorations et annonces du GONG.
folder: content/actualites
create: true
delete: true
slug: '{{year}}-{{month}}-{{day}}-{{slug}}'
identifier_field: titre
summary: '{{titre}} — {{date}}'
sortable_fields: [date, titre]
fields:
- { name: titre, label: Titre, widget: string }
- name: date
label: Date de publication
widget: datetime
format: 'YYYY-MM-DD'
date_format: 'YYYY-MM-DD'
time_format: false
- { name: chapeau, label: Chapeau (résumé court), widget: text }
- { name: couverture, label: Image de couverture, widget: image, required: false }
- { name: couvertureAlt, label: "Texte alternatif de l'image", widget: string, required: false }
- { name: top, label: Mettre en avant, widget: boolean, default: false }
- { name: body, label: Contenu, widget: markdown }
+14
View File
@@ -0,0 +1,14 @@
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="noindex, nofollow" />
<title>GONG — Administration</title>
<link rel="icon" href="/favicon.ico" sizes="32x32" />
</head>
<body>
<!-- Sveltia CMS — bundle auto-hébergé (souveraineté + CSP script-src 'self'). -->
<script src="/admin/sveltia-cms.js"></script>
</body>
</html>
File diff suppressed because one or more lines are too long