Gestionarea Conținutului
CMS-ul Proyecta este stratul principal de date al aplicației tale — nu doar articole de blog și texte de marketing, ci înregistrările reale pe care se construiește aplicația ta. Colecțiile sunt configurate și populate cu conținut de exemplu real înainte ca interfața să existe, astfel încât aplicația ta este livrată conectată la date editabile încă din prima versiune.
Majoritatea aplicațiilor Proyecta își stochează datele în CMS-ul integrat. Când descrii aplicația ta, Proyecta proiectează un model de date, creează colecțiile necesare și le populează cu conținut de exemplu realist — totul înainte ca o singură pagină să fie construită. Paginile tale citesc apoi acel conținut real, editabil de proprietar, prin hook-uri tipizate pe care AI-ul le configurează pentru tine. Pentru imaginea de ansamblu a modului în care toate acestea se îmbină, consultă Cum funcționează datele aplicației tale.
Nu trebuie să te gândești la nimic din toate acestea pentru a începe — se întâmplă automat. Această pagină explică ce se află dedesubt, astfel încât să poți modela lucrurile.
Colecții și singleton-uri
Secțiune intitulată „Colecții și singleton-uri”Conținutul este organizat în colecții și singleton-uri:
| Tip | Ce este | Exemple |
|---|---|---|
| Colecție | Un tip de conținut cu multe intrări — o schemă, multe rânduri. | posts, services, testimonials, catalogItems |
| Singleton | Un tip de conținut cu exact o intrare — conținut global, unic. | businessInfo, seoSettings |
O colecție este o formă; fiecare intrare este un element de acea formă (un articol de blog, un serviciu, un FAQ). Un singleton conține o singură înregistrare editabilă — identitatea afacerii tale sau textele pentru hero/secțiunile unei pagini.
Ce tipuri de conținut
Secțiune intitulată „Ce tipuri de conținut”Proyecta vine cu design-uri de colecții gata pregătite — câmpuri bine gândite, indicii pentru admin și conținut de start — pentru tipurile de înregistrări pe care le păstrează afacerile reale: articole de blog, servicii, un catalog de produse, un meniu alimentar, testimoniale și recenzii, membri ai echipei, o galerie foto, întrebări frecvente, evenimente, locații, resurse descărcabile, oferte de angajare, cursuri, tururi și listări de cazare, printre altele.
Nu alegi dintr-un meniu. Când descrii aplicația ta, Proyecta le alege pe cele pe care le cere brieful tău — tipul afacerii, funcționalitățile solicitate, limba ta — și le creează, pre-populate cu conținut de exemplu realist. Dacă aplicația ta are nevoie de ceva ce niciunul dintre ele nu acoperă, Proyecta proiectează o colecție personalizată cu propriile câmpuri.
Din acest motiv, panoul tău de administrare afișează colecțiile aplicației tale — nu o listă fixă. Se construiește singur pe baza modelului de conținut live al aplicației tale, astfel că tot ceea ce Proyecta a creat pentru tine, integrat sau personalizat, este exact ceea ce vezi și editezi. Două aplicații Proyecta rareori au același set, și asta este intenționat.
Fiecare colecție este alcătuită din câmpuri tipizate. Tipurile de câmpuri sunt aplicate de la un capăt la altul — panoul de administrare redă editorul potrivit, iar paginile tale primesc valori corect tipizate.
| Tip câmp | Folosit pentru |
|---|---|
string |
Valori scurte pe o singură linie — titluri, nume, adrese. |
text |
Un paragraf de text simplu. |
markdown |
Text îmbogățit de lungime mare — corpul articolelor, texte “despre noi”. |
slug |
Identificator URL, derivat automat dintr-un alt câmp (ex. titlul). |
number |
Cantități, evaluări, durate. |
money |
Un preț sau o sumă în valută — afișat și editat ca valoare monetară. |
boolean |
Indicatoare on/off. |
date |
Date calendaristice. |
datetime |
Marcaje temporale — date de publicare, ore de start ale evenimentelor. |
weeklyHours |
Program de deschidere pentru fiecare zi a săptămânii. |
asset |
O imagine, un video sau un PDF (stocat ca URL public). |
reference |
Un link către o intrare dintr-o altă colecție. |
enum |
O valoare dintr-o listă fixă de opțiuni. |
array |
O listă de șiruri — etichete, numere de telefon, zone. |
blocks |
Blocuri de conținut suprapuse — o pagină construită din secțiuni tipizate. |
json |
Date structurate care nu se potrivesc niciunuia dintre tipurile de mai sus. |
Intrări, ciorne și publicare
Secțiune intitulată „Intrări, ciorne și publicare”O intrare este un element dintr-o colecție. Fiecare intrare are un status:
- Draft — un lucru în curs de elaborare; niciodată afișat pe site-ul tău live.
- Published — live și vizibil pentru vizitatori.
- Archived — retras, păstrat departe.
Paginile tale publice văd doar intrările published — cele în stare Draft și cele arhivate sunt ascunse automat, astfel că poți pregăti conținut în siguranță înainte de a-l publica.
Gestionarea conținutului (fără cod)
Secțiune intitulată „Gestionarea conținutului (fără cod)”Există două moduri de a adăuga și edita conținut — niciunul nu necesită cod:
- Cere AI-ului în chat. Descrie pur și simplu modificarea și acesta editează conținutul potrivit pentru tine:
"Add a testimonial from María González: 'Best service in town', 5 stars.""Change the tagline in Business Info to 'Café de especialidad en la Roma'.""Mark the last five contact-form submissions as read."
- Panoul de administrare al aplicației tale. Fiecare aplicație publicată primește un panou de administrare integrat, protejat prin autentificare, unde tu (și personalul căruia îi acorzi acces) gestionezi conținutul și trimiterile de formulare direct — un editor în stil foaie de calcul per colecție, plus inbox-ul pentru trimiteri. Se configurează singur pe baza modelului de conținut live al aplicației tale, astfel că noile colecții apar acolo automat. Vezi Admin Panel.
Gestionează conținutul CMS prin panoul de administrare al aplicației sau prin AI — un editor de conținut în builder este pe roadmap (vezi În curând). Un browser de înregistrări în timp real pentru aplicații cu actualizări live vine în curând.
Cum citește aplicația ta conținutul
Secțiune intitulată „Cum citește aplicația ta conținutul”Paginile tale citesc conținut printr-un set de hook-uri tipizate în @/hooks/useContent — iar AI-ul scrie acea configurare pentru tine. Descrii pagina; Proyecta generează componentele care apelează aceste hook-uri pe colecțiile tale reale. Rareori le atingi tu însuți, dar iată ce fac:
| Hook | Ce face |
|---|---|
useCollection('posts') |
Listează intrările published ale unei colecții (cu filter/sort/limit opțional). |
useEntry('posts', slug) |
Preia o intrare published după slug (pagini de detaliu). |
useSingleton('businessInfo') |
Citește un singleton (informații despre afacere, conținut de pagină). |
useFormSubmit('contactForm') |
Trimite un formular și raportează erorile de validare. |
// A blog index — exactly the kind of code the AI generates for youimport { 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} />);}Când Proyecta generează interfețe tipizate pentru colecțiile tale, hook-urile devin complet tipizate (useCollection<Post>('posts')), astfel că editorul tău autocompletează fiecare câmp. Citirile sunt hidratate la prima randare dintr-un snapshot pre-generat — paginile se randează instant și SEO-friendly, apoi se actualizează live în fundal.
Formulare
Secțiune intitulată „Formulare”Formularele sunt o capabilitate de prim rang, nu ceva construit manual de AI. Adaugă un bloc de formular și acesta redă câmpurile, validează input-ul, trimite și afișează o stare de succes:
<FormBlock form="contactForm" />Formularele vin gata pregătite — un formular de contact, o cerere de ofertă, un formular de rezervare, un formular de comandă, un formular de înregistrare — și Proyecta conectează pe cel potrivit în paginile tale. Trimiterile ajung în inbox-ul panoului de administrare al aplicației, iar proprietarul primește un email când sosește una nouă. Vezi Forms pentru imaginea completă.
Localizare
Secțiune intitulată „Localizare”Conținutul poate fi tradus în mai multe locale. Câmpurile marcate ca localizate stochează o valoare per limbă, iar hook-urile de citire le rezolvă printr-un lanț de fallback (limba solicitată → fallback-uri configurate → implicit) când transmiți locala activă a vizitatorului:
const { data: posts } = useCollection('posts', { locale: 'es' });Aplicațiile cu o singură limbă ignoră complet locale-urile — nu este nimic de configurat. Pentru povestea mai largă a traducerilor, vezi Internaționalizare.
Release-uri
Secțiune intitulată „Release-uri”Un release grupează mai multe intrări astfel încât să devină live (sau să fie nepublicate) împreună — pregătește o lansare coordonată de conținut (un launch, o pagină nouă de produs, o actualizare a FAQ-urilor) și comută totul dintr-o dată.
Notă: Publicarea automată programată nu este implementată încă. Un release cu o dată
scheduled_atintră în statusulscheduled, dar trebuie publicat manual. Publicarea automată la ora programată vine în curând.
Tipare comune (lasă AI-ul să le configureze)
Secțiune intitulată „Tipare comune (lasă AI-ul să le configureze)”Rareori scrii asta manual — descrie ce vrei și Proyecta construiește pe baza colecțiilor reale:
"Build a blog. Each post has a title, cover image, rich-text body, category, and tags. Public routes at /blog and /blog/[slug], newest first.""Add an FAQ section the owner can edit, grouped by category.""Add a bookable services list with a request-a-quote form.""Make the site bilingual — English and Spanish — with a language switcher.""Seed the testimonials with five realistic reviews for a coffee shop."
Unde locuiesc datele aplicației tale
Secțiune intitulată „Unde locuiesc datele aplicației tale”CMS-ul este locul implicit pentru conținut durabil și înregistrări. Câteva tipuri de date locuiesc în sisteme dedicate:
| Tip de date | Unde locuiesc |
|---|---|
| Conținut și înregistrări (articole, servicii, listări, FAQ-uri, catalog, rezervări) | Proyecta CMS (această pagină) — implicit |
| Stare realtime / comportament (chat live, feed-uri, prezență, stare joc) | Realtime store — vine în curând |
| Conturi de utilizator și autentificare | Auth |
| Produse, comenzi, abonamente, plăți | Commerce |
| Fișiere încărcate și media | Files & Media |
| Active statice integrate în build | directorul public/ din proiectul tău |
CMS-ul este implicit. Un realtime store pentru comportament cu adevărat în timp real vine în curând; chiar și atunci, conținutul durabil și catalogul de comerț vor rămâne în CMS.
În curând
Secțiune intitulată „În curând”- Editor de conținut în builder — parcurge și editează colecțiile CMS direct din dashboard-ul builder-ului (astăzi: gestionează conținutul prin panoul de administrare sau prin AI).
- Editor WYSIWYG pentru text îmbogățit — editare vizuală pentru câmpurile
markdown(astăzi sunt editate ca markdown). - Auto-publicare programată — release-uri care devin live automat la ora programată.
- Previzualizare live a modificărilor de conținut în aplicația ta.
- Roluri de conținut — permisiuni separate pentru editori față de permisiunile pentru dezvoltatori.