With nothing
The client emails you
- A comma to fix becomes a ticket.
- You bill ten minutes or you give them away.
- The site goes stale because nobody touches it.
inline-core 2.1.0 · v1 scope frozen
Content lives in versioned JSON files. Astro injects them at build time. An overlaid interface makes them editable right there in the page — and publishing writes a commit. No CMS, no database, no application server to watch over.
Read the documentation Try the simulator
$ npm create inline@latest my-site
$ pnpm create inline my-site
$ bun create inline my-site
A fresh site, editable locally, in four commands.
Menuiserie sur mesure
Agencement, restauration, pose. Depuis 1974.
+images/fournil-au-petit-matin.webp210 Ko
Aucun fichier pour la vidéo : le schéma n’en retient que le fournisseur et l’identifiant.
The site
The visitor gets pre-built HTML. Nothing to query, nothing to wake up.
The key
One key, once, on /admin. No account to create, no password to reset.
Editing
The overlay finds the editable fields and makes them editable where they are.
The media
The photo is cropped and converted to WebP in the browser before it leaves. The video never enters the repository: the schema keeps only the provider and the id.
Publishing
The changes go to the repository, signed by a machine account with restricted rights.
Going live
The public site is regenerated. The content history is the Git history.
No video, no editing: the sequence above reproduces the six states a change actually goes through. Run the sequence for real →
The gesture
This is exactly what a change goes through, from the visit to the deployment.
The problem
Between “the client can change nothing” and “let us install a full CMS”, a step was missing. inline is exactly that step.
With nothing
With a CMS
With inline
How it works
The reading flow knows nothing about editing. The editing flow never writes into the live site: it writes into the repository, and lets the build chain do its job.
The consequenceContent and code share one history. Rolling back is a git revert, not a backup restore.
What it looks like
No intermediate language to learn: JSON, a schema, an Astro component.
{
"titre": "Berthaud Workshop",
"accroche": "Bespoke joinery since 1974.",
"services": [
{ "id": "svc-1", "nom": "Fitting", "texte": "Kitchens and bookcases." },
{ "id": "svc-2", "nom": "Restoration", "texte": "Antique furniture and floors." }
]
}
import { z } from 'zod';
export const home = z.object({
titre: z.string().min(1),
accroche: z.string().min(1),
services: z.array(
z.object({
id: z.string(),
nom: z.string(),
texte: z.string(),
}),
),
});
---
import { field, list } from 'inline-core';
import home from '../../content/home.json';
---
<h1 {...field('home.titre')}>{home.titre}</h1>
<p {...field('home.accroche')}>{home.accroche}</p>
<ul>
{home.services.map((service) => (
<li {...list('home.services', service.id)}>
<h2 {...field('nom')}>{service.nom}</h2>
<p {...field('texte')}>{service.texte}</p>
</li>
))}
</ul>
npm create inline@latest my-site -- --nom "My site" --courriel contact@example.com
cd my-site && npm install
npm run mock:git # fake local repository, in a first terminal
npm run build # build the site
npm run serve:functions # serve the site AND the functions
What it does
Every line below is implemented and documented. The v1 scope is frozen: what is missing is missing on purpose.
The documentation
Written to be read once in order, then consulted in pieces. Two complete workshops add a guided path, from the first “npm create” to going live. Bilingual, with a search palette and an editing simulator.
Tutorials
Three pages, two languages, every content type. Twelve steps, from the first “npm create” to the first publish.
Tutorials
An existing site — pages, stylesheet, script, images — ported file by file, without rebuilding it.
Understand
The real problem, the options ruled out, and the decisions that follow.
Get started
Requirements, scaffolding, site key, fake repository, first publish.
Build
Three field types, lists with stable ids, one Zod schema.
Edit
The client journey replayed in the page: key, overlay, publish, conflict.
Ship
Repository, machine account, restricted token, CI, deployment.
Operate
The real failures, their cause, and the command that fixes them.
Reference
Variables, commands, limits and error messages — the page you keep open.
Follow the setup guide Read “Why this tool exists” Open the documentation