Gerenciamento de Conteúdo
O CMS do Proyecta é a camada de dados principal do seu app — não apenas posts de blog e textos de marketing, mas os registros reais sobre os quais seu app é construído. As coleções são provisionadas e populadas com conteúdo de exemplo real antes de a interface existir, para que seu app seja entregue conectado a dados editáveis desde o primeiro build.
A maioria dos apps Proyecta armazena seus dados no CMS integrado. Quando você descreve seu app, o Proyecta projeta um modelo de dados, cria as coleções necessárias e as preenche com conteúdo de exemplo realista — tudo antes de uma única página ser construída. Suas páginas então leem esse conteúdo real e editável pelo proprietário por meio de hooks tipados que a IA configura para você. Para entender como tudo isso se encaixa, veja Como os dados do seu app funcionam.
Você não precisa pensar em nada disso para começar — acontece automaticamente. Esta página explica o que está por baixo para que você possa moldá-lo.
Coleções e singletons
Seção intitulada “Coleções e singletons”O conteúdo é organizado em coleções e singletons:
| Tipo | O que é | Exemplos |
|---|---|---|
| Collection | Um tipo de conteúdo com muitas entradas — um schema, muitas linhas. | posts, services, testimonials, catalogItems |
| Singleton | Um tipo de conteúdo com exatamente uma entrada — conteúdo global, único. | businessInfo, seoSettings |
Uma coleção é uma estrutura; cada entrada é um item dessa estrutura (um post de blog, um serviço, uma FAQ). Um singleton armazena um único registro editável — a identidade do seu negócio ou o texto do hero/seção de uma página.
Que tipos de conteúdo
Seção intitulada “Que tipos de conteúdo”O Proyecta traz designs de coleções prontos — campos sensatos, dicas de administração e conteúdo inicial — para os tipos de registros que negócios reais mantêm: posts e artigos de blog, serviços, catálogo de produtos, cardápio, depoimentos e avaliações, membros da equipe, galeria de fotos, FAQs, eventos, localizações, recursos para download, vagas de emprego, cursos, passeios e listagens de acomodações, entre outros.
Você nunca escolhe em um menu. Quando você descreve seu app, o Proyecta escolhe os que o seu briefing requer — seu tipo de negócio, as funcionalidades que você pediu, o seu idioma — e os cria, pré-preenchidos com conteúdo de exemplo realista. Se o seu app precisar de algo que nenhum deles cobre, o Proyecta projeta uma coleção personalizada com seus próprios campos.
Por isso, o painel de administração do seu app mostra as coleções do seu app — não uma lista fixa. Ele se constrói a partir do modelo de conteúdo em tempo real do seu app, então tudo o que o Proyecta criou para você, integrado ou personalizado, é exatamente o que você vê e edita. Dois apps Proyecta raramente têm o mesmo conjunto, e isso é proposital.
Toda coleção é composta por campos tipados. Os tipos de campo são aplicados de ponta a ponta — o painel de administração renderiza o editor correto, e suas páginas recebem valores corretamente tipados.
| Tipo de campo | Para que serve |
|---|---|
string |
Valores curtos de uma linha — títulos, nomes, endereços. |
text |
Um parágrafo de texto simples. |
markdown |
Texto rico de formato longo — corpo de artigos, textos “sobre”. |
slug |
Identificador de URL, derivado automaticamente de outro campo (ex.: o título). |
number |
Contagens, avaliações, durações. |
money |
Um preço ou valor monetário — exibido e editado como dinheiro. |
boolean |
Flags de ativado/desativado. |
date |
Datas do calendário. |
datetime |
Timestamps — datas de publicação, horários de início de eventos. |
weeklyHours |
Horários de funcionamento para cada dia da semana. |
asset |
Uma imagem, vídeo ou PDF (armazenado como URL pública). |
reference |
Um link para uma entrada em outra coleção. |
enum |
Um valor de uma lista fixa de opções. |
array |
Uma lista de strings — tags, números de telefone, zonas. |
blocks |
Blocos de conteúdo empilháveis — uma página construída a partir de seções tipadas. |
json |
Dados estruturados que não se encaixam em nenhum dos tipos acima. |
Entradas, rascunhos e publicação
Seção intitulada “Entradas, rascunhos e publicação”Uma entrada é um item em uma coleção. Toda entrada tem um status:
- Draft — um trabalho em andamento; nunca exibido no seu site em produção.
- Published — ativo e visível para os visitantes.
- Archived — desativado, mantido fora do caminho.
Suas páginas públicas só veem entradas published — rascunhos e itens arquivados são ocultados automaticamente, para que você possa preparar conteúdo com segurança antes de publicá-lo.
Gerenciando conteúdo (sem código)
Seção intitulada “Gerenciando conteúdo (sem código)”Há duas formas de adicionar e editar conteúdo — nenhuma delas requer tocar no código:
- Peça à IA no chat. Basta descrever a mudança e ela edita o conteúdo certo para você:
"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."
- O painel de administração do seu app. Todo app publicado tem um painel de administração integrado e protegido por login, onde você (e a equipe à qual você concede acesso) gerencia conteúdo e envios de formulários diretamente — um editor estilo planilha por coleção, além da caixa de entrada de envios. Ele se configura a partir do modelo de conteúdo em tempo real do seu app, então novas coleções aparecem lá automaticamente. Veja Admin Panel.
Gerencie seu conteúdo CMS pelo painel de administração do seu app ou pela IA — um editor de conteúdo integrado ao builder está no roadmap (veja Em breve). Um navegador de registros em tempo real para apps com atualização ao vivo está em breve.
Como seu app lê o conteúdo
Seção intitulada “Como seu app lê o conteúdo”Suas páginas leem conteúdo por meio de um conjunto de hooks tipados em @/hooks/useContent — e a IA escreve essa configuração para você. Você descreve a página; o Proyecta gera os componentes que chamam esses hooks nas suas coleções reais. Você raramente os toca diretamente, mas veja o que fazem:
| Hook | O que faz |
|---|---|
useCollection('posts') |
Lista as entradas publicadas de uma coleção (com filtro/ordenação/limite opcionais). |
useEntry('posts', slug) |
Busca uma entrada publicada pelo slug (páginas de detalhe). |
useSingleton('businessInfo') |
Lê um singleton (informações do negócio, conteúdo de página). |
useFormSubmit('contactForm') |
Envia um formulário e reporta erros de validação. |
// 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} />);}Quando o Proyecta gera interfaces tipadas para suas coleções, os hooks ficam totalmente tipados (useCollection<Post>('posts')), e seu editor autocompleta todos os campos. As leituras são hidratadas na primeira renderização a partir de um snapshot pré-gerado — as páginas renderizam instantaneamente e de forma amigável para SEO, depois atualizam em tempo real em segundo plano.
Formulários
Seção intitulada “Formulários”Formulários são uma funcionalidade de primeira classe, não algo que a IA constrói manualmente. Adicione um bloco de formulário e ele renderiza os campos, valida a entrada, envia e exibe um estado de sucesso:
<FormBlock form="contactForm" />Formulários também vêm prontos — um formulário de contato, uma solicitação de orçamento, um formulário de reserva, um formulário de pedido, um formulário de cadastro — e o Proyecta conecta o certo nas suas páginas. Os envios chegam na caixa de entrada do painel de administração do seu app, e o proprietário recebe um e-mail quando um novo envio chega. Veja Forms para o panorama completo.
Localização
Seção intitulada “Localização”O conteúdo pode ser traduzido para múltiplos locales. Campos marcados como localizados armazenam um valor por idioma, e os hooks de leitura os resolvem por meio de uma cadeia de fallback (idioma solicitado → fallbacks configurados → padrão) quando você passa o locale ativo do visitante:
const { data: posts } = useCollection('posts', { locale: 'es' });Apps com um único idioma ignoram locales completamente — não há nada para configurar. Para a história completa de tradução, veja Internationalization.
Releases
Seção intitulada “Releases”Um release agrupa várias entradas para que sejam publicadas (ou despublicadas) juntas — prepare uma entrega de conteúdo coordenada (um lançamento, uma nova página de produto, uma atualização de FAQ) e ative tudo de uma vez.
Nota: A publicação automática programada ainda não está implementada. Um release com uma data
scheduled_atentra no statusscheduled, mas deve ser publicado manualmente. A publicação automática no horário agendado está em breve.
Padrões comuns (deixe a IA configurar)
Seção intitulada “Padrões comuns (deixe a IA configurar)”Você raramente escreve isso manualmente — descreva o que quer e o Proyecta constrói com base em coleções reais:
"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."
Onde os dados do seu app ficam
Seção intitulada “Onde os dados do seu app ficam”O CMS é o repositório padrão para conteúdo e registros duráveis. Alguns tipos de dados ficam em sistemas específicos:
| Tipo de dado | Onde fica |
|---|---|
| Conteúdo e registros (posts, serviços, listagens, FAQs, catálogo, reservas) | Proyecta CMS (esta página) — o padrão |
| Estado em tempo real / comportamento (chat ao vivo, feeds, presença, estado de jogo) | Realtime store — em breve |
| Contas de usuário e login | Auth |
| Produtos, pedidos, assinaturas, pagamentos | Commerce |
| Arquivos enviados e mídia | Files & Media |
| Assets estáticos incorporados ao build | o diretório public/ no seu projeto |
O CMS é o padrão. Um realtime store para comportamentos genuinamente em tempo real está em breve; mesmo assim, conteúdo durável e o catálogo de commerce continuarão no CMS.
Em breve
Seção intitulada “Em breve”- Editor de conteúdo integrado ao builder — navegue e edite suas coleções CMS diretamente no dashboard do builder (hoje: gerencie conteúdo pelo painel de administração ou pela IA).
- Editor WYSIWYG de texto rico — edição visual para campos
markdown(hoje eles são editados como markdown). - Auto-publicação programada — releases que vão ao ar automaticamente no horário agendado.
- Preview ao vivo de alterações de conteúdo no seu app.
- Funções de conteúdo — permissões de editor separadas das permissões de desenvolvedor.