Starter open-source · Apache-2.0
Publiez sans page builder.
Kreiz est le noyau éditorial d’Astro : back-office privé, types de contenu déclarés en code, médias, formulaires, analytics et SEO — compilés en un site public entièrement statique. Vous gardez la présentation, le schéma et les migrations.
Téléchargez l’archive ZIP ou créez votre propre dépôt depuis le template GitHub.

Apache-2.0Astro 7Node 24pnpmVercel-ready
Honnête par construction
Kreiz fait une chose, et la fait entièrement : le moteur éditorial. Chaque projet garde sa marque, ses types, ses templates et ses mots.
Ce que Kreiz n’est pas
- un page builder
- un CMS hébergé
- un outil de workflow multi-rôles
- une plateforme e-commerce ou newsletter
- une marketplace de plugins ou de thèmes
Ce que Kreiz est
- un noyau éditorial complet, sans dépendance hébergée
- un admin privé : sessions, CSRF, journal d’audit append-only
- des snapshots publics figés à chaque publication
- un site public compilé, 100 % statique
Tout est inclus
Pas de marketplace, pas de plugins à assembler : le noyau couvre le cycle éditorial de bout en bout.
- 01
Back-office privé
Admin complet injecté par le Core : sessions signées, CSRF, journal d’audit append-only, CLI pour le premier administrateur.
- 02
Types de contenu en code
Déclarez les champs et le template ; les formulaires admin, la validation serveur et la preview sont générés.
- 03
Save ≠ Publish
Le site public ne lit que des snapshots figés. Enregistrer n’est pas publier : publier déclenche la reconstruction.
- 04
Médias
Upload direct signé vers S3, R2 ou MinIO, vérification serveur, variantes responsive servies par votre CDN.
- 05
Rich text
Éditeur Tiptap sur un document canonique versionné ; le HTML public est rendu par le Core, jamais stocké.
- 06
Formulaires de contact
Anti-spam en couches (jeton signé, honeypot, rythme), idempotence des soumissions, relais email optionnel.
- 07
Analytics privacy-first
Beacon statique sans cookie, IP pseudonymisée, dashboard SQL dans l’admin, rétention bornée.
- 08
SEO
Head résolue par le Core : canonical, Open Graph, sitemap, robots et JSON-LD générés au build.
Philosophie
Save ≠ Publish
Enregistrez
Les brouillons vivent en base, dans l’admin. Rien n’est public, rien ne se perd.
Publiez
La publication fige un snapshot immuable — la version servie ne peut plus bouger sous vos pieds.
Reconstruisez
Le rebuild est déclenché par deploy hook. Un rebuild raté n’abîme jamais le site servi.
« La base est la source de vérité ; le site statique n’en est que la projection. »
Déclarez. Le Core génère.
Le formulaire admin, la validation serveur et la preview naissent de cette seule déclaration.
export const articleType = defineContentType({
key: 'article',
label: 'Article',
routeNamespace: 'articles', // → /articles/<slug>
fields: {
excerpt: fields.text({ label: 'Accroche', required: true, maxLength: 300 }),
body: fields.richText({ label: 'Corps', required: true }),
},
template: 'src/templates/ArticleContent.astro',
});Votre prochain site part d’ici.
Clonez le starter, créez votre app, déployez. Le premier admin se crée en une commande.
$ git clone https://github.com/cyril-belin/kreiz.git mon-site