vai a Weirdoo.com

Case Study

Tools & Tips

101

White Paper e Guides

Curiosità

Sanity CMS Headless – Cos'è, come funziona e come creare due ambienti (dev e prod)

Ugo De Benedetto

June 26, 2025

Premessa

Se ti occupi di sviluppo frontend, prima o poi ti sei imbattuto nel classico dilemma: "Come gestiamo i contenuti?".
Puoi scrivere tutto hardcoded nel codice (funziona, finché il progetto è tuo e tuo soltanto), oppure affidarti a CMS tradizionali come WordPress. In alternativa, ci sono soluzioni più moderne, tipo Contentful, Strapi, Prismic e compagnia. Ma se ti interessa avere il massimo controllo, senza perdere in flessibilità, Sanity è una delle opzioni più solide e complete in circolazione.

Negli ultimi anni ha conquistato una fetta importante del mercato headless, e non solo perché è veloce e ben documentato. Sanity ha qualcosa in più: ti permette di modellare i contenuti come se stessi scrivendo componenti frontend. Se vieni dal mondo JavaScript o React, l'approccio ti sarà immediatamente familiare.

Un altro punto a favore: lo Studio, cioè l'interfaccia admin per gestire i contenuti, non è un pannello preconfezionato. È un'app React. Letteralmente. Puoi customizzarla, estenderla, modificarla e persino riscriverne i componenti. Questo significa che l’esperienza del content editor può essere perfettamente allineata alle esigenze del tuo progetto, senza compromessi.

In questa guida ci concentriamo su un problema specifico ma comune: come separare ambiente di sviluppo e ambiente di produzione, in modo da avere due versioni indipendenti del progetto – una per testare e fare modifiche, l’altra per servire contenuti pubblici.

Ma prima, chiariamo bene cosa offre Sanity e perché è diverso da altri CMS.

Cos'è Sanity (per davvero)

Sanity è un Headless CMS, il che significa che non genera HTML o pagine web direttamente: fornisce contenuti tramite API, e sei tu a decidere come e dove mostrarli, nel frontend che preferisci (Next.js, Astro, Angular, React Native, ecc.).

A differenza di molti altri CMS headless, però, Sanity mette a disposizione anche uno strumento potente lato sviluppo: Sanity Studio.

Vediamolo meglio, partendo dai tre blocchi fondamentali del sistema:

1. Il contenuto è codice

Con Sanity non definisci i tuoi content type cliccando su un'interfaccia visuale: li scrivi in JavaScript o TypeScript (possibilmente usa TS!). E questo è un vantaggio enorme se sei uno sviluppatore:

Un file di schema definisce esattamente cosa sono i tuoi documenti (es. Article, Product, Page) e quali campi hanno, come relazionarsi tra loro, se devono essere unici, opzionali, ordinabili, validati, ecc.

2. L’interfaccia (Studio) è un’app React

Lo Studio è un’interfaccia admin basata su React. È configurabile, estendibile e completamente personalizzabile. Vuoi un nuovo input per una gallery drag & drop? Puoi scriverlo come componente React. Vuoi cambiare il layout o i tab di editing? Si può fare.

E soprattutto: lo Studio fa parte del progetto. Lo puoi hostare tu, versionare, distribuire su ambienti diversi. Non sei vincolato a una UI centralizzata in cloud.

3. Tutto è pensato per la collaborazione

Sanity supporta editing in tempo reale, versioning dei documenti, permessi granulari, cronologia delle modifiche e preview in live mode. Il sistema è pensato non solo per il singolo sviluppatore, ma anche per team misti (dev + editori), con la possibilità di lavorare contemporaneamente senza conflitti.


In breve: caratteristiche principali

Cosa vedremo in questa guida

L’obiettivo è semplice: configurare due ambienti distinti in un progetto Sanity – uno per lo sviluppo (development), l’altro per la produzione (production).

Perché? Perché prima o poi vorrai testare uno schema nuovo, mostrare una bozza a un cliente o fare debug su contenuti reali senza rischiare di far crollare la home del sito in diretta.

Ti guiderò passo dopo passo, ma senza perdere tempo su concetti troppo basilari: ci rivolgiamo a chi già sviluppa con strumenti moderni e ha familiarità con ambienti, variabili, deploy e frontend modulare.

Pronti? Iniziamo.

Installazione rapida di Sanity

Per iniziare, creiamo il nostro progetto Sanity:

npm create sanity@latest

# oppure

yarn create sanity

Ti verrà chiesto di:

Il risultato sarà una cartella con lo Studio (l’interfaccia admin) e tutto il necessario per iniziare.

Lancia il progetto:

npm run dev

L’interfaccia sarà disponibile su http://localhost:3333.

Abbiamo ora creato il nostro progetto con Sanity, e come puoi facilmente notare è un’app React personalizzabile in tutto e per tutto.

Creare due ambienti su Sanity: sviluppo e produzione, senza farsi del male

Ed eccoci al cuore della nostra guida,se hai iniziato a usare Sanity per un progetto serio (e se sei arrivato fin qui, lo è), probabilmente ti stai chiedendo:

“Ma come separo il contenuto reale da quello che sto sperimentando in locale?”

Spoiler: usare un solo ambiente (production) per tutto non è sostenibile. Né per chi sviluppa, né per chi scrive contenuti. Prima o poi qualcuno pubblicherà un titolo tipo “TEST LOREM XYZ” sulla home del sito. Meglio pensarci prima.


Due ambienti, due dataset

Il modo più semplice (e ufficiale) per gestire ambienti separati su Sanity è creare due dataset distinti:

Se conosci già un minimo di Sanity, sai che un dataset è un contenitore isolato di contenuti. Ne puoi creare quanti vuoi (finché stai nel piano), e ogni dataset può avere anche permessi e token separati.

1. Creare il dataset di sviluppo

Apri il terminale nella root del progetto e digita:

sanity dataset create development

Ti verrà chiesto se vuoi copiare i dati da un altro dataset (scegli production se vuoi clonare la struttura e iniziare con una base reale). In pochi secondi hai due ambienti separati.

2. Usare variabili di ambiente per passare da uno all’altro

Invece di toccare a mano il nome del dataset nel file di configurazione ogni volta, conviene usare due file .env diversi:

.env.development:

SANITY_STUDIO_API_DATASET=development

.env.production:

SANITY_STUDIO_API_DATASET=production

Nel file sanity.config.ts:

dataset: process.env.SANITY_STUDIO_API_DATASET || 'production',

Così, quando lanci npm run dev, lavori sul dataset development. Quando deployi, puoi decidere su quale ambiente farlo, senza confusione o rischi.

3. Due deploy separati (opzionale ma consigliato)

Se vuoi tenere tutto ancora più ordinato, puoi deployare due versioni del tuo Sanity Studio:

Ecco come:

# Deploy dell’ambiente di produzione

SANITY_STUDIO_API_DATASET=production sanity deploy

# Deploy dell’ambiente di sviluppo

SANITY_STUDIO_API_DATASET=development sanity deploy

Non è obbligatorio, ma rende la vita più semplice se lavorano più persone sul progetto (developer e content editor inclusi).

4. Token diversi per dataset diversi

Dal pannello Sanity Manage, puoi creare due token API con permessi mirati:

Questo approccio è utile anche in CI/CD, per evitare che uno script di deploy modifichi dati in produzione per errore.

5. Integrare dataset diversi nel frontend

Nel frontend, puoi decidere quale dataset usare in base all’ambiente. Ecco un esempio semplice semplice con Next.js:

const dataset = process.env.NODE_ENV === 'production' ? 'production' : 'development';

const client = createClient({

 projectId: process.env.SANITY_PROJECT_ID,

 dataset,

 apiVersion: '2023-01-01',

 useCdn: true,

});

Questo ti permette di fare tutto quello che serve:

6. Clonare contenuti tra ambienti

Capita spesso: vuoi partire da un clone dei dati di produzione per testare qualcosa in sviluppo. Lo puoi fare in due righe con la CLI:

# Esporta i dati da production

sanity dataset export production backup.tar.gz

# Importali in development

sanity dataset import backup.tar.gz development

Questo è anche un buon sistema di “backup manuale” prima di cambiare qualcosa di grosso nello schema.

7. Quando due ambienti fanno davvero la differenza

Qualche scenario concreto:

In sintesi

Sanity ti permette di lavorare come in un progetto software vero e proprio: ambienti separati, deploy controllati, contenuti isolati. È una struttura che rispecchia il modo moderno (e sano) di sviluppare e gestire contenuti: quello dove il codice, i dati e i ruoli delle persone sono tenuti separati, ma comunicano bene tra loro.

Configurare due ambienti distinti con dataset diversi richiede pochissimo: in meno di 10 minuti hai una base solida per gestire sviluppo e produzione in modo indipendente, e già questo ti salva da tutta una serie di problemi tipici dei CMS “monolitici”.

Ma il vero valore arriva nel tempo. Separare development da production significa:

In pratica, si lavora meglio. Con più ordine, più controllo e meno rischi.
E questo vale sia se stai sviluppando un blog statico da solo, sia se stai lavorando su un portale multi-lingua con team distribuiti.

Inoltre, il sistema è flessibile: puoi partire con due ambienti, ma scalarlo facilmente se serve. Aggiungere un dataset per il QA? Fattibile. Creare un ambiente staging con contenuti e schema separati? Anche. Automatizzare tutto da CI? Idem.

Insomma: Sanity ti dà gli strumenti per lavorare come un team moderno, anche quando il team è una sola persona. Conviene approfittarne fin da subito!

Condividi l'articolo

ARTICOLI CORRELATI

ARTICOLI CORRELATI

ESPLORA LE CATEGORIE

ESPLORA LE 
CATEGORIE