Salta ai contenuti

Gestione dei contenuti

Il CMS di Proyecta è il livello dati principale della tua app — non solo post di blog e testi di marketing, ma i record reali su cui si basa la tua app. Le collezioni vengono provisionate e popolate con contenuti di esempio realistici prima che l’interfaccia esista, così la tua app viene pubblicata già collegata a dati modificabili fin dal primo build.

La maggior parte delle app Proyecta archivia i propri dati nel CMS integrato. Quando descrivi la tua app, Proyecta progetta un modello di dati, crea le collezioni necessarie e le popola con contenuti di esempio realistici — tutto prima che venga costruita una singola pagina. Le tue pagine leggono poi quei contenuti reali, modificabili dal proprietario, tramite hook tipizzati che l’AI configura per te. Per una panoramica completa di come tutto questo si integra, consulta Come funzionano i dati della tua app.

Non devi preoccuparti di nulla di tutto questo per iniziare — avviene automaticamente. Questa pagina spiega cosa c’è sotto, così puoi modellarlo a tuo piacimento.

I contenuti sono organizzati in collezioni e singleton:

Tipo Cos’è Esempi
Collezione Un tipo di contenuto con molte voci — uno schema, tante righe. posts, services, testimonials, catalogItems
Singleton Un tipo di contenuto con esattamente una voce — contenuto globale e unico. businessInfo, seoSettings

Una collezione è una struttura; ogni voce è un elemento di quella struttura (un post del blog, un servizio, una FAQ). Un singleton contiene un unico record modificabile — l’identità della tua azienda, oppure i testi dell’hero o di una sezione di pagina.

Proyecta include design di collezioni già pronti — campi sensati, suggerimenti per l’admin e contenuti di avvio — per il tipo di record che le aziende reali gestiscono: post e articoli di blog, servizi, un catalogo prodotti, un menù alimentare, testimonianze e recensioni, membri del team, una galleria fotografica, FAQ, eventi, sedi, risorse scaricabili, offerte di lavoro, corsi, tour e annunci di alloggi, tra gli altri.

Non devi scegliere da un elenco. Quando descrivi la tua app, Proyecta sceglie quelli richiesti dal tuo brief — il tipo di attività, le funzionalità richieste, la tua lingua — e li crea, pre-popolati con contenuti di esempio realistici. Se la tua app ha bisogno di qualcosa che nessuno di essi copre, Proyecta progetta una collezione personalizzata con i propri campi.

Per questo motivo, il pannello admin mostra le collezioni della tua app — non un elenco fisso. Si costruisce a partire dal modello di contenuti live della tua app, quindi tutto ciò che Proyecta ha creato per te, integrato o personalizzato, è esattamente ciò che vedi e modifichi. Due app Proyecta raramente hanno lo stesso insieme di collezioni, ed è una scelta precisa.

Ogni collezione è composta da campi tipizzati. I tipi di campo sono applicati end-to-end — il pannello admin mostra il giusto editor, e le tue pagine ricevono valori correttamente tipizzati.

Tipo di campo Usalo per
string Valori brevi su una riga — titoli, nomi, indirizzi.
text Un paragrafo di testo semplice.
markdown Testo ricco di formato lungo — corpi degli articoli, testi “chi siamo”.
slug Identificatore URL, derivato automaticamente da un altro campo (es. il titolo).
number Conteggi, valutazioni, durate.
money Un prezzo o importo in valuta — visualizzato e modificato come denaro.
boolean Flag on/off.
date Date del calendario.
datetime Timestamp — date di pubblicazione, orari di inizio eventi.
weeklyHours Orari di apertura per ogni giorno della settimana.
asset Un’immagine, video o PDF (archiviato come URL pubblico).
reference Un collegamento a una voce in un’altra collezione.
enum Un valore da un elenco fisso di opzioni.
array Un elenco di stringhe — tag, numeri di telefono, zone.
blocks Blocchi di contenuto impilabili — una pagina costruita da sezioni tipizzate.
json Dati strutturati che non rientrano in nessuno dei tipi sopra.

Una voce è un elemento in una collezione. Ogni voce ha uno stato:

  • Bozza — un lavoro in corso; non viene mai mostrato sul tuo sito live.
  • Pubblicato — live e visibile ai visitatori.
  • Archiviato — ritirato, tenuto fuori dalla vista.

Le tue pagine pubbliche vedono solo le voci pubblicate — le bozze e gli elementi archiviati vengono nascosti automaticamente, così puoi preparare i contenuti in sicurezza prima che vadano live.

Ci sono due modi per aggiungere e modificare contenuti — nessuno dei due richiede di toccare il codice:

  1. Chiedi all’AI in chat. Descrivi semplicemente la modifica e lei aggiorna il contenuto giusto per te:
    • "Aggiungi una testimonianza di María González: 'Il miglior servizio in città', 5 stelle."
    • "Cambia il tagline in Business Info con 'Café de especialidad en la Roma'."
    • "Segna le ultime cinque richieste del modulo contatto come lette."
  2. Il pannello admin della tua app. Ogni app pubblicata include un pannello admin integrato e protetto da accesso, dove tu (e il personale a cui hai concesso l’accesso) gestite contenuti e richieste dai moduli direttamente — un editor in stile foglio di calcolo per ciascuna collezione, più la casella di posta delle richieste. Si configura da solo a partire dal modello di contenuti live della tua app, quindi le nuove collezioni vi appaiono automaticamente. Consulta Pannello Admin.

Gestisci i tuoi contenuti CMS tramite il pannello admin della tua app o l’AI — un editor di contenuti integrato nel builder è in roadmap (vedi Prossimamente). Un browser di record in tempo reale per app con aggiornamenti live è in arrivo.

Le tue pagine leggono i contenuti tramite un insieme di hook tipizzati in @/hooks/useContent — e l’AI scrive quella configurazione per te. Descrivi la pagina; Proyecta genera i componenti che chiamano questi hook sulle tue collezioni reali. Raramente li tocchi direttamente, ma ecco cosa fanno:

Hook Cosa fa
useCollection('posts') Elenca le voci pubblicate di una collezione (con filtro/ordinamento/limite opzionale).
useEntry('posts', slug) Recupera una voce pubblicata tramite slug (pagine di dettaglio).
useSingleton('businessInfo') Legge un singleton (info aziendali, contenuto di pagina).
useFormSubmit('contactForm') Invia un modulo e riporta gli errori di validazione.
// Un indice del blog — esattamente il tipo di codice che l'AI genera per te
import { useCollection } from '@/hooks/useContent';
function BlogList() {
const { data: posts, isLoading } = useCollection('posts', { sort: 'published_at:desc' });
if (isLoading) return <Spinner />;
return posts?.map((post) => <PostCard key={post._id} post={post} />);
}

Quando Proyecta genera interfacce tipizzate per le tue collezioni, gli hook diventano completamente tipizzati (useCollection<Post>('posts')), così il tuo editor autocompleta ogni campo. Le letture vengono idratate al primo render da uno snapshot pre-generato — le pagine si renderizzano istantaneamente e in modo SEO-friendly, poi si aggiornano live in background.

I moduli sono una funzionalità di prima classe, non qualcosa che l’AI costruisce a mano. Inserisci un blocco form e lui mostra i campi, valida l’input, invia e mostra uno stato di successo:

<FormBlock form="contactForm" />

Anche i moduli sono già pronti — un modulo di contatto, una richiesta di preventivo, un modulo di prenotazione, un modulo d’ordine, un modulo di registrazione — e Proyecta collega quello giusto alle tue pagine. Le richieste arrivano nella casella di posta del pannello admin della tua app, e il proprietario riceve un’email quando ne arriva una nuova. Consulta Moduli per il quadro completo.

I contenuti possono essere tradotti in più lingue. I campi contrassegnati come localizzati archiviano un valore per lingua, e gli hook di lettura li risolvono tramite una catena di fallback (lingua richiesta → fallback configurati → predefinito) quando passi la lingua attiva del visitatore:

const { data: posts } = useCollection('posts', { locale: 'es' });

Le app in una sola lingua ignorano completamente le lingue — non c’è nulla da configurare. Per la storia più ampia della traduzione, consulta Internazionalizzazione.

Una release raggruppa diverse voci così che vadano live (o vengano non pubblicate) insieme — prepara una pubblicazione coordinata di contenuti (un lancio, una nuova pagina prodotto, un aggiornamento delle FAQ) e attivala tutta in una volta.

Nota: La pubblicazione automatica programmata non è ancora implementata. Una release con una data scheduled_at entra nello stato scheduled ma deve essere pubblicata manualmente. La pubblicazione automatica all’orario programmato è in arrivo.

Pattern comuni (lascia che l’AI configuri tutto)

Sezione intitolata “Pattern comuni (lascia che l’AI configuri tutto)”

Raramente scrivi questo a mano — descrivi quello che vuoi e Proyecta lo costruisce sulle collezioni reali:

  • "Costruisci un blog. Ogni post ha un titolo, un'immagine di copertina, un corpo in rich-text, una categoria e dei tag. Route pubbliche su /blog e /blog/[slug], dal più recente al più vecchio."
  • "Aggiungi una sezione FAQ che il proprietario può modificare, raggruppata per categoria."
  • "Aggiungi un elenco di servizi prenotabili con un modulo di richiesta preventivo."
  • "Rendi il sito bilingue — inglese e spagnolo — con un selettore di lingua."
  • "Popola le testimonianze con cinque recensioni realistiche per una caffetteria."

Il CMS è la sede predefinita per contenuti e record duraturi. Alcuni tipi di dati risiedono invece in sistemi dedicati:

Tipo di dato Dove si trova
Contenuti e record (post, servizi, annunci, FAQ, catalogo, prenotazioni) Proyecta CMS (questa pagina) — il default
Stato realtime / comportamentale (chat live, feed, presenza, stato di gioco) Store realtimein arrivo
Account utente e accesso Auth
Prodotti, ordini, abbonamenti, pagamenti Commerce
File caricati e media File e Media
Asset statici incorporati nel build la directory public/ nel tuo progetto

Il CMS è il default. Uno store realtime per comportamenti genuinamente realtime è in arrivo; anche allora, i contenuti duraturi e il catalogo commerce continueranno a risiedere nel CMS.

  • Editor di contenuti integrato nel builder — sfoglia e modifica le tue collezioni CMS direttamente dalla dashboard del builder (oggi: gestisci i contenuti tramite il pannello admin o l’AI).
  • Editor WYSIWYG per rich-text — modifica visuale per i campi markdown (oggi vengono modificati come markdown).
  • Auto-pubblicazione programmata — release che vanno live automaticamente all’orario schedulato.
  • Anteprima live delle modifiche ai contenuti sulla tua app.
  • Ruoli per i contenuti — permessi separati per editor e sviluppatori.