📦 Stack Technique Globale¶
Le projet Gallois Sisal articule deux forces technologiques majeures : 1. Un frontend vitrine Astro ultra-léger et accessible garantissant un score Lighthouse supérieur à 90. 2. Un moteur CMS & éditeur visuel Instatic permettant l'édition directe sur canevas, la connexion aux agents IA via MCP, et la publication instantanée.
🛠️ Composants de l'infrastructure¶
| Composant | Technologie | Rôle |
|---|---|---|
| Runtime Serveur | Bun (Bun.serve) |
Serveur haute performance, gestion des I/O asynchrones, worker threads natifs. |
| Frontend Public | Astro 5.x / HTML sémantique | Rendu côté serveur et pré-génération statique sans surcoût de framework côté client. |
| CMS & Éditeur Visuel | Instatic SPA (React 19 + Vite) | Interface d'administration modulaire, canevas d'édition visuelle multi-breakpoints. |
| Persistance de données | SQLite (bun:sqlite) ou Postgres (Bun.sql) |
Modèle de données agnostique, migrations synchronisées par dialecte. |
| Moteur d'exécution Sandbox | QuickJS-WASM dans Bun.Worker |
Exécution totalement sécurisée et isolée des plugins et scripts de modules. |
| Traitement d'images | sharp + BlurHash (Bun.Worker pool) |
Génération non-bloquante de formats WebP et responsive images en tâche de fond. |
| Hébergement & CDN | Cloudflare Pages & VPS Nginx | Distribution globale, certificats SSL automatiques et haute disponibilité. |
🔄 Flux de traitement des requêtes¶
┌─────────────────────────────────────────────────────────────┐
│ Bun Process │
│ │
│ server/index.ts → Point d'entrée principal │
│ ↓ │
│ server/router.ts → Routage strict TypeBox │
│ ↓ │
│ ┌──────────────────┬──────────────────┬───────────────┐ │
│ │ CMS API │ Static SPA Admin │ Public Render │ │
│ │ /admin/api/* │ /admin/* │ / & routes │ │
│ │ │ → dist/ │ → uploads/ │ │
│ │ → Repositories │ │ │ │
│ │ → DB Client │ │ │ │
│ └──────────────────┴──────────────────┴───────────────┘ │
│ ↓ │
│ server/db/client.ts → Postgres / SQLite │
│ │
│ ├── Bun.Worker Pool: Image Variants (Sharp + BlurHash) │
│ └── Bun.Worker: QuickJS-WASM Sandbox (Plugins & Code) │
└─────────────────────────────────────────────────────────────┘
🔒 Sécurité et Typage aux frontières¶
- TypeBox exclusif : Toutes les entrées HTTP, schémas de tools IA, manifestes de plugins et requêtes MCP sont validées via
@sinclair/typebox. - Zéro Zod : Aucune dépendance runtime Zod n'est autorisée sur le périmètre afin de garantir des performances maximales et une empreinte mémoire minimale.
- SSRF Guard & Sanitisation : Téléchargement distant d'images sous liste blanche IP stricte, re-validation à chaque redirection HTTP et assainissement SVG automatique.