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
Recursos
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
El admin se genera del site.json — y ya nace con lo que todo sitio necesita por debajo.
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
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
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
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}}
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
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
Declarados en site.json, renderizados en el panel, leídos en el tema con field().
Estructura
El site.json describe lo que el sitio puede tener. El panel y las URLs lo siguen.
Posts, cases, servicios, inmuebles: tú los nombras. Cada tipo tiene slug, plantilla, listado de archivo y, si quieres, plantillas alternativas por ítem.
Categorías, etiquetas y lo que necesites: jerárquicas o no, con página propia opcional y campos personalizados en los términos.
O campo item conecta contenidos, el case al servicio, el post al autor, con un combobox de búsqueda en el panel.
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.
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.
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
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.
Pega en Claude Code para instalar:
Instala la skill de Velk desde skill.velkcms.com en ~/.claude/skills/velk
Bajo el capó
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.
¿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.
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.
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é.