Hosting con 20% de descuento comprando por el enlace.

Recursos

Todo lo que viene en la caja

Un CMS completo en la descarga: panel, campos ricos, SEO, formularios, miembros y multi-idioma. Sin plugins que buscar, sin versión de pago.

Lo esencial

Un panel que se arma solo

El admin se genera del site.json — y ya nace con lo que todo sitio necesita por debajo.

Panel generado del esquema

Cada página, tipo de contenido y campo declarado se convierte en una pantalla de edición. El cliente solo ve lo que el sitio realmente tiene: sin menús de sobra, sin pantallas de configuración.

site.json → /admin

SEO integrado

Meta title, description y og:image adjuntados automáticamente a cada página e ítem, con sitemap.xml generado, incluyendo hreflang cuando el sitio es multiidioma.

sitemap.xml · hreflang · og:image

Biblioteca de medios

Subida con texto alternativo, nombres limpios y tamaños con nombre generados bajo demanda: thumb, hero, los que declares.

jpeg · png · gif · webp · svg · pdf

Formularios listos para usar

Protección CSRF y honeypot, envíos guardados en la base de datos y enviados por correo con asunto dinámico. ¿Falló el correo? El envío sigue guardado.

CSRF · honeypot · assunto {{name}}

Área de miembros

Logins del sitio (clientes, alumnos, leads) con tipos y campos propios, rutas personalizables y sesiones separadas de los usuarios del admin. Un problema en un lado no alcanza al otro.

sesiones aisladas del admin

Multiidioma nativo

URLs con prefijo y slug por idioma, traducción por contenido en pestañas dentro del propio editor y fallback automático: los helpers del tema resuelven el idioma solos.

/pt/ · /en/ · /es/

Campos

17 tipos de campo

Declarados en site.json, renderizados en el panel, leídos en el tema con field().

text
Texto de una línea — títulos, nombres, titulares.
textarea
Texto largo sin formato.
richtext
Editor visual (TipTap) que guarda HTML limpio.
image
Una imagen de la biblioteca de medios; resuelta con image_url().
gallery
Lista ordenada de imágenes.
select
Desplegable con opciones que defines.
boolean
Activar/desactivar — destacado, badge, sección opcional.
number
Valor numérico.
email
Input de email con validación HTML5.
url
Input de URL con validación HTML5.
date
Selector de fecha.
repeater
Grupo de subcampos que se repite — testimonios, FAQs, listas.
flexible
Bloques con layouts con nombre — el "contenido flexible" de ACF.
link
Título + URL + nueva pestaña; se imprime con link_tag().
item
Relación con otro contenido, por búsqueda — solo items publicados.
group
Caja organizativa plegable en el admin; el almacenamiento sigue plano.
tabs
Pestañas organizativas en el editor — solo visual, sin cambiar los datos.

Estructura

Estructura declarada, contenido libre

El site.json describe lo que el sitio puede tener. El panel y las URLs lo siguen.

Tipos de contenido

Posts, cases, servicios, inmuebles: tú los nombras. Cada tipo tiene slug, plantilla, listado de archivo y, si quieres, plantillas alternativas por ítem.

Taxonomias

Categorías, etiquetas y lo que necesites: jerárquicas o no, con página propia opcional y campos personalizados en los términos.

Relacionamentos

O campo item conecta contenidos, el case al servicio, el post al autor, con un combobox de búsqueda en el panel.

Páginas de las dos formas

Páginas estructurales declaradas en el schema (inicio, contacto) y plantillas de página para que el cliente cree nuevas en el admin, cada una con sus campos.

Opciones globales

Teléfono, redes sociales, textos del pie: las páginas de opciones se vuelven formularios en el admin y salen en el tema con option('contato.phone'), cacheado, una sola consulta.

Grupos reutilizables

field_groups define bundles de campos una vez (SEO local, bloque de CTA) y los reutiliza en páginas y tipos con una sola línea.

Vibe coding

La CLI es la API

Todo lo que hace el panel, la bin/velk lo hace por JSON. Así es como un agente de IA crea el schema, escribe contenido, publica y mantiene el sitio entero, de punta a punta.

  • bin/velk
  • schema:validate
  • page:sync
  • item:create
  • item:update
  • page:update
  • item:schema
  • --json-stdin
  • --dry-run
  • --format=json
~/my-site
$ ./bin/velk item:schema servico name · type · required — el mapa antes de escribir $ ./bin/velk item:create servico --json-stdin ✓ Item creado: consultoria-seo $ ./bin/velk item:publish servico consultoria-seo ✓ Publicado
Skill oficial
skill.velkcms.com

Pega en Claude Code para instalar:

Instala la skill de Velk desde skill.velkcms.com en ~/.claude/skills/velk

Bajo el capó

Hecho para durar en producción

  1. Upgrades sin miedo

    El engine es una dependencia versionada: el upgrade descarga el tarball, verifica el sha256 y cambia solo los archivos del core. Tema, contenido, uploads y .env quedan intactos.

  2. Auto-migrate en el arranque

    ¿Subiste archivos nuevos por FTP? En el primer acceso Velk aplica las migrations pendientes solo, serializado con lock en MySQL: un hosting sin SSH termina el upgrade sin abrir la terminal.

  3. Seguridad de fábrica

    Escape de salida con e(), SQL 100% en sentencias preparadas, CSRF en todo POST, honeypot en los formularios y sesiones de miembros aisladas de las del admin.

Mira todo esto funcionando

Instala la skill en Claude Code y describe tu primer sitio — la IA instala Velk y el panel aparece antes de que se enfríe el café.