Content Management
Proyectas CMS ist die primäre Datenschicht deiner App — nicht nur Blog-Posts und Marketing-Texte, sondern die echten Datensätze, auf denen deine App aufbaut. Collections werden bereitgestellt und mit realistischen Beispielinhalten befüllt, bevor die Oberfläche existiert, sodass deine App bereits beim ersten Build mit editierbaren Daten verbunden ist.
Die meisten Proyecta-Apps speichern ihre Daten im integrierten CMS. Wenn du deine App beschreibst, entwirft Proyecta ein Datenmodell, erstellt die benötigten Collections und füllt sie mit realistischen Beispielinhalten — all das, bevor eine einzige Seite gebaut wird. Deine Seiten lesen diesen echten, vom Inhaber bearbeitbaren Content dann über typisierte Hooks, die die KI für dich verdrahtet. Einen Überblick darüber, wie das alles zusammenpasst, findest du unter Wie die Daten deiner App funktionieren.
Du musst dir dabei keine Gedanken machen, um loszulegen — es passiert automatisch. Diese Seite erklärt, was darunter steckt, damit du es gezielt beeinflussen kannst.
Collections und Singletons
Abschnitt betitelt „Collections und Singletons“Inhalte werden in Collections und Singletons organisiert:
| Typ | Was es ist | Beispiele |
|---|---|---|
| Collection | Ein Inhaltstyp mit vielen Einträgen — ein Schema, viele Zeilen. | posts, services, testimonials, catalogItems |
| Singleton | Ein Inhaltstyp mit genau einem Eintrag — globale, einmalige Inhalte. | businessInfo, seoSettings |
Eine Collection ist eine Form; jeder Eintrag ist ein Element dieser Form (ein Blog-Post, eine Dienstleistung, eine FAQ). Ein Singleton enthält einen einzigen bearbeitbaren Datensatz — deine Geschäftsidentität oder den Hero-/Sektionstext einer Seite.
Welche Arten von Inhalten
Abschnitt betitelt „Welche Arten von Inhalten“Proyecta liefert vorgefertigte Collection-Designs — sinnvolle Felder, Admin-Hinweise und Startinhalte — für die Art von Datensätzen, die echte Unternehmen führen: Blog-Posts und Artikel, Dienstleistungen, ein Produktkatalog, eine Speisekarte, Testimonials und Bewertungen, Teammitglieder, eine Fotogalerie, FAQs, Veranstaltungen, Standorte, herunterladbare Ressourcen, Stellenangebote, Kurse, Touren und Unterkunftslisten, unter anderem.
Du wählst nie aus einem Menü aus. Wenn du deine App beschreibst, wählt Proyecta die passenden Collections aus — basierend auf deinem Unternehmenstyp, den gewünschten Funktionen und deiner Sprache — und erstellt sie, vorab befüllt mit realistischen Beispielinhalten. Wenn deine App etwas benötigt, das keine davon abdeckt, entwirft Proyecta stattdessen eine benutzerdefinierte Collection mit eigenen Feldern.
Deshalb zeigt dein Admin-Panel die Collections deiner App — keine feste Liste. Es baut sich aus dem Live-Content-Modell deiner App auf, sodass alles, was Proyecta für dich erstellt hat — eingebaut oder benutzerdefiniert — genau das ist, was du siehst und bearbeitest. Zwei Proyecta-Apps haben selten denselben Satz an Collections, und das ist so beabsichtigt.
Jede Collection besteht aus typisierten Feldern. Feldtypen werden durchgängig erzwungen — das Admin-Panel rendert den richtigen Editor, und deine Seiten erhalten korrekt typisierte Werte.
| Feldtyp | Einsatzzweck |
|---|---|
string |
Kurze einzeilige Werte — Titel, Namen, Adressen. |
text |
Ein Absatz Klartext. |
markdown |
Langer Rich-Text — Artikelinhalte, „Über uns“-Texte. |
slug |
URL-Bezeichner, automatisch aus einem anderen Feld abgeleitet (z. B. dem Titel). |
number |
Zählwerte, Bewertungen, Dauern. |
money |
Ein Preis oder Währungsbetrag — als Geldwert angezeigt und bearbeitet. |
boolean |
Ein/Aus-Flags. |
date |
Kalenderdaten. |
datetime |
Zeitstempel — Veröffentlichungsdaten, Veranstaltungsstartzeiten. |
weeklyHours |
Öffnungszeiten für jeden Wochentag. |
asset |
Ein Bild, Video oder PDF (gespeichert als öffentliche URL). |
reference |
Ein Link zu einem Eintrag in einer anderen Collection. |
enum |
Ein Wert aus einer festen Liste von Optionen. |
array |
Eine Liste von Strings — Tags, Telefonnummern, Zonen. |
blocks |
Stapelbare Inhaltsblöcke — eine Seite, die aus typisierten Abschnitten aufgebaut ist. |
json |
Strukturierte Daten, die in keinen der oben genannten Typen passen. |
Einträge, Entwürfe und Veröffentlichung
Abschnitt betitelt „Einträge, Entwürfe und Veröffentlichung“Ein Eintrag ist ein Element in einer Collection. Jeder Eintrag hat einen Status:
- Draft — ein Werk in Bearbeitung; wird auf deiner Live-Site nie angezeigt.
- Published — live und für Besucher sichtbar.
- Archived — zurückgezogen, aus dem Weg geräumt.
Deine öffentlichen Seiten sehen ausschließlich veröffentlichte Einträge — Entwürfe und archivierte Elemente werden automatisch ausgeblendet, sodass du Inhalte sicher vorbereiten kannst, bevor sie online gehen.
Inhalte verwalten (kein Code erforderlich)
Abschnitt betitelt „Inhalte verwalten (kein Code erforderlich)“Es gibt zwei Möglichkeiten, Inhalte hinzuzufügen und zu bearbeiten — keine erfordert das Anfassen von Code:
- Die KI im Chat befragen. Beschreibe einfach die Änderung, und sie bearbeitet den richtigen Inhalt für dich:
"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."
- Das Admin-Panel deiner App. Jede veröffentlichte App erhält ein integriertes, durch Anmeldung geschütztes Admin-Panel, in dem du (und Mitarbeiter, denen du Zugang gewährst) Inhalte und Formular-Einsendungen direkt verwaltest — ein tabellenartiger Editor pro Collection sowie den Posteingang für Einsendungen. Es konfiguriert sich selbst aus dem Live-Content-Modell deiner App, sodass neue Collections dort automatisch erscheinen. Siehe Admin Panel.
Verwalte deine CMS-Inhalte über das Admin-Panel deiner App oder die KI — ein integrierter Content-Editor im Builder ist in der Roadmap vorgesehen (siehe Demnächst verfügbar). Ein Echtzeit-Datensatz-Browser für live-aktualisierende Apps ist demnächst verfügbar.
Wie deine App Inhalte liest
Abschnitt betitelt „Wie deine App Inhalte liest“Deine Seiten lesen Inhalte über eine Reihe typisierter Hooks in @/hooks/useContent — und die KI schreibt diese Verdrahtung für dich. Du beschreibst die Seite; Proyecta generiert die Komponenten, die diese Hooks gegen deine echten Collections aufrufen. Du berührst sie selbst selten, aber hier ist, was sie tun:
| Hook | Was er macht |
|---|---|
useCollection('posts') |
Listet die veröffentlichten Einträge einer Collection auf (mit optionalem Filter/Sort/Limit). |
useEntry('posts', slug) |
Ruft einen veröffentlichten Eintrag per Slug ab (Detailseiten). |
useSingleton('businessInfo') |
Liest einen Singleton (Geschäftsinfos, Seiteninhalt). |
useFormSubmit('contactForm') |
Sendet ein Formular ab und meldet Validierungsfehler. |
// 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} />);}Wenn Proyecta typisierte Interfaces für deine Collections generiert, werden die Hooks vollständig typisiert (useCollection<Post>('posts')), sodass dein Editor jedes Feld autovervollständigt. Lesevorgänge werden beim ersten Paint aus einem vorberechneten Snapshot hydratisiert — Seiten rendern sofort und SEO-freundlich und aktualisieren sich dann live im Hintergrund.
Formulare
Abschnitt betitelt „Formulare“Formulare sind eine erstklassige Funktion, nichts, das die KI von Hand baut. Füge einen Formularblock ein und er rendert die Felder, validiert Eingaben, sendet ab und zeigt einen Erfolgszustand an:
<FormBlock form="contactForm" />Formulare werden ebenfalls vorgefertigt geliefert — ein Kontaktformular, eine Angebotsanfrage, ein Buchungsformular, ein Bestellformular, ein Anmeldeformular — und Proyecta verdrahtet das richtige in deine Seiten. Einsendungen landen im Posteingang des Admin-Panels deiner App, und der Inhaber wird per E-Mail benachrichtigt, wenn eine neue eintrifft. Siehe Formulare für das vollständige Bild.
Lokalisierung
Abschnitt betitelt „Lokalisierung“Inhalte können in mehrere Locales übersetzt werden. Als lokalisiert markierte Felder speichern einen Wert pro Sprache, und die Read-Hooks lösen sie über eine Fallback-Kette auf (angeforderte Sprache → konfigurierte Fallbacks → Standard), wenn du das aktive Locale des Besuchers übergibst:
const { data: posts } = useCollection('posts', { locale: 'es' });Einsprachige Apps ignorieren Locales vollständig — es gibt nichts zu konfigurieren. Die umfassendere Übersetzungsgeschichte findest du unter Internationalisierung.
Releases
Abschnitt betitelt „Releases“Ein Release bündelt mehrere Einträge, sodass sie gemeinsam live gehen (oder depubliziert werden) — stage einen koordinierten Content-Drop (ein Launch, eine neue Produktseite, eine FAQ-Aktualisierung) und aktiviere alles auf einmal.
Hinweis: Automatisches zeitgesteuertes Veröffentlichen ist noch nicht implementiert. Ein Release mit einem
scheduled_at-Datum erhält den Statusscheduled, muss aber manuell veröffentlicht werden. Das automatische Veröffentlichen zum geplanten Zeitpunkt kommt bald.
Häufige Muster (lass die KI es verdrahten)
Abschnitt betitelt „Häufige Muster (lass die KI es verdrahten)“Du schreibst das selten selbst — beschreibe, was du möchtest, und Proyecta baut es gegen echte Collections:
"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."
Wo die Daten deiner App gespeichert werden
Abschnitt betitelt „Wo die Daten deiner App gespeichert werden“Das CMS ist das Standardzuhause für dauerhafte Inhalte und Datensätze. Einige Arten von Daten leben stattdessen in zweckgebundenen Systemen:
| Art der Daten | Wo sie gespeichert werden |
|---|---|
| Inhalte & Datensätze (Posts, Dienstleistungen, Listings, FAQs, Katalog, Buchungen) | Proyecta CMS (diese Seite) — der Standard |
| Echtzeit-/Verhaltenszustand (Live-Chat, Feeds, Präsenz, Spielzustand) | Echtzeit-Store — demnächst verfügbar |
| Benutzerkonten & Anmeldung | Auth |
| Produkte, Bestellungen, Abonnements, Zahlungen | Commerce |
| Hochgeladene Dateien & Medien | Files & Media |
| Statische Assets, die in den Build eingebacken werden | das Verzeichnis public/ in deinem Projekt |
Das CMS ist der Standard. Ein Echtzeit-Store für genuinen Echtzeit-Betrieb ist demnächst verfügbar; selbst dann werden dauerhafte Inhalte und der Commerce-Katalog weiterhin im CMS gespeichert.
Demnächst verfügbar
Abschnitt betitelt „Demnächst verfügbar“- Integrierter Content-Editor im Builder — durchsuche und bearbeite deine CMS-Collections direkt aus dem Builder-Dashboard (heute: Inhalte über das Admin-Panel oder die KI verwalten).
- Rich-Text-WYSIWYG-Editor — visuelles Bearbeiten von
markdown-Feldern (heute werden sie als Markdown bearbeitet). - Zeitgesteuertes Auto-Publish — Releases, die automatisch zum geplanten Zeitpunkt live gehen.
- Live-Vorschau von Inhaltsänderungen in deiner App.
- Content-Rollen — Bearbeiterberechtigungen von Entwicklerberechtigungen trennen.