Zarządzanie treścią
CMS Proyecta to główna warstwa danych Twojej aplikacji — nie tylko wpisy na blogu i teksty marketingowe, ale prawdziwe rekordy, na których opiera się cała aplikacja. Kolekcje są tworzone i wypełniane realistyczną przykładową treścią jeszcze przed powstaniem interfejsu, dzięki czemu od pierwszego buildu aplikacja korzysta z edytowalnych danych.
Większość aplikacji Proyecta przechowuje dane we wbudowanym CMS-ie. Gdy opisujesz swoją aplikację, Proyecta projektuje model danych, tworzy potrzebne kolekcje i wypełnia je realistyczną przykładową treścią — zanim zostanie zbudowana choćby jedna strona. Twoje strony odczytują tę prawdziwą, edytowalną przez właściciela treść za pomocą typowanych hooków, które AI okablowuje za Ciebie. Aby zobaczyć pełny obraz tego, jak to wszystko się łączy, zajrzyj do Jak działają dane Twojej aplikacji.
Nie musisz o tym myśleć, żeby zacząć — wszystko dzieje się automatycznie. Ta strona wyjaśnia, co kryje się pod spodem, abyś mógł to kształtować.
Kolekcje i singletony
Dział zatytułowany „Kolekcje i singletony”Treść jest zorganizowana w kolekcje i singletony:
| Typ | Czym jest | Przykłady |
|---|---|---|
| Kolekcja | Typ treści z wieloma wpisami — jeden schemat, wiele rekordów. | posts, services, testimonials, catalogItems |
| Singleton | Typ treści z dokładnie jednym wpisem — globalna, jednorazowa treść. | businessInfo, seoSettings |
Kolekcja to kształt; każdy wpis to jeden element o tym kształcie (jeden post na blogu, jedna usługa, jedno FAQ). Singleton przechowuje pojedynczy edytowalny rekord — tożsamość Twojej firmy albo treść sekcji hero na stronie.
Jakie rodzaje treści
Dział zatytułowany „Jakie rodzaje treści”Proyecta dostarcza gotowe projekty kolekcji — przemyślane pola, wskazówki dla panelu admina i przykładową treść startową — dla typów rekordów, jakich używają prawdziwe firmy: posty i artykuły na blogu, usługi, katalog produktów, menu restauracji, opinie i recenzje, członkowie zespołu, galeria zdjęć, FAQ, wydarzenia, lokalizacje, zasoby do pobrania, oferty pracy, kursy, wycieczki i oferty noclegowe, a także wiele innych.
Nie wybierasz z żadnej listy. Gdy opisujesz swoją aplikację, Proyecta sam dobiera odpowiednie kolekcje — biorąc pod uwagę rodzaj Twojej działalności, żądane funkcje i język — i tworzy je, wstępnie wypełnione realistyczną przykładową treścią. Jeśli Twoja aplikacja potrzebuje czegoś, czego żadna gotowa kolekcja nie obejmuje, Proyecta projektuje niestandardową kolekcję z własnymi polami.
Dlatego Twój panel admina pokazuje kolekcje Twojej aplikacji — nie ustaloną z góry listę. Buduje się sam na podstawie aktualnego modelu treści Twojej aplikacji, więc cokolwiek Proyecta dla Ciebie stworzył — wbudowane czy niestandardowe — dokładnie to widzisz i edytujesz. Dwie aplikacje Proyecta rzadko mają ten sam zestaw kolekcji i tak właśnie powinno być.
Każda kolekcja składa się z typowanych pól. Typy pól są egzekwowane na każdym poziomie — panel admina renderuje odpowiedni edytor, a Twoje strony otrzymują poprawnie typowane wartości.
| Typ pola | Do czego służy |
|---|---|
string |
Krótkie wartości jednolinijkowe — tytuły, nazwy, adresy. |
text |
Akapit zwykłego tekstu. |
markdown |
Długi tekst sformatowany — treść artykułów, sekcja „o nas“. |
slug |
Identyfikator URL, automatycznie generowany z innego pola (np. tytułu). |
number |
Liczniki, oceny, czasy trwania. |
money |
Cena lub kwota w walucie — wyświetlana i edytowana jako wartość pieniężna. |
boolean |
Flagi włącz/wyłącz. |
date |
Daty kalendarzowe. |
datetime |
Znaczniki czasu — daty publikacji, godziny rozpoczęcia wydarzeń. |
weeklyHours |
Godziny otwarcia dla każdego dnia tygodnia. |
asset |
Obraz, wideo lub PDF (przechowywany jako publiczny URL). |
reference |
Odniesienie do wpisu w innej kolekcji. |
enum |
Wartość z ustalonej listy możliwości. |
array |
Lista ciągów tekstowych — tagi, numery telefonów, strefy. |
blocks |
Układalne bloki treści — strona zbudowana z typowanych sekcji. |
json |
Dane strukturalne, które nie pasują do żadnego z powyższych typów. |
Wpisy, wersje robocze i publikowanie
Dział zatytułowany „Wpisy, wersje robocze i publikowanie”Wpis to jeden element w kolekcji. Każdy wpis ma status:
- Draft — praca w toku; nigdy nie jest wyświetlana na Twojej działającej stronie.
- Published — aktywna i widoczna dla odwiedzających.
- Archived — wycofana, przechowywana na uboczu.
Twoje publiczne strony widzą wyłącznie wpisy ze statusem Published — wersje robocze i zarchiwizowane elementy są ukrywane automatycznie, więc możesz bezpiecznie przygotowywać treść przed jej opublikowaniem.
Zarządzanie treścią (bez pisania kodu)
Dział zatytułowany „Zarządzanie treścią (bez pisania kodu)”Treść możesz dodawać i edytować na dwa sposoby — żaden nie wymaga dotykania kodu:
- Poproś AI w czacie. Opisz zmianę, a AI edytuje właściwą treść za Ciebie:
"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."
- Panel admina Twojej aplikacji. Każda opublikowana aplikacja ma wbudowany, chroniony logowaniem panel admina, w którym Ty (i pracownicy, którym udzielisz dostępu) możecie bezpośrednio zarządzać treścią i formularzami kontaktowymi — edytor w stylu arkusza kalkulacyjnego dla każdej kolekcji oraz skrzynka odbiorcza zgłoszeń. Panel konfiguruje się sam na podstawie aktualnego modelu treści Twojej aplikacji, więc nowe kolekcje pojawiają się tam automatycznie. Zobacz Panel admina.
Zarządzaj treścią CMS-a przez panel admina swojej aplikacji lub przez AI — edytor treści bezpośrednio w builderze jest w planach (zob. Wkrótce). Przeglądarka rekordów w czasie rzeczywistym dla aplikacji z live updates pojawi się wkrótce.
Jak Twoja aplikacja odczytuje treść
Dział zatytułowany „Jak Twoja aplikacja odczytuje treść”Twoje strony odczytują treść za pomocą zestawu typowanych hooków z @/hooks/useContent — a AI pisze to okablowanie za Ciebie. Opisujesz stronę; Proyecta generuje komponenty, które wywołują te hooki na Twoich prawdziwych kolekcjach. Rzadko będziesz je dotykać samodzielnie, ale oto co robią:
| Hook | Co robi |
|---|---|
useCollection('posts') |
Wyświetla opublikowane wpisy kolekcji (z opcjonalnym filtrem/sortowaniem/limitem). |
useEntry('posts', slug) |
Pobiera jeden opublikowany wpis po slugu (strony szczegółowe). |
useSingleton('businessInfo') |
Odczytuje singleton (dane firmy, treść strony). |
useFormSubmit('contactForm') |
Wysyła formularz i zgłasza błędy walidacji. |
// 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} />);}Gdy Proyecta generuje typowane interfejsy dla Twoich kolekcji, hooki stają się w pełni typowane (useCollection<Post>('posts')), dzięki czemu edytor podpowiada każde pole z autouzupełnianiem. Odczyty są hydratowane przy pierwszym renderowaniu z zapisanego snapshotuj — strony renderują się natychmiast i z myślą o SEO, a następnie odświeżają się na żywo w tle.
Formularze
Dział zatytułowany „Formularze”Formularze to pierwszorzędna funkcjonalność, a nie coś, co AI buduje ręcznie. Dodaj blok formularza, a on sam wyrenderuje pola, zwaliduje dane, wyśle formularz i pokaże stan sukcesu:
<FormBlock form="contactForm" />Formularze też są gotowe — formularz kontaktowy, zapytanie ofertowe, formularz rezerwacji, formularz zamówienia, formularz rejestracyjny — i Proyecta podłącza odpowiedni do Twoich stron. Zgłoszenia trafiają do skrzynki odbiorczej panelu admina Twojej aplikacji, a właściciel otrzymuje e-mail po każdym nowym zgłoszeniu. Zobacz Formularze, aby poznać pełny obraz.
Lokalizacja
Dział zatytułowany „Lokalizacja”Treść może być tłumaczona na wiele języków. Pola oznaczone jako zlokalizowane przechowują wartość dla każdego języka, a hooki odczytujące rozwiązują je według łańcucha awaryjnego (żądany język → skonfigurowane języki zapasowe → domyślny), gdy przekażesz aktywny język odwiedzającego:
const { data: posts } = useCollection('posts', { locale: 'es' });Aplikacje jednojęzyczne ignorują lokale całkowicie — nie ma nic do konfigurowania. Aby poznać szerszy kontekst tłumaczeń, zajrzyj do Internacjonalizacja.
Wydania
Dział zatytułowany „Wydania”Wydanie grupuje kilka wpisów, aby trafiły online (lub zostały cofnięte) razem — przygotuj skoordynowane opublikowanie treści (premiera, nowa strona produktu, odświeżenie FAQ) i wdróż wszystko jednocześnie.
Uwaga: Automatyczne publikowanie według harmonogramu nie zostało jeszcze zaimplementowane. Wydanie z datą
scheduled_atprzechodzi w statusscheduled, ale musi zostać opublikowane ręcznie. Automatyczne publikowanie o zaplanowanej godzinie pojawi się wkrótce.
Typowe wzorce (pozwól AI to okablować)
Dział zatytułowany „Typowe wzorce (pozwól AI to okablować)”Rzadko piszesz to ręcznie — opisz, czego chcesz, a Proyecta zbuduje to na prawdziwych kolekcjach:
"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."
Gdzie mieszkają dane Twojej aplikacji
Dział zatytułowany „Gdzie mieszkają dane Twojej aplikacji”CMS to domyślne miejsce dla trwałej treści i rekordów. Niektóre rodzaje danych trafiają do dedykowanych systemów:
| Rodzaj danych | Gdzie mieszka |
|---|---|
| Treść i rekordy (posty, usługi, oferty, FAQ, katalog, rezerwacje) | Proyecta CMS (ta strona) — domyślny wybór |
| Stan czasu rzeczywistego / behawioralny (live chat, feedy, obecność, stan gry) | Magazyn czasu rzeczywistego — wkrótce |
| Konta użytkowników i logowanie | Auth |
| Produkty, zamówienia, subskrypcje, płatności | Commerce |
| Przesłane pliki i media | Files & Media |
| Statyczne zasoby dołączone do buildu | katalog public/ w Twoim projekcie |
CMS jest wyborem domyślnym. Magazyn czasu rzeczywistego dla prawdziwie real-time’owych zachowań pojawi się wkrótce; nawet wtedy trwała treść i katalog commerce nadal będą mieszkać w CMS-ie.
Wkrótce
Dział zatytułowany „Wkrótce”- Edytor treści bezpośrednio w builderze — przeglądanie i edycja kolekcji CMS bezpośrednio z dashboardu buildera (dziś: zarządzaj treścią przez panel admina lub AI).
- Wizualny edytor WYSIWYG dla tekstu sformatowanego — edycja wizualna dla pól
markdown(dziś są edytowane jako markdown). - Automatyczne publikowanie według harmonogramu — wydania, które trafiają online automatycznie o zaplanowanej godzinie.
- Podgląd na żywo zmian treści w Twojej aplikacji.
- Role treści — odrębne uprawnienia dla edytorów i deweloperów.