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.
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.
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.
Upload de jpeg, png, gif, webp, svg e pdf com texto alternativo, nomes limpos e tamanhos nomeados gerados sob demanda — thumb, hero, os que você declarar.
Proteção CSRF + honeypot, submissões salvas no banco e enviadas por e-mail com assunto dinâmico ({{name}}). Falhou o e-mail? A submissão continua guardada.
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.
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.
Campos
Declarados no site.json, renderizados no painel, lidos no tema com field().
text
Texto de uma linha — títulos, nomes, chamadas.
textarea
Texto longo sem formatação.
richtext
Editor visual (TipTap) que salva HTML limpo.
image
Uma imagem da biblioteca de mídia; resolvida com image_url().
gallery
Lista ordenada de imagens.
select
Dropdown com opções que você define.
boolean
Liga/desliga — destaque, badge, seção opcional.
number
Valor numérico.
Input de e-mail com validação HTML5.
url
Input de URL com validação HTML5.
date
Seletor de data.
repeater
Grupo de subcampos que repete — depoimentos, FAQs, listas.
flexible
Blocos com layouts nomeados — o "conteúdo flexível" do ACF.
link
Título + URL + nova aba; imprime com link_tag().
item
Relacionamento com outro conteúdo, via busca — só itens publicados.
group
Caixa organizacional recolhível no admin; storage continua plano.
tabs
Abas organizacionais no editor — só visual, sem mudar os dados.
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 (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.
$ ./bin/velk item:schema servico
name · type · required — o mapa antes de escrever
$ ./bin/velk item:create servico --json-stdin
✓ Item criado: consultoria-seo
$ ./bin/velk item:publish servico consultoria-seo
✓ Publicado
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 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.