Next.js CMS per siti di clienti
Un CMS per Next.js per siti di clienti, scritti dal tuo agente
jtakeit è un CMS per Next.js basato su git: il tuo agente genera un export statico in un repository che hai tu, il titolare modifica toccando il testo sulla pagina e la piattaforma gestisce moduli, prenotazioni, hosting e dominio.
$ npx create-next-app@latest client-site --ts --app
$ cd client-site
# next.config.mjs: output 'export', basePath from SITE_URL
$ npm run build
$ ls dist
404.html _meta.json _next index.html robots.txt sitemap.xml
$ git push origin main
# then, over MCP: validate_catalogue → commit_and_build01/ cosa serve
Cosa serve a un Next.js CMS per siti di clienti
Un sito cliente costruito con Next.js ha bisogno di più di un posto dove tenere i testi. Il titolare deve poter cambiare i propri testi senza chiamarti, e il sito deve comunque ricevere richieste di contatto, accettare prenotazioni e permettere al cliente di andarsene con i suoi dati.
Modifiche che non rompono il design
Il titolare tocca il testo sulla pagina e compila solo i campi che il catalogo dichiara. Nessun pulsante per aggiungere pagine o blocchi, per scelta.
Contenuti nel tuo repository
I testi pubblicati sono JSON nel repository git che hai tu. Ogni salvataggio è un commit.
Moduli di contatto
I moduli sono protetti dallo spam, e le richieste arrivano su Telegram, via email o nella casella del pannello.
Prenotazioni pagate
Il modulo prenotazioni manda le prenotazioni pagate direttamente sullo Stripe dell’attività.
Un’anteprima prima di pagare
Il cliente approva il sito vero, in anteprima, prima che vada online.
Una via d’uscita
Richieste e prenotazioni si esportano in CSV e JSON. L’export non richiede mai un abbonamento attivo.
02/ git o api
Basato su git, o un headless CMS per Next.js?
Un headless CMS conserva i contenuti in un proprio database e li serve tramite un’API — adatto quando un team editoriale pubblica su un sito, un’app e altro ancora. Un sito cliente ha un solo titolare e un solo sito: per questo jtakeit tiene i testi nel repository, accanto al codice.
| Un tipico headless CMS | jtakeit | |
|---|---|---|
| Contenuti pubblicati | Nel database del CMS, letti tramite la sua API | JSON nel tuo repository |
| Come li ottiene la build | Una chiamata API dalla build o dal server | Un file che la piattaforma assembla per ogni build |
| Un salvataggio | L’aggiornamento di un record | Un commit; le bozze restano nel database della piattaforma |
| Dove modifica il titolare | Un’app di amministrazione separata | Sulla pagina stessa, toccandone il testo |
| Moduli, prenotazioni, hosting | Fuori dal CMS, da aggiungere a parte | Gestiti dalla piattaforma, con fatturazione, backup e dominio |
| Il sito com’era a marzo | Dipende dalla cronologia del CMS | Un solo comando in git |
03/ export statico
Export statico di Next.js su jtakeit
La piattaforma fa la build di ogni sito allo stesso modo: esegue la build del progetto, poi serve la cartella che la build scrive. Next.js si adatta come export statico — HTML scritto al momento della build, senza nessun server in esecuzione quando qualcuno visita il sito.
// next.config.mjs
const site = new URL(process.env.SITE_URL ?? 'http://localhost:3000/');
export default {
output: 'export', // static HTML, no server at request time
basePath: site.pathname.replace(/\/$/, ''), // '' live, '/p/<slug>' in preview
trailingSlash: true, // /about/index.html, not /about.html
images: { unoptimized: true },
};
// package.json — the platform runs `npm run build` and serves dist/
"scripts": { "build": "next build && rm -rf dist && cp -R out dist" }
// public/_meta.json — copied into dist/ with the rest of public/
{ "immutable": ["/_next/static/"] }// lib/jtk.ts — runs at build time, never in the browser
import { readFileSync } from 'node:fs';
const file = process.env.JTK_CONTENT_FILE;
export const published = file ? JSON.parse(readFileSync(file, 'utf8')) : null;
// data-jtk-path only when the platform asks for it
export const tap = (path: string) =>
process.env.PUBLIC_JTK_ANNOTATE ? { 'data-jtk-path': path } : {};
// app/page.tsx
<h1 {...tap('blocks[0].title')}>{hero.title}</h1>
// app/robots.ts
export const dynamic = 'force-static';
const site = process.env.SITE_URL!.replace(/\/?$/, '/');
export default function robots() {
return { rules: { userAgent: '*', allow: '/' },
sitemap: new URL('sitemap.xml', site).href };
}Impostate a ogni build
SITE_URLl’indirizzo del sito: l’host per il canonical e la sitemapPUBLIC_JTK_ANNOTATEse impostata, segna ogni campo che il titolare può modificareJTK_CONTENT_FILEdove sono stati assemblati i contenuti pubblicati che questa build deve leggere
Cosa deve contenere la build
- Una pagina propria per ogni indirizzo — ogni pagina nella sua cartella, non un file HTML sciolto accanto agli altri.
- Asset che funzionano all’indirizzo dell’anteprima. Un’anteprima è servita sotto un percorso tutto suo, quindi il percorso di base si ricava dall’indirizzo del sito impostato dalla piattaforma.
- Una pagina 404, che l’export statico scrive per te.
- Un robots.txt che lascia entrare i crawler, e una sitemap sull’indirizzo del sito.
- Un canonical su quell’host in ogni pagina, e nessun noindex da nessuna parte — la piattaforma rifiuta una build che ne contiene uno.
- Una nota sulla cache che segna gli asset con hash di Next come immutabili, così restano in cache per sempre.
- Il catalogo di ciò che il titolare può modificare, scritto a mano o con un tuo strumento e verificato dalla piattaforma. I moduli inviano le richieste alla piattaforma.
04/ scritto dal tuo agente
Next.js, con il tuo agente che imposta il contratto
Astro è lo scaffold che jtakeit fornisce. Su Next.js non c’è uno starter da clonare: tu — o il tuo agente AI, per esempio Claude Code tramite il server MCP di jtakeit — organizzi il progetto secondo il contratto documentato, e la piattaforma lo verifica come verifica qualsiasi altro sito.
| Scaffold Astro | Export statico Next.js | |
|---|---|---|
| Punto di partenza | Lo scaffold Astro di jtakeit | Il tuo progetto Next.js |
| Catalogo | Generato e verificato dallo strumento del catalogo dello scaffold | Scritto a mano o con un tuo strumento |
| Moduli e specimen | Inclusi | Da costruire tu; i moduli inviano le richieste alla piattaforma |
| Dipendenze | Preinstallate | Installate dalla tua build |
| Una build | Meno di un minuto | Circa 90 secondi |
Come funziona il flusso con Claude Code →
Come si dichiarano le modifiche sullo scaffold Astro →
05/ scegliere
Scegliere il miglior CMS per siti Next.js di clienti
Parti da ciò che il sito deve fare quando qualcuno lo visita. Se ha bisogno del server al momento della richiesta — incremental static regeneration, API route, middleware, server action o pagine renderizzate a ogni richiesta — jtakeit non è lo strumento giusto: serve solo output statico, con qualsiasi framework.
Se il sito si può generare in anticipo, la domanda diventa chi lo modifica. jtakeit è per sviluppatori i cui clienti devono poter cambiare i propri testi — e nient’altro — senza chiamarti, e che preferiscono non gestire da soli moduli, prenotazioni, fatturazione, backup, hosting e dominio.
Non sei legato a Next.js? L’Astro CMS per siti di clienti è lo scaffold fornito e fa la build in meno di un minuto. Come funziona la modifica basata su git con qualsiasi generatore è spiegato nella pagina sul CMS statico per siti di clienti.
06/ domande
Domande sul Next.js CMS
- jtakeit supporta Next.js?
- Sì, come export statico. La piattaforma esegue la build del progetto e serve la cartella che la build scrive, quindi un sito Next.js funziona se viene generato in anticipo come export statico e copiato in quella cartella. Astro è lo scaffold che jtakeit fornisce; su Next.js organizzi tu il progetto secondo lo stesso contratto documentato.
- Posso usare l’App Router?
- L’App Router può produrre un export statico purché nulla nel sito abbia bisogno di un server al momento della richiesta: niente incremental static regeneration, niente route handler o server action eseguiti a ogni richiesta, niente middleware e nessun rendering che dipenda dalla richiesta. È un limite dello static export di Next.js stesso, quindi verifica la tua app con la documentazione di Next.js sullo static export.
- Esiste uno starter ufficiale per Next.js?
- No. Non esiste uno starter, un plugin o un SDK per Next.js. Lo scaffold che jtakeit fornisce è Astro. Su Next.js sei tu — o il tuo agente AI — a impostare il contratto documentato: la build scrive nella cartella che la piattaforma serve, legge i testi pubblicati da un file che la piattaforma prepara, e il catalogo di ciò che il titolare può modificare si scrive a mano o con un tuo strumento e viene verificato dalla piattaforma.
- Quanto dura una build?
- Circa 90 secondi per un sito che non usa lo scaffold Astro, perché la build installa le tue dipendenze. Lo scaffold Astro ha le dipendenze preinstallate e fa la build in meno di un minuto.
- Come modifica il cliente un sito Next.js?
- Toccando il testo sulla pagina. Il catalogo del sito dichiara quali campi può compilare il titolare, e quando la piattaforma lo richiede, le tue pagine segnano quei campi. Ogni salvataggio è un commit nel tuo repository, e la build successiva legge i testi pubblicati dal file che la piattaforma prepara.
- Quanto costa?
- Registrarsi, realizzare il sito e vederlo in anteprima è gratis. Quando un sito va online paghi un prezzo all’ingrosso per sito online, mensile o annuale, e al tuo cliente fai pagare il tuo prezzo — su Next.js come su Astro. Le cifre sono nella pagina dei prezzi.
07/ prova gratis
Provalo su un vero sito cliente
Registrati nel pannello e realizza il tuo primo sito cliente — sullo scaffold Astro o come export statico di Next.js. Paghi un prezzo all’ingrosso solo quando un sito va online.
Prova gratisadmin.jtakeit.com
- Gratis finché un sito non va online
- Poi un prezzo all’ingrosso per sito online, da €5 al mese
- Il codice resta nel tuo repository git