Hoppa till innehåll

Innehållshantering

Proyectas CMS är din apps primära datalager — inte bara blogginlägg och marknadsföringstext, utan de riktiga poster som din app bygger på. Samlingar skapas och fylls med verklighetstrogen exempelinnehåll innan gränssnittet existerar, så att din app levereras kopplad till redigerbar data redan från den första builden.

De flesta Proyecta-appar lagrar sin data i det inbyggda CMS-systemet. När du beskriver din app utformar Proyecta en datamodell, skapar de samlingar som behövs och fyller dem med realistiskt exempelinnehåll — allt innan en enda sida byggs. Dina sidor läser sedan det verkliga, ägarredigerbara innehållet via typade hooks som AI:n kopplar upp åt dig. För en helhetsbild av hur det här hänger ihop, se Hur din apps data fungerar.

Du behöver inte tänka på något av det här för att komma igång — det sker automatiskt. Den här sidan förklarar vad som ligger under ytan så att du kan forma det.

Innehåll organiseras i samlingar och singletons:

Typ Vad det är Exempel
Samling En innehållstyp med många poster — ett schema, många rader. posts, services, testimonials, catalogItems
Singleton En innehållstyp med exakt en post — globalt, engångsinnehåll. businessInfo, seoSettings

En samling är en form; varje post är ett objekt av den formen (ett blogginlägg, en tjänst, en FAQ). En singleton innehåller ett enda redigerbart register — din företagsidentitet, eller hero- och sektionskopian för en sida.

Proyecta levereras med färdiga samlingsdesigner — väldefinierade fält, adminledtrådar och startinnehåll — för de typer av poster som verkliga företag använder: blogginlägg och artiklar, tjänster, en produktkatalog, en meny, omdömen och recensioner, teammedlemmar, ett fotogalleri, vanliga frågor, evenemang, platser, nedladdningsbara resurser, lediga tjänster, kurser, turer och boendeannonser, med mera.

Du väljer aldrig från en lista. När du beskriver din app väljer Proyecta de samlingar som ditt underlag kräver — din företagstyp, de funktioner du bett om, ditt språk — och skapar dem, förifyllda med realistiskt exempelinnehåll. Om din app behöver något som ingen av dem täcker, utformar Proyecta en anpassad samling med egna fält istället.

Därför visar din adminpanel din apps samlingar — inte en fast lista. Den bygger sig själv utifrån din apps aktiva innehållsmodell, så oavsett vad Proyecta skapat åt dig — inbyggt eller anpassat — är det exakt vad du ser och redigerar. Två Proyecta-appar har sällan samma uppsättning, och det är med avsikt.

Varje samling består av typade fält. Fälttyper tillämpas från start till slut — adminpanelen renderar rätt editor, och dina sidor får korrekt typade värden.

Fälttyp Används för
string Korta envärden — titlar, namn, adresser.
text Ett stycke ren text.
markdown Lång formaterad text — artikelinnehåll, “om oss”-text.
slug URL-identifierare, automatiskt härlett från ett annat fält (t.ex. titeln).
number Antal, betyg, varaktigheter.
money Ett pris eller valutabelopp — visas och redigeras som pengar.
boolean På/av-flaggor.
date Kalenderdatum.
datetime Tidsstämplar — publiceringsdatum, evenemangsstarter.
weeklyHours Öppettider för varje dag i veckan.
asset En bild, video eller PDF (lagrad som en publik URL).
reference En länk till en post i en annan samling.
enum Ett värde från en fast lista med alternativ.
array En lista med strängar — taggar, telefonnummer, zoner.
blocks Staplingsbara innehållsblock — en sida byggd av typade sektioner.
json Strukturerad data som inte passar någon av typerna ovan.

En post är ett objekt i en samling. Varje post har en status:

  • Draft — ett pågående arbete; visas aldrig på din publicerade webbplats.
  • Published — live och synlig för besökare.
  • Archived — pensionerad, hålls undan.

Dina publika sidor ser bara publicerade poster — utkast och arkiverade objekt döljs automatiskt, så att du kan förbereda innehåll på ett säkert sätt innan det går live.

Det finns två sätt att lägga till och redigera innehåll — inget av dem kräver att du rör kod:

  1. Fråga AI:n i chatten. Beskriv bara förändringen så redigerar den rätt innehåll åt dig:
    • "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."
  2. Din apps adminpanel. Varje publicerad app får en inbyggd, inloggningsskyddad adminpanel där du (och personal du ger åtkomst) hanterar innehåll och formulärinskickar direkt — en kalkylbladsliknande editor per samling, plus en inkorg för inskickningar. Den konfigurerar sig själv utifrån din apps aktiva innehållsmodell, så nya samlingar visas där automatiskt. Se Admin Panel.

Hantera ditt CMS-innehåll via din apps adminpanel eller AI:n — en inbyggd innehållseditor i builder-verktyget finns på färdplanen (se Coming soon). En realtids-postvisare för appar med live-uppdateringar kommer snart.

Dina sidor läser innehåll via en uppsättning typade hooks i @/hooks/useContent — och AI:n skriver den kopplingen åt dig. Du beskriver sidan; Proyecta genererar komponenterna som anropar dessa hooks mot dina riktiga samlingar. Du rör dem sällan själv, men här är vad de gör:

Hook Vad den gör
useCollection('posts') Listar en samlings publicerade poster (med valfritt filter/sortering/begränsning).
useEntry('posts', slug) Hämtar en publicerad post via slug (detaljsidor).
useSingleton('businessInfo') Läser en singleton (företagsinfo, sidinnehåll).
useFormSubmit('contactForm') Skickar in ett formulär och rapporterar valideringsfel.
// A blog index — exactly the kind of code the AI generates for you
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} />);
}

När Proyecta genererar typade gränssnitt för dina samlingar blir hooks fullt typade (useCollection<Post>('posts')), så din editor autokompleterar varje fält. Läsningar hydreras vid första rendering från en bakad ögonblicksbild — sidor renderas omedelbart och SEO-vänligt, och uppdateras sedan live i bakgrunden.

Formulär är en förstklassig funktion, inte något AI:n bygger för hand. Lägg till ett formulärblock så renderar det fälten, validerar indata, skickar iväg och visar ett lyckat tillstånd:

<FormBlock form="contactForm" />

Formulär levereras färdiga också — ett kontaktformulär, en offertförfrågan, ett bokningsformulär, ett beställningsformulär, ett registreringsformulär — och Proyecta kopplar rätt formulär till dina sidor. Inskickningar hamnar i din apps adminpanel-inkorg, och ägaren får ett e-postmeddelande när ett nytt formulär kommer in. Se Forms för hela bilden.

Innehåll kan översättas till flera lokaler. Fält markerade som lokaliserade lagrar ett värde per språk, och läs-hooks löser dem via en fallback-kedja (begärt språk → konfigurerade fallbacks → standard) när du skickar med besökarens aktiva lokal:

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

Enspråkiga appar ignorerar lokaler helt — det finns inget att konfigurera. För den bredare översättningsberättelsen, se Internationalisering.

En release samlar flera poster så att de går live (eller avpubliceras) tillsammans — förbered en samordnad innehållslansering (en lansering, en ny produktsida, en FAQ-uppdatering) och aktivera allt på en gång.

Observera: Automatisk tidsstyrd publicering är ännu inte implementerat. En release med ett scheduled_at-datum får statusen scheduled men måste publiceras manuellt. Automatisk publicering vid den schemalagda tidpunkten kommer snart.

Vanliga mönster (låt AI:n koppla upp det)

Section titled “Vanliga mönster (låt AI:n koppla upp det)”

Du skriver sällan det här för hand — beskriv vad du vill ha och Proyecta bygger det mot riktiga samlingar:

  • "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."

CMS är standardplatsen för beständigt innehåll och poster. Vissa typer av data bor i specialbyggda system istället:

Typ av data Var den bor
Innehåll och poster (inlägg, tjänster, annonser, FAQs, katalog, bokningar) Proyecta CMS (den här sidan) — standard
Realtids-/beteendetillstånd (live-chatt, flöden, närvaro, speltillstånd) Realtidslagerkommer snart
Användarkonton och inloggning Auth
Produkter, beställningar, prenumerationer, betalningar Commerce
Uppladdade filer och media Files & Media
Statiska resurser inbakade i builden katalogen public/ i ditt projekt

CMS är standard. Ett realtidslager för genuint realtids-beteende kommer snart; även då kommer beständigt innehåll och handelskatalogen att fortsätta leva i CMS.

  • Inbyggd innehållseditor — bläddra och redigera dina CMS-samlingar direkt från builder-instrumentpanelen (idag: hantera innehåll via adminpanelen eller AI:n).
  • Rich-text WYSIWYG-editor — visuell redigering för markdown-fält (idag redigeras de som markdown).
  • Tidsstyrd autopublicering — releaser som går live automatiskt vid sin schemalagda tid.
  • Live-förhandsgranskning av innehållsändringar mot din app.
  • Innehållsroller — separera editorsbehörigheter från utvecklarbehörigheter.