Recursos

Tudo que vem na caixa

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

Um painel que se monta sozinho

O admin é gerado do site.json — e já nasce com o que todo site precisa por baixo.

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.

SEO embutido

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.

Biblioteca de mídia

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.

Formulários prontos

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.

Área de membros

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.

Multi-idioma nativo

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

17 tipos de campo

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.

email

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

Estrutura declarada, conteúdo livre

O site.json descreve o que o site pode ter. O painel e as URLs seguem.

Tipos de conteúdo

Posts, cases, serviços, imóveis — você nomeia. Cada tipo tem slug, template, arquivo (listagem) e, se quiser, templates alternativos por item.

Taxonomias

Categorias, tags e o que mais precisar — hierárquicas ou não, com página própria opcional e campos personalizados nos termos.

Relacionamentos

O campo item conecta conteúdos — o case ao serviço, o post ao autor — com um combobox de busca no painel.

Páginas dos dois jeitos

Páginas estruturais declaradas no schema (home, contato) e templates de página pro cliente criar novas no admin — cada uma com seus campos.

Opções globais

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ó.

Grupos reutilizáveis

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

A CLI é a API

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.

  • schema:validate
  • page:sync
  • item:create
  • item:update
  • page:update
  • item:schema
  • --json-stdin
  • --dry-run
  • --format=json
bin/velk

$ ./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ô

Feito pra durar em produção

Upgrades sem medo

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.

Auto-migrate no boot

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.

Segurança de fábrica

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.

Veja tudo isso rodando

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.