Painel gerado do schema
Cada página, tipo de conteúdo e campo declarado vira uma tela de edição. O cliente só vê o que o site realmente tem: sem menus sobrando, sem telas de configuração.
site.json → /admin
Recursos
Um CMS completo no download: painel, campos ricos, SEO, formulários, membros e multi-idioma. Sem plugins pra caçar, sem versão paga.
O essencial
O admin é gerado do site.json — e já nasce com o que todo site precisa por baixo.
Cada página, tipo de conteúdo e campo declarado vira uma tela de edição. O cliente só vê o que o site realmente tem: sem menus sobrando, sem telas de configuração.
site.json → /admin
Meta title, description e og:image anexados automaticamente a toda página e item, com sitemap.xml gerado, incluindo hreflang quando o site é multi-idioma.
sitemap.xml · hreflang · og:image
Upload com texto alternativo, nomes limpos e tamanhos nomeados gerados sob demanda: thumb, hero, os que você declarar.
jpeg · png · gif · webp · svg · pdf
Proteção CSRF e honeypot, submissões salvas no banco e enviadas por e-mail com assunto dinâmico. Falhou o e-mail? A submissão continua guardada.
CSRF · honeypot · assunto {{name}}
Logins do site (clientes, alunos, leads) com tipos e campos próprios, rotas customizáveis e sessões separadas dos usuários do admin. Um problema num lado não alcança o outro.
sessões isoladas do admin
URLs com prefixo e slug por idioma, tradução por conteúdo em abas no próprio editor e fallback automático: os helpers do tema resolvem o idioma sozinhos.
/pt/ · /en/ · /es/
Campos
Declarados no site.json, renderizados no painel, lidos no tema com field().
Estrutura
O site.json descreve o que o site pode ter. O painel e as URLs seguem.
Posts, cases, serviços, imóveis: você nomeia. Cada tipo tem slug, template, arquivo de listagem e, se quiser, templates alternativos por item.
Categorias, tags e o que mais precisar: hierárquicas ou não, com página própria opcional e campos personalizados nos termos.
O campo item conecta conteúdos, o case ao serviço, o post ao autor, com um combobox de busca no painel.
Páginas estruturais declaradas no schema (home, contato) e templates de página pro cliente criar novas no admin, cada uma com seus campos.
Telefone, redes sociais, textos de rodapé: páginas de opções viram formulários no admin e saem no tema com option('contato.phone'), cacheado, uma query só.
field_groups define bundles de campos uma vez (SEO local, bloco de CTA) e reusa em páginas e tipos com uma linha.
Vibe coding
Tudo que o painel faz, a bin/velk faz por JSON. É assim que um agente de IA cria o schema, escreve conteúdo, publica e mantém o site inteiro, de ponta a ponta.
Cole no Claude Code para instalar:
Instale a skill do Velk de skill.velkcms.com em ~/.claude/skills/velk
Sob o capô
O engine é uma dependência versionada: o upgrade baixa o tarball, verifica o sha256 e troca só os arquivos do core. Tema, conteúdo, uploads e .env ficam intocados.
Subiu arquivos novos por FTP? No primeiro acesso o Velk aplica as migrations pendentes sozinho, serializado com lock no MySQL: hospedagem sem SSH termina o upgrade sem abrir terminal.
Escape de saída com e(), SQL 100% em prepared statements, CSRF em todo POST, honeypot nos formulários e sessões de membros isoladas das do admin.
Instale a skill no Claude Code e descreva o seu primeiro site — a IA instala o Velk e o painel aparece antes do café esfriar.