Prepare component

This commit is contained in:
2025-05-30 01:07:33 -06:00
parent 3916c62935
commit cac9a5b121
263 changed files with 14456 additions and 1072 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,280 @@
{
"SuperAdmin" : {
"permissions" : [
"admin.website-admin.settings.general.view",
"admin.website-admin.settings.social.view",
"admin.website-admin.settings.indexing.view",
"admin.website-admin.contact.info.view",
"admin.website-admin.contact.form.view",
"admin.website-admin.comunication.messenger.view",
"admin.website-admin.comunication.whatsapp.view",
"admin.website-admin.comunication.tawk-to.view",
"admin.website-admin.comunication.twitter.view",
"admin.website-admin.translate.google-translate.view",
"admin.website-admin.translate.google-translate.update",
"admin.website-admin.cms.menus.view",
"admin.website-admin.cms.menus.update",
"admin.website-admin.cms.seo.view",
"admin.website-admin.cms.seo.update",
"admin.website-admin.cms.contents.view",
"admin.website-admin.cms.contents.create",
"admin.website-admin.cms.contents.update",
"admin.website-admin.cms.contents.delete",
"admin.website-admin.cms.versions.view",
"admin.website-admin.cms.versions.reopen",
"admin.website-admin.cms.templates.view",
"admin.website-admin.cms.templates.update",
"admin.website-admin.website.cache.fullpage.view",
"admin.website-admin.website.cache.fullpage.clean",
"admin.website-admin.website.cache.signed-previews.view",
"admin.website-admin.website.cache.signed-previews.clean",
"admin.website-admin.content.faq.view",
"admin.website-admin.content.faq.create",
"admin.website-admin.content.faq.update",
"admin.website-admin.content.faq.delete",
"admin.website-admin.content.gallery.view",
"admin.website-admin.content.gallery.create",
"admin.website-admin.content.gallery.delete",
"admin.website-admin.content.legal.view",
"admin.website-admin.content.legal.update",
"admin.website-admin.analytics.google-analytics.view",
"admin.website-admin.analytics.google-tags.view",
"admin.website-admin.analytics.google-search-console.view",
"admin.website-admin.analytics.pixel-meta.view",
"admin.website-admin.seo-tools.sitemap.view",
"admin.website-admin.seo-tools.jsonld.view",
"admin.website-admin.seo-tools.robots.view",
"admin.website-admin.seo-tools.manifest.view",
"admin.website-admin.seo-tools.canonical.view",
"admin.website-admin.seo-tools.social-cards.view",
"admin.website-admin.blog.categories.view",
"admin.website-admin.blog.categories.create",
"admin.website-admin.blog.categories.update",
"admin.website-admin.blog.categories.delete",
"admin.website-admin.blog.tags.view",
"admin.website-admin.blog.tags.create",
"admin.website-admin.blog.tags.update",
"admin.website-admin.blog.tags.delete",
"admin.website-admin.blog.articles.view",
"admin.website-admin.blog.articles.create",
"admin.website-admin.blog.articles.update",
"admin.website-admin.blog.articles.delete",
"admin.website-admin.blog.articles.publish",
"admin.website-admin.blog.articles.archive",
"admin.website-admin.blog.comments.view",
"admin.website-admin.blog.comments.delete",
"admin.website-admin.blog.comments.approve",
"admin.website-admin.blog.comments.cancel"
]
},
"WebsiteAdmin": {
"_meta": {
"description": {
"es": "Gestiona contenidos, menús, SEO y configuración del sitio web.",
"en": "Manages contents, menus, SEO, and website settings."
},
"icon": "ti ti-world",
"style": "warning"
},
"permissions" : [
"admin.website-admin.settings.general.view",
"admin.website-admin.settings.social.view",
"admin.website-admin.settings.indexing.view",
"admin.website-admin.contact.info.view",
"admin.website-admin.contact.form.view",
"admin.website-admin.comunication.messenger.view",
"admin.website-admin.comunication.whatsapp.view",
"admin.website-admin.comunication.tawk-to.view",
"admin.website-admin.comunication.twitter.view",
"admin.website-admin.translate.google-translate.view",
"admin.website-admin.translate.google-translate.update",
"admin.website-admin.cms.menus.view",
"admin.website-admin.cms.menus.update",
"admin.website-admin.cms.seo.view",
"admin.website-admin.cms.seo.update",
"admin.website-admin.cms.contents.view",
"admin.website-admin.cms.contents.create",
"admin.website-admin.cms.contents.update",
"admin.website-admin.cms.contents.delete",
"admin.website-admin.cms.versions.view",
"admin.website-admin.cms.versions.reopen",
"admin.website-admin.cms.templates.view",
"admin.website-admin.cms.templates.update",
"admin.website-admin.website.cache.fullpage.view",
"admin.website-admin.website.cache.fullpage.clean",
"admin.website-admin.website.cache.signed-previews.view",
"admin.website-admin.website.cache.signed-previews.clean",
"admin.website-admin.content.faq.view",
"admin.website-admin.content.faq.create",
"admin.website-admin.content.faq.update",
"admin.website-admin.content.faq.delete",
"admin.website-admin.content.gallery.view",
"admin.website-admin.content.gallery.create",
"admin.website-admin.content.gallery.delete",
"admin.website-admin.content.legal.view",
"admin.website-admin.content.legal.update",
"admin.website-admin.analytics.google-analytics.view",
"admin.website-admin.analytics.google-tags.view",
"admin.website-admin.analytics.google-search-console.view",
"admin.website-admin.analytics.pixel-meta.view",
"admin.website-admin.seo-tools.sitemap.view",
"admin.website-admin.seo-tools.jsonld.view",
"admin.website-admin.seo-tools.robots.view",
"admin.website-admin.seo-tools.manifest.view",
"admin.website-admin.seo-tools.canonical.view",
"admin.website-admin.seo-tools.social-cards.view",
"admin.website-admin.blog.categories.view",
"admin.website-admin.blog.categories.create",
"admin.website-admin.blog.categories.update",
"admin.website-admin.blog.categories.delete",
"admin.website-admin.blog.tags.view",
"admin.website-admin.blog.tags.create",
"admin.website-admin.blog.tags.update",
"admin.website-admin.blog.tags.delete",
"admin.website-admin.blog.articles.view",
"admin.website-admin.blog.articles.create",
"admin.website-admin.blog.articles.update",
"admin.website-admin.blog.articles.delete",
"admin.website-admin.blog.articles.publish",
"admin.website-admin.blog.articles.archive",
"admin.website-admin.blog.comments.view",
"admin.website-admin.blog.comments.delete",
"admin.website-admin.blog.comments.approve",
"admin.website-admin.blog.comments.cancel"
]
},
"WebsiteContentEditor": {
"_meta": {
"description": {
"es": "Puede crear, editar y publicar contenidos y artículos del blog.",
"en": "Can create, edit, and publish content and blog posts."
},
"icon": "ti ti-article",
"style": "info"
},
"permissions": [
"admin.website-admin.cms.menus.view",
"admin.website-admin.cms.menus.update",
"admin.website-admin.cms.seo.view",
"admin.website-admin.cms.seo.update",
"admin.website-admin.cms.contents.view",
"admin.website-admin.cms.contents.create",
"admin.website-admin.cms.contents.update",
"admin.website-admin.cms.contents.delete",
"admin.website-admin.cms.versions.view",
"admin.website-admin.cms.templates.view",
"admin.website-admin.website.cache.fullpage.view",
"admin.website-admin.website.cache.fullpage.clean",
"admin.website-admin.website.cache.signed-previews.view",
"admin.website-admin.website.cache.signed-previews.clean",
"admin.website-admin.content.faq.view",
"admin.website-admin.content.faq.create",
"admin.website-admin.content.faq.update",
"admin.website-admin.content.faq.delete",
"admin.website-admin.content.gallery.view",
"admin.website-admin.content.gallery.create",
"admin.website-admin.content.gallery.delete",
"admin.website-admin.content.legal.view",
"admin.website-admin.content.legal.update",
"admin.website-admin.seo-tools.sitemap.view",
"admin.website-admin.seo-tools.jsonld.view",
"admin.website-admin.seo-tools.robots.view",
"admin.website-admin.seo-tools.manifest.view",
"admin.website-admin.seo-tools.canonical.view",
"admin.website-admin.seo-tools.social-cards.view" ]
},
"BlogEditor": {
"_meta": {
"description": {
"es": "Puede crear, editar y publicar contenidos y artículos del blog.",
"en": "Can create, edit, and publish content and blog posts."
},
"icon": "ti ti-article",
"style": "info"
},
"permissions": [
"admin.website-admin.blog.categories.view",
"admin.website-admin.blog.categories.create",
"admin.website-admin.blog.categories.update",
"admin.website-admin.blog.categories.delete",
"admin.website-admin.blog.tags.view",
"admin.website-admin.blog.tags.create",
"admin.website-admin.blog.tags.update",
"admin.website-admin.blog.tags.delete",
"admin.website-admin.blog.articles.view",
"admin.website-admin.blog.articles.create",
"admin.website-admin.blog.articles.update",
"admin.website-admin.blog.articles.delete",
"admin.website-admin.blog.articles.publish",
"admin.website-admin.blog.articles.archive",
"admin.website-admin.blog.comments.view",
"admin.website-admin.blog.comments.delete",
"admin.website-admin.blog.comments.approve",
"admin.website-admin.blog.comments.cancel"
]
},
"WebsiteSEO": {
"_meta": {
"description": {
"es": "Gestiona herramientas SEO, Sitemap, Robots y JSON-LD.",
"en": "Manages SEO tools, Sitemap, Robots, and JSON-LD."
},
"icon": "ti ti-chart-arcs",
"style": "warning"
},
"permissions": [
"admin.website-admin.settings.general.view",
"admin.website-admin.settings.indexing.view",
"admin.website-admin.analytics.google-analytics.view",
"admin.website-admin.analytics.google-tags.view",
"admin.website-admin.analytics.google-search-console.view",
"admin.website-admin.analytics.pixel-meta.view",
"admin.website-admin.seo-tools.sitemap.view",
"admin.website-admin.seo-tools.jsonld.view",
"admin.website-admin.seo-tools.robots.view",
"admin.website-admin.seo-tools.manifest.view",
"admin.website-admin.seo-tools.canonical.view",
"admin.website-admin.seo-tools.social-cards.view"
]
},
"Auditor" : {
"permissions" : [
"admin.website-admin.settings.general.view",
"admin.website-admin.settings.social.view",
"admin.website-admin.settings.indexing.view",
"admin.website-admin.contact.info.view",
"admin.website-admin.contact.form.view",
"admin.website-admin.comunication.messenger.view",
"admin.website-admin.comunication.whatsapp.view",
"admin.website-admin.comunication.tawk-to.view",
"admin.website-admin.comunication.twitter.view",
"admin.website-admin.translate.google-translate.view",
"admin.website-admin.cms.menus.view",
"admin.website-admin.cms.seo.view",
"admin.website-admin.cms.contents.view",
"admin.website-admin.cms.versions.view",
"admin.website-admin.cms.templates.view",
"admin.website-admin.website.cache.fullpage.view",
"admin.website-admin.website.cache.signed-previews.view",
"admin.website-admin.content.faq.view",
"admin.website-admin.content.gallery.view",
"admin.website-admin.content.legal.view",
"admin.website-admin.analytics.google-analytics.view",
"admin.website-admin.analytics.google-tags.view",
"admin.website-admin.analytics.google-search-console.view",
"admin.website-admin.analytics.pixel-meta.view",
"admin.website-admin.seo-tools.sitemap.view",
"admin.website-admin.seo-tools.jsonld.view",
"admin.website-admin.seo-tools.robots.view",
"admin.website-admin.seo-tools.manifest.view",
"admin.website-admin.seo-tools.canonical.view",
"admin.website-admin.seo-tools.social-cards.view",
"admin.website-admin.blog.categories.view",
"admin.website-admin.blog.tags.view",
"admin.website-admin.blog.articles.view",
"admin.website-admin.blog.comments.view"
]
}
}

View File

@ -0,0 +1,192 @@
[
{
"site_id": 1,
"title": "Agroform",
"slug": "",
"description": "Bienvenido a agroform, soluciones tecnológicas para empresas.",
"keywords": ["agroform", "erp", "tecnología", "soluciones"],
"template": "home",
"type": "page",
"is_partial": false,
"seo_profile_id": "inicio-agroform",
"seo_overrides": null,
"canonical_url": "https://agroform.com.mx",
"content_blocks": [
{"type": "hero", "title": "Soluciones Tecnológicas para tu Empresa", "subtitle": "Desde ERP hasta eCommerce", "image": "/images/hero.jpg"},
{"type": "features", "items": [{"icon": "ti ti-server", "label": "Infraestructura"}, {"icon": "ti ti-code", "label": "Desarrollo a medida"}]},
{"type": "cta", "text": "Solicita una demo sin costo", "button": "Agendar llamada"}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 1,
"title": "Nosotros",
"slug": "nosotros",
"description": "Conoce la historia, visión y equipo de Koneko.",
"keywords": ["nosotros", "equipo", "historia", "koneko"],
"template": "default",
"type": "page",
"is_partial": false,
"seo_profile_id": "inicio-agroform",
"seo_overrides": null,
"canonical_url": "https://agroform.com.mx/nosotros",
"content_blocks": [
{"type": "text", "heading": "¿Quiénes somos?", "content": "Somos una empresa de tecnología con sede en México..."},
{"type": "team", "members": [{"name": "Arturo", "role": "Director Técnico"}, {"name": "Laura", "role": "Marketing"}]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 1,
"title": "Servicios",
"slug": "servicios",
"description": "Explora nuestros servicios: ERP, eCommerce, hosting y más.",
"keywords": ["erp", "servicios", "agroform", "sistemas"],
"template": "services",
"type": "page",
"is_partial": false,
"seo_profile_id": "servicios-agroform",
"seo_overrides": null,
"canonical_url": "https://agroform.com.mx/servicios",
"content_blocks": [
{"type": "service_list", "items": [
{"title": "ERP Agroform", "description": "Sistema de gestión empresarial completo"},
{"title": "Tienda Virtual", "description": "Ecommerce 100% administrable con SEO nativo"},
{"title": "Infraestructura", "description": "Servidores, VPS, Proxmox y más"}
]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 1,
"title": "Contacto",
"slug": "contacto",
"description": "Contáctanos para resolver tus dudas o agendar una demo.",
"keywords": ["contacto", "soporte", "demo", "ayuda"],
"template": "contact",
"type": "page",
"is_partial": false,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": "https://agroform.com.mx/contacto",
"content_blocks": [
{"type": "form", "fields": ["nombre", "email", "mensaje"], "submit_label": "Enviar mensaje"},
{"type": "map", "lat": 19.4326, "lng": -99.1332}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 1,
"title": "Aviso de Privacidad",
"slug": "aviso-privacidad",
"description": "Consulta nuestro aviso de privacidad actualizado.",
"keywords": ["legal", "privacidad", "datos personales"],
"template": "legal",
"type": "page",
"is_partial": false,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": "https://agroform.com.mx/aviso-privacidad",
"content_blocks": [
{"type": "text", "heading": "Política de privacidad", "content": "Tus datos son importantes para nosotros..."}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 1,
"title": "Preguntas Frecuentes",
"slug": "faq",
"description": "Resuelve tus dudas rápidamente con nuestras respuestas frecuentes.",
"keywords": ["faq", "dudas", "soporte"],
"template": "faq",
"type": "page",
"is_partial": true,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": null,
"content_blocks": [
{"type": "faq", "items": [
{"q": "¿Tienen soporte técnico?", "a": "Sí, disponible 24/7 para clientes activos."},
{"q": "¿Qué formas de pago aceptan?", "a": "Transferencia, tarjeta y criptomonedas."}
]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 1,
"title": "Header Principal",
"slug": "header-principal",
"description": "Encabezado superior con navegación.",
"keywords": [],
"template": null,
"type": "partial",
"is_partial": true,
"seo_profile_id": 1,
"seo_overrides": null,
"canonical_url": null,
"content_blocks": [
{"type": "menu", "menu_slug": "principal"}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 1,
"title": "Footer General",
"slug": "footer-general",
"description": "Pie de página con enlaces y datos legales.",
"keywords": [],
"template": null,
"type": "partial",
"is_partial": true,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": null,
"content_blocks": [
{"type": "footer", "links": ["inicio", "servicios", "contacto"]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 1,
"title": "Categoría: Blog",
"slug": "blog",
"description": "Explora nuestros artículos de tecnología y negocios.",
"keywords": ["blog", "noticias", "tips", "artículos"],
"template": "blog_index",
"type": "category",
"is_partial": false,
"seo_profile_id": "blog",
"seo_overrides": null,
"canonical_url": "https://agroform.com.mx/blog",
"content_blocks": [],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 1,
"title": "Artículo: Ventajas del ERP",
"slug": "blog/ventajas-del-erp",
"description": "Descubre cómo un ERP puede transformar tu empresa.",
"keywords": ["erp", "ventajas", "productividad", "sistemas"],
"template": "blog_article",
"type": "blog",
"is_partial": false,
"seo_profile_id": "promocion-computadoras-gamer",
"seo_overrides": null,
"canonical_url": "https://agroform.com.mx/blog/ventajas-del-erp",
"content_blocks": [
{"type": "text", "heading": "Beneficios del ERP", "content": "Centralización de procesos, automatización..."},
{"type": "image", "src": "/images/blog/erp-benefits.jpg", "alt": "ERP y eficiencia empresarial"}
],
"is_draft": false,
"is_sensitive": false
}
]

View File

@ -0,0 +1,66 @@
[
{
"menu_slug": "main-header",
"title": {
"es": "Inicio",
"en": "Home"
},
"url": "/",
"type": "custom",
"target": "_self",
"order": 1,
"icon": "ti ti-home"
},
{
"menu_slug": "main-header",
"title": {
"es": "Artículos",
"en": "Articles"
},
"url": "/blog",
"type": "blog_article",
"target": "_self",
"order": 2,
"icon": "ti ti-news"
},
{
"menu_slug": "main-header",
"title": {
"es": "Categorías",
"en": "Categories"
},
"url": "/blog/categorias",
"type": "blog_category",
"target": "_self",
"order": 3,
"icon": "ti ti-list"
},
{
"menu_slug": "main-header",
"title": {
"es": "Iniciar Sesión",
"en": "Login"
},
"url": "/login",
"type": "custom",
"target": "_self",
"order": 4,
"icon": "ti ti-login",
"badge": "Nuevo",
"badge_color": "bg-success"
},
{
"menu_slug": "main-header",
"title": {
"es": "Cerrar Sesión",
"en": "Logout"
},
"url": "/logout",
"type": "action",
"target": "_self",
"order": 5,
"icon": "ti ti-logout",
"method": "POST",
"roles": ["authenticated"]
}
]

View File

@ -0,0 +1,192 @@
[
{
"site_id": 2,
"title": "Cleanfy",
"slug": "",
"description": "Bienvenido a cleanfy, soluciones tecnológicas para empresas.",
"keywords": ["cleanfy", "erp", "tecnología", "soluciones"],
"template": "home",
"type": "page",
"is_partial": false,
"seo_profile_id": "inicio-cleanfy",
"seo_overrides": null,
"canonical_url": "https://cleanfy.mx",
"content_blocks": [
{"type": "hero", "title": "Soluciones Tecnológicas para tu Empresa", "subtitle": "Desde ERP hasta eCommerce", "image": "/images/hero.jpg"},
{"type": "features", "items": [{"icon": "ti ti-server", "label": "Infraestructura"}, {"icon": "ti ti-code", "label": "Desarrollo a medida"}]},
{"type": "cta", "text": "Solicita una demo sin costo", "button": "Agendar llamada"}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 2,
"title": "Nosotros",
"slug": "nosotros",
"description": "Conoce la historia, visión y equipo de Koneko.",
"keywords": ["nosotros", "equipo", "historia", "koneko"],
"template": "default",
"type": "page",
"is_partial": false,
"seo_profile_id": "inicio-cleanfy",
"seo_overrides": null,
"canonical_url": "https://cleanfy.mx/nosotros",
"content_blocks": [
{"type": "text", "heading": "¿Quiénes somos?", "content": "Somos una empresa de tecnología con sede en México..."},
{"type": "team", "members": [{"name": "Arturo", "role": "Director Técnico"}, {"name": "Laura", "role": "Marketing"}]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 2,
"title": "Servicios",
"slug": "servicios",
"description": "Explora nuestros servicios: ERP, eCommerce, hosting y más.",
"keywords": ["erp", "servicios", "cleanfy", "sistemas"],
"template": "services",
"type": "page",
"is_partial": false,
"seo_profile_id": "servicios-cleanfy",
"seo_overrides": null,
"canonical_url": "https://cleanfy.mx/servicios",
"content_blocks": [
{"type": "service_list", "items": [
{"title": "ERP Cleanfy", "description": "Sistema de gestión empresarial completo"},
{"title": "Tienda Virtual", "description": "Ecommerce 100% administrable con SEO nativo"},
{"title": "Infraestructura", "description": "Servidores, VPS, Proxmox y más"}
]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 2,
"title": "Contacto",
"slug": "contacto",
"description": "Contáctanos para resolver tus dudas o agendar una demo.",
"keywords": ["contacto", "soporte", "demo", "ayuda"],
"template": "contact",
"type": "page",
"is_partial": false,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": "https://cleanfy.mx/contacto",
"content_blocks": [
{"type": "form", "fields": ["nombre", "email", "mensaje"], "submit_label": "Enviar mensaje"},
{"type": "map", "lat": 19.4326, "lng": -99.1332}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 2,
"title": "Aviso de Privacidad",
"slug": "aviso-privacidad",
"description": "Consulta nuestro aviso de privacidad actualizado.",
"keywords": ["legal", "privacidad", "datos personales"],
"template": "legal",
"type": "page",
"is_partial": false,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": "https://cleanfy.mx/aviso-privacidad",
"content_blocks": [
{"type": "text", "heading": "Política de privacidad", "content": "Tus datos son importantes para nosotros..."}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 2,
"title": "Preguntas Frecuentes",
"slug": "faq",
"description": "Resuelve tus dudas rápidamente con nuestras respuestas frecuentes.",
"keywords": ["faq", "dudas", "soporte"],
"template": "faq",
"type": "page",
"is_partial": true,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": null,
"content_blocks": [
{"type": "faq", "items": [
{"q": "¿Tienen soporte técnico?", "a": "Sí, disponible 24/7 para clientes activos."},
{"q": "¿Qué formas de pago aceptan?", "a": "Transferencia, tarjeta y criptomonedas."}
]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 2,
"title": "Header Principal",
"slug": "header-principal",
"description": "Encabezado superior con navegación.",
"keywords": [],
"template": null,
"type": "partial",
"is_partial": true,
"seo_profile_id": 1,
"seo_overrides": null,
"canonical_url": null,
"content_blocks": [
{"type": "menu", "menu_slug": "principal"}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 2,
"title": "Footer General",
"slug": "footer-general",
"description": "Pie de página con enlaces y datos legales.",
"keywords": [],
"template": null,
"type": "partial",
"is_partial": true,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": null,
"content_blocks": [
{"type": "footer", "links": ["inicio", "servicios", "contacto"]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 2,
"title": "Categoría: Blog",
"slug": "blog",
"description": "Explora nuestros artículos de tecnología y negocios.",
"keywords": ["blog", "noticias", "tips", "artículos"],
"template": "blog_index",
"type": "category",
"is_partial": false,
"seo_profile_id": "blog",
"seo_overrides": null,
"canonical_url": "https://cleanfy.mx/blog",
"content_blocks": [],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 2,
"title": "Artículo: Ventajas del ERP",
"slug": "blog/ventajas-del-erp",
"description": "Descubre cómo un ERP puede transformar tu empresa.",
"keywords": ["erp", "ventajas", "productividad", "sistemas"],
"template": "blog_article",
"type": "blog",
"is_partial": false,
"seo_profile_id": "promocion-computadoras-gamer",
"seo_overrides": null,
"canonical_url": "https://cleanfy.mx/blog/ventajas-del-erp",
"content_blocks": [
{"type": "text", "heading": "Beneficios del ERP", "content": "Centralización de procesos, automatización..."},
{"type": "image", "src": "/images/blog/erp-benefits.jpg", "alt": "ERP y eficiencia empresarial"}
],
"is_draft": false,
"is_sensitive": false
}
]

View File

@ -0,0 +1,74 @@
[
{
"menu_slug": "main-header",
"title": {
"es": "Inicio",
"en": "Home"
},
"route_name": "website.home",
"type": "custom",
"target": "_self",
"order": 1,
"icon": "ti ti-home"
},
{
"menu_slug": "main-header",
"title": {
"es": "Nosotros",
"en": "About Us"
},
"route_name": "website.about",
"type": "custom",
"target": "_self",
"order": 2,
"icon": "ti ti-users"
},
{
"menu_slug": "main-header",
"title": {
"es": "Servicios",
"en": "Services"
},
"route_name": "website.services",
"type": "custom",
"target": "_self",
"order": 3,
"icon": "ti ti-briefcase"
},
{
"menu_slug": "main-header",
"title": {
"es": "Portafolio",
"en": "Portfolio"
},
"route_name": "website.portfolio",
"type": "custom",
"target": "_self",
"order": 4,
"icon": "ti ti-photo"
},
{
"menu_slug": "main-header",
"title": {
"es": "Testimonios",
"en": "Testimonials"
},
"route_name": "website.testimonials",
"type": "custom",
"target": "_self",
"order": 5,
"icon": "ti ti-messages"
},
{
"menu_slug": "main-header",
"title": {
"es": "Contacto",
"en": "Contact"
},
"route_name": "website.contact",
"type": "custom",
"target": "_self",
"order": 6,
"icon": "ti ti-phone-call"
}
]

View File

@ -0,0 +1,44 @@
[
{
"site_id": 1,
"slug": "main-header",
"title": "Menú Principal",
"description": "Navegación principal del sitio web Cleanfy.",
"is_active": true
},
{
"site_id": 1,
"slug": "footer",
"title": "Menú Footer",
"description": "Navegación del footer del sitio web Cleanfy.",
"is_active": true
},
{
"site_id": 2,
"slug": "main-header",
"title": "Menú Principal",
"description": "Navegación principal del sitio web Agroform.",
"is_active": true
},
{
"site_id": 2,
"slug": "footer",
"title": "Menú Footer",
"description": "Navegación del footer del sitio web Agroform.",
"is_active": true
},
{
"site_id": 3,
"slug": "main-header",
"title": "Menú Principal",
"description": "Navegación principal del sitio web Realcity.",
"is_active": true
},
{
"site_id": 3,
"slug": "footer",
"title": "Menú Footer",
"description": "Navegación del footer del sitio web Realcity.",
"is_active": true
}
]

View File

@ -0,0 +1,192 @@
[
{
"site_id": 3,
"title": "Realcity",
"slug": "",
"description": "Bienvenido a realcity, soluciones tecnológicas para empresas.",
"keywords": ["realcity", "erp", "tecnología", "soluciones"],
"template": "home",
"type": "page",
"is_partial": false,
"seo_profile_id": "inicio-realcity",
"seo_overrides": null,
"canonical_url": "https://realcity.com.mx",
"content_blocks": [
{"type": "hero", "title": "Soluciones Tecnológicas para tu Empresa", "subtitle": "Desde ERP hasta eCommerce", "image": "/images/hero.jpg"},
{"type": "features", "items": [{"icon": "ti ti-server", "label": "Infraestructura"}, {"icon": "ti ti-code", "label": "Desarrollo a medida"}]},
{"type": "cta", "text": "Solicita una demo sin costo", "button": "Agendar llamada"}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 3,
"title": "Nosotros",
"slug": "nosotros",
"description": "Conoce la historia, visión y equipo de Koneko.",
"keywords": ["nosotros", "equipo", "historia", "koneko"],
"template": "default",
"type": "page",
"is_partial": false,
"seo_profile_id": "inicio-realcity",
"seo_overrides": null,
"canonical_url": "https://realcity.com.mx/nosotros",
"content_blocks": [
{"type": "text", "heading": "¿Quiénes somos?", "content": "Somos una empresa de tecnología con sede en México..."},
{"type": "team", "members": [{"name": "Arturo", "role": "Director Técnico"}, {"name": "Laura", "role": "Marketing"}]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 3,
"title": "Servicios",
"slug": "servicios",
"description": "Explora nuestros servicios: ERP, eCommerce, hosting y más.",
"keywords": ["erp", "servicios", "realcity", "sistemas"],
"template": "services",
"type": "page",
"is_partial": false,
"seo_profile_id": "servicios-realcity",
"seo_overrides": null,
"canonical_url": "https://realcity.com.mx/servicios",
"content_blocks": [
{"type": "service_list", "items": [
{"title": "ERP Realcity", "description": "Sistema de gestión empresarial completo"},
{"title": "Tienda Virtual", "description": "Ecommerce 100% administrable con SEO nativo"},
{"title": "Infraestructura", "description": "Servidores, VPS, Proxmox y más"}
]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 3,
"title": "Contacto",
"slug": "contacto",
"description": "Contáctanos para resolver tus dudas o agendar una demo.",
"keywords": ["contacto", "soporte", "demo", "ayuda"],
"template": "contact",
"type": "page",
"is_partial": false,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": "https://realcity.com.mx/contacto",
"content_blocks": [
{"type": "form", "fields": ["nombre", "email", "mensaje"], "submit_label": "Enviar mensaje"},
{"type": "map", "lat": 19.4326, "lng": -99.1332}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 3,
"title": "Aviso de Privacidad",
"slug": "aviso-privacidad",
"description": "Consulta nuestro aviso de privacidad actualizado.",
"keywords": ["legal", "privacidad", "datos personales"],
"template": "legal",
"type": "page",
"is_partial": false,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": "https://realcity.com.mx/aviso-privacidad",
"content_blocks": [
{"type": "text", "heading": "Política de privacidad", "content": "Tus datos son importantes para nosotros..."}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 3,
"title": "Preguntas Frecuentes",
"slug": "faq",
"description": "Resuelve tus dudas rápidamente con nuestras respuestas frecuentes.",
"keywords": ["faq", "dudas", "soporte"],
"template": "faq",
"type": "page",
"is_partial": true,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": null,
"content_blocks": [
{"type": "faq", "items": [
{"q": "¿Tienen soporte técnico?", "a": "Sí, disponible 24/7 para clientes activos."},
{"q": "¿Qué formas de pago aceptan?", "a": "Transferencia, tarjeta y criptomonedas."}
]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 3,
"title": "Header Principal",
"slug": "header-principal",
"description": "Encabezado superior con navegación.",
"keywords": [],
"template": null,
"type": "partial",
"is_partial": true,
"seo_profile_id": 1,
"seo_overrides": null,
"canonical_url": null,
"content_blocks": [
{"type": "menu", "menu_slug": "principal"}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 3,
"title": "Footer General",
"slug": "footer-general",
"description": "Pie de página con enlaces y datos legales.",
"keywords": [],
"template": null,
"type": "partial",
"is_partial": true,
"seo_profile_id": null,
"seo_overrides": null,
"canonical_url": null,
"content_blocks": [
{"type": "footer", "links": ["inicio", "servicios", "contacto"]}
],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 3,
"title": "Categoría: Blog",
"slug": "blog",
"description": "Explora nuestros artículos de tecnología y negocios.",
"keywords": ["blog", "noticias", "tips", "artículos"],
"template": "blog_index",
"type": "category",
"is_partial": false,
"seo_profile_id": "blog",
"seo_overrides": null,
"canonical_url": "https://realcity.com.mx/blog",
"content_blocks": [],
"is_draft": false,
"is_sensitive": false
},
{
"site_id": 3,
"title": "Artículo: Ventajas del ERP",
"slug": "blog/ventajas-del-erp",
"description": "Descubre cómo un ERP puede transformar tu empresa.",
"keywords": ["erp", "ventajas", "productividad", "sistemas"],
"template": "blog_article",
"type": "blog",
"is_partial": false,
"seo_profile_id": "promocion-computadoras-gamer",
"seo_overrides": null,
"canonical_url": "https://realcity.com.mx/blog/ventajas-del-erp",
"content_blocks": [
{"type": "text", "heading": "Beneficios del ERP", "content": "Centralización de procesos, automatización..."},
{"type": "image", "src": "/images/blog/erp-benefits.jpg", "alt": "ERP y eficiencia empresarial"}
],
"is_draft": false,
"is_sensitive": false
}
]

View File

@ -0,0 +1,92 @@
[
{
"menu_slug": "main-header",
"title": {
"es": "Inicio",
"en": "Home"
},
"type": "cms_page",
"order": 1,
"icon": "ti ti-home"
},
{
"menu_slug": "main-header",
"title": {
"es": "Nuestro corporativo",
"en": "About Us"
},
"type": "cms_page",
"order": 2,
"icon": "ti ti-users"
},
{
"menu_slug": "main-header",
"title": {
"es": "Soluciones y servicios",
"en": "Solutions and services"
},
"type": "cms_page",
"order": 3,
"icon": "ti ti-briefcase"
},
{
"menu_slug": "main-header",
"title": {
"es": "Valor y Beneficios",
"en": "Value and Benefits"
},
"type": "cms_page",
"order": 4,
"icon": "ti ti-briefcase"
},
{
"menu_slug": "main-header",
"title": {
"es": "Experiencia de éxito",
"en": "Success Experience"
},
"type": "cms_page",
"order": 5,
"icon": "ti ti-briefcase"
},
{
"menu_slug": "main-header",
"title": {
"es": "Blog y contenido",
"en": "Blog and content"
},
"type": "blog_article",
"order": 6,
"icon": "ti ti-news"
},
{
"menu_slug": "main-header",
"title": {
"es": "Residentes y usuarios",
"en": "Residents and users"
},
"type": "cms_page",
"order": 7,
"icon": "ti ti-users"
},
{
"menu_slug": "main-header",
"title": {
"es": "Contacto",
"en": "Contact"
},
"type": "action",
"order": 8,
"icon": "ti ti-phone-call"
},
{
"menu_slug": "main-header",
"title": {
"es": "Legales",
"en": "Legal"
},
"type": "cms_page",
"order": 9,
"icon": "ti ti-file"
}
]

View File

@ -0,0 +1,145 @@
[
{
"site_id": 1,
"type": "page",
"title": "AgroForm México | Jardinería Integral con Tecnología y Sostenibilidad",
"slug": "agroform-home",
"description": "AgroForm México transforma espacios verdes desde 2017 con servicios de jardinería, mantenimiento y diseño innovador. Combinamos sostenibilidad, tecnología y excelencia para embellecer y proteger tu inversión.",
"schema_org": {
"@context": "https://schema.org",
"@type": "Organization",
"name": "AgroForm México",
"url": "https://agroform.com.mx",
"logo": "https://agroform.com.mx/assets/logo.png",
"description": "Servicios de jardinería, mantenimiento de áreas verdes y paisajismo sostenible en México.",
"foundingDate": "2017",
"areaServed": "MX",
"sameAs": [
"https://www.facebook.com/agroformmx",
"https://www.instagram.com/agroformmx"
]
},
"noindex": false,
"nofollow": false,
"locale": "es-MX",
"geo_location": {
"geo.region": "MX",
"geo.placename": "México"
},
"og_type": "website",
"og_title": "AgroForm México | Jardinería Integral con Tecnología y Sostenibilidad",
"og_description": "Creamos y cuidamos jardines, parques y espacios verdes sostenibles con tecnología de punta y personal altamente capacitado.",
"og_image": "https://agroform.com.mx/assets/og-image.jpg",
"og_url": "https://agroform.com.mx",
"og_site_name": "AgroForm México",
"twitter_card": "summary_large_image",
"twitter_title": "AgroForm México",
"twitter_description": "Soluciones integrales en jardinería y paisajismo sostenible para parques y espacios verdes.",
"twitter_image": "https://agroform.com.mx/assets/twitter-card.jpg",
"twitter_site": "@agroformmx",
"twitter_creator": "@agroformmx",
"json_ld": {
"@context": "https://schema.org",
"@type": "WebPage",
"name": "AgroForm México",
"url": "https://agroform.com.mx",
"description": "Empresa mexicana líder en jardinería integral, mantenimiento de áreas verdes y paisajismo con enfoque tecnológico y sostenible."
},
"created_by": 1,
"updated_by": 1,
"created_at": "2025-05-24T17:00:00",
"updated_at": "2025-05-24T17:00:00"
},
{
"site_id": 2,
"type": "page",
"title": "CleanFy México | Soluciones Integrales de Limpieza y Sanitización",
"slug": "cleanfy-home",
"description": "CleanFy es tu socio estratégico en limpieza profesional y sanitización en México. Con personal capacitado, tecnología avanzada y enfoque sostenible, garantizamos espacios seguros, limpios y saludables.",
"schema_org": {
"@context": "https://schema.org",
"@type": "Organization",
"name": "CleanFy México",
"url": "https://cleanfy.mx",
"logo": "https://cleanfy.mx/assets/logo.png",
"description": "Empresa líder en soluciones integrales de limpieza, sanitización y mantenimiento para hogares, oficinas, industrias y más.",
"foundingDate": "2017",
"areaServed": "MX",
"sameAs": [
"https://www.facebook.com/cleanfymx",
"https://www.instagram.com/cleanfymx"
]
},
"noindex": false,
"nofollow": false,
"locale": "es-MX",
"geo_location": {
"geo.region": "MX",
"geo.placename": "México"
},
"og_type": "website",
"og_title": "CleanFy México | Soluciones Integrales de Limpieza y Sanitización",
"og_description": "Transformamos espacios en ambientes impecables y seguros. Limpieza profesional, protocolos tecnológicos, y compromiso con la calidad y la salud.",
"og_image": "https://cleanfy.mx/assets/og-image.jpg",
"og_url": "https://cleanfy.mx",
"og_site_name": "CleanFy México",
"twitter_card": "summary_large_image",
"twitter_title": "CleanFy México",
"twitter_description": "Empresa profesional de limpieza y sanitización con tecnología, compromiso y excelencia.",
"twitter_image": "https://cleanfy.mx/assets/twitter-card.jpg",
"twitter_site": "@cleanfymx",
"twitter_creator": "@cleanfymx",
"json_ld": {
"@context": "https://schema.org",
"@type": "WebPage",
"name": "CleanFy México",
"url": "https://cleanfy.mx",
"description": "Empresa mexicana especializada en limpieza y sanitización profesional para empresas, oficinas y hogares. Tecnología, personal capacitado y sostenibilidad al servicio de la salud y productividad."
}
}
,
{
"site_id": 3,
"type": "page",
"title": "RealCity México | Próximamente la Nueva Plataforma Inmobiliaria",
"slug": "realcity-coming-soon",
"description": "Prepárate para una experiencia inmobiliaria moderna y eficiente. RealCity está por llegar para transformar la forma de comprar, vender y rentar propiedades en México.",
"schema_org": {
"@context": "https://schema.org",
"@type": "Organization",
"name": "RealCity México",
"url": "https://realcity.com.mx",
"logo": "https://realcity.com.mx/assets/logo.png",
"description": "Plataforma inmobiliaria innovadora en México, especializada en conectar compradores, vendedores e inversionistas mediante tecnología moderna.",
"foundingDate": "2025",
"areaServed": "MX"
},
"noindex": false,
"nofollow": false,
"locale": "es-MX",
"geo_location": {
"geo.region": "MX",
"geo.placename": "México"
},
"og_type": "website",
"og_title": "RealCity México | Próximamente la Nueva Plataforma Inmobiliaria",
"og_description": "Muy pronto una nueva experiencia digital para el sector inmobiliario. Encuentra la propiedad ideal con RealCity México.",
"og_image": "https://realcity.com.mx/assets/og-image.jpg",
"og_url": "https://realcity.com.mx",
"og_site_name": "RealCity México",
"twitter_card": "summary_large_image",
"twitter_title": "RealCity México",
"twitter_description": "Innovación inmobiliaria en México. RealCity es la nueva forma de buscar, publicar y cerrar negocios en bienes raíces.",
"twitter_image": "https://realcity.com.mx/assets/twitter-card.jpg",
"twitter_site": "@realcitymx",
"twitter_creator": "@realcitymx",
"json_ld": {
"@context": "https://schema.org",
"@type": "WebPage",
"name": "RealCity México",
"url": "https://realcity.com.mx",
"description": "RealCity ofrece una plataforma tecnológica avanzada para transformar la experiencia inmobiliaria en México, con servicios digitales para compra, venta y renta de propiedades."
}
}
]

View File

@ -0,0 +1,220 @@
[
{
"name": "cleanfy.mx",
"slug": "cleanfy-mx",
"domain": "cleanfy.mx",
"template": "cleaning-services",
"status": "active",
"is_active": true,
"is_indexable": true,
"meta_title": "Limpieza Profesional - Cleanfy",
"meta_description": "Servicios de limpieza profesional y desinfección para empresas y hogares en México.",
"canonical_url": "https://cleanfy.mx",
"locale": "es-MX",
"robots_directives": "index,follow",
"config": {
"favicon": "/assets/cleanfy/favicon.ico",
"primary_color": "#27ae60",
"logo": "/assets/cleanfy/logo.svg"
},
"social": {
"og:title": "Cleanfy.mx",
"og:image": "/assets/cleanfy/og-image.jpg",
"twitter:card": "summary_large_image",
"twitter:site": "@cleanfymx"
}
},
{
"name": "agroform.com.mx",
"slug": "agroform-com-mx",
"domain": "agroform.com.mx",
"template": "renewable-energy",
"status": "coming_soon",
"is_active": true,
"is_indexable": false,
"meta_title": "AgroForm | Agricultura Inteligente",
"meta_description": "Soluciones tecnológicas para productores agrícolas: sensores, plataformas y más.",
"canonical_url": "https://agroform.com.mx",
"locale": "es-MX",
"robots_directives": "noindex,nofollow",
"config": {
"maintenance_page": "coming-soon",
"primary_color": "#388e3c",
"logo": "/assets/agroform/logo.svg"
},
"social": {
"og:title": "AgroForm",
"og:description": "Innovación para el campo mexicano.",
"twitter:site": "@agroformmx"
}
},
{
"name": "realcity.com.mx",
"slug": "realcity-com-mx",
"domain": "realcity.com.mx",
"template": "business-consulting-4",
"status": "active",
"is_active": true,
"is_indexable": true,
"meta_title": "RealCity | Bienes Raíces Premium",
"meta_description": "Compra y renta de propiedades en zonas exclusivas. Encuentra tu próximo hogar con RealCity.",
"canonical_url": "https://realcity.com.mx",
"locale": "es-MX",
"robots_directives": "index,follow",
"config": {
"template_variant": "real-estate",
"primary_color": "#34495e",
"logo": "/assets/realcity/logo.svg"
},
"social": {
"og:title": "RealCity",
"og:image": "/assets/realcity/og-image.jpg",
"og:type": "website",
"twitter:site": "@realcitymx"
}
},
{
"name": "anonymous.test",
"slug": "anonymous-test",
"domain": "anonymous.test",
"template": "anonymous",
"status": "active",
"is_active": true,
"is_indexable": true,
"meta_title": "Anonymous",
"meta_description": "Anonymous",
"canonical_url": "https://anonymous.test",
"locale": "es-MX",
"robots_directives": "index,follow",
"config": {
"primary_color": "#34495e",
"logo": "/assets/anonymous/logo.svg"
},
"social": {
"og:title": "Anonymous",
"og:image": "/assets/anonymous/og-image.jpg",
"og:type": "website",
"twitter:site": "@anonymousmx"
}
},
{
"name": "landwind.test",
"slug": "landwind-test",
"domain": "landwind.test",
"template": "landwind",
"status": "active",
"is_active": true,
"is_indexable": true,
"meta_title": "Landwind",
"meta_description": "Landwind",
"canonical_url": "https://landwind.test",
"locale": "es-MX",
"robots_directives": "index,follow",
"config": {
"primary_color": "#34495e",
"logo": "/assets/landwind/logo.svg"
},
"social": {
"og:title": "Landwind",
"og:image": "/assets/landwind/og-image.jpg",
"og:type": "website",
"twitter:site": "@landwindmx"
}
},
{
"name": "limaa-m.test",
"slug": "limaa-m-test",
"domain": "limaa-m.test",
"template": "limaa-m",
"status": "active",
"is_active": true,
"is_indexable": true,
"meta_title": "Limaa M",
"meta_description": "Limaa M",
"canonical_url": "https://limaa-m.test",
"locale": "es-MX",
"robots_directives": "index,follow",
"config": {
"primary_color": "#34495e",
"logo": "/assets/limaa-m/logo.svg"
},
"social": {
"og:title": "Limaa M",
"og:image": "/assets/limaa-m/og-image.jpg",
"og:type": "website",
"twitter:site": "@limaa-mmx"
}
},
{
"name": "maximus.test",
"slug": "maximus-test",
"domain": "maximus.test",
"template": "maximus",
"status": "active",
"is_active": true,
"is_indexable": true,
"meta_title": "Maximus",
"meta_description": "Maximus",
"canonical_url": "https://maximus.test",
"locale": "es-MX",
"robots_directives": "index,follow",
"config": {
"primary_color": "#34495e",
"logo": "/assets/maximus/logo.svg"
},
"social": {
"og:title": "Maximus",
"og:image": "/assets/maximus/og-image.jpg",
"og:type": "website",
"twitter:site": "@maximusmx"
}
},
{
"name": "notus.test",
"slug": "notus-test",
"domain": "notus.test",
"template": "notus",
"status": "active",
"is_active": true,
"is_indexable": true,
"meta_title": "Notus",
"meta_description": "Notus",
"canonical_url": "https://notus.test",
"locale": "es-MX",
"robots_directives": "index,follow",
"config": {
"primary_color": "#34495e",
"logo": "/assets/notus/logo.svg"
},
"social": {
"og:title": "Notus",
"og:image": "/assets/notus/og-image.jpg",
"og:type": "website",
"twitter:site": "@notusmx"
}
},
{
"name": "samuel-coming-soon.test",
"slug": "samuel-coming-soon-test",
"domain": "samuel-coming-soon.test",
"template": "samuel-coming-soon",
"status": "active",
"is_active": true,
"is_indexable": true,
"meta_title": "Samuel Coming Soon",
"meta_description": "Samuel Coming Soon",
"canonical_url": "https://samuel-coming-soon.test",
"locale": "es-MX",
"robots_directives": "index,follow",
"config": {
"primary_color": "#34495e",
"logo": "/assets/samuel-coming-soon/logo.svg"
},
"social": {
"og:title": "Samuel Coming Soon",
"og:image": "/assets/samuel-coming-soon/og-image.jpg",
"og:type": "website",
"twitter:site": "@samuelcomingsoonmx"
}
}
]

View File

@ -0,0 +1,77 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('website_seo_profiles', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('site_id')->nullable()->index();
// Metadata
$table->string('type', 16)->default('page')->index(); // Enum: Content, Landing, Product, Category Blog
$table->string('title')->nullable()->index(); // Título del perfil
$table->string('slug')->unique();
$table->mediumText('description')->nullable(); // Descripción del perfil
// Tipos de schema adicionales
$table->json('schema_org')->nullable();
// Robots Directives
$table->boolean('noindex')->default(false);
$table->boolean('nofollow')->default(false);
// Idioma y Geolocalización
$table->string('locale', 8)->default('es-MX')->index(); // Para SEO internacional
$table->json('geo_location')->nullable(); // meta geo.region y geo.placename
// Open Graph
$table->string('og_type')->nullable();
$table->string('og_title')->nullable();
$table->text('og_description')->nullable();
$table->string('og_image')->nullable();
$table->string('og_url')->nullable();
$table->string('og_site_name')->nullable();
// Twitter Card
$table->string('twitter_card')->default('summary_large_image');
$table->string('twitter_title')->nullable();
$table->text('twitter_description')->nullable();
$table->string('twitter_image')->nullable();
$table->string('twitter_site')->nullable();
$table->string('twitter_creator')->nullable();
// JSON-LD opcional (almacenado como bloque JSON)
$table->json('json_ld')->nullable();
// Auditoria
$table->unsignedMediumInteger('created_by')->nullable();
$table->unsignedMediumInteger('updated_by')->nullable();
$table->timestamps();
// Indices
$table->index(['site_id', 'type']);
$table->index(['site_id', 'type', 'slug']);
// Relaciones
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('website_seo_profiles');
}
};

View File

@ -0,0 +1,64 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('website_sites', function (Blueprint $table) {
$table->smallIncrements('id');
// Identidad
$table->string('name')->index(); // Nombre visible en admin
$table->string('slug')->unique(); // Clave técnica
$table->string('domain')->unique(); // Dominio principal (sin protocolo)
$table->string('template')->nullable(); // Componente layout activo
// Estado
$table->string('status', 16)->default('active')->index(); // Estados especiales del sitio
$table->boolean('is_indexable')->default(true)->index(); // SEO: permitir indexado o no
// SEO
$table->unsignedSmallInteger('seo_profile_id')->nullable()->index();
$table->string('canonical_url')->nullable(); // Canonical para root
// Configuración
$table->json('config')->nullable(); // favicon, theme, brand, CDN, etc.
// Auditoría
$table->unsignedMediumInteger('created_by')->nullable()->index();
$table->unsignedMediumInteger('updated_by')->nullable()->index();
$table->timestamps();
// Indices
$table->index(['slug', 'status', 'is_indexable']);
// Relaciones
$table->foreign('seo_profile_id')->references('id')->on('website_seo_profiles')->nullOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
Schema::table('website_seo_profiles', function (Blueprint $table) {
$table->foreign('site_id')->references('id')->on('website_sites')->cascadeOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('website_sites');
Schema::table('website_seo_profiles', function (Blueprint $table) {
$table->dropForeign(['site_id']);
});
}
};

View File

@ -0,0 +1,48 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('website_menus', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('site_id')->index();
$table->string('title')->index();
$table->string('slug')->unique();
$table->string('description')->nullable();
$table->boolean('is_active')->default(true)->index();
// Auditoría
$table->unsignedMediumInteger('created_by')->nullable()->index();
$table->unsignedMediumInteger('updated_by')->nullable()->index();
$table->timestamps();
// Indices
$table->index(['site_id', 'slug', 'is_active']);
// Relaciones
$table->foreign('site_id')->references('id')->on('website_sites')->cascadeOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('website_menus');
}
};

View File

@ -0,0 +1,75 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('website_menu_items', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('menu_id')->index();
$table->unsignedSmallInteger('parent_id')->nullable()->index();
$table->json('title'); // i18n multilanguage
$table->string('type', 16)->default('cms_page')->index(); // Enum; cms_page | url | laravel_route | blog_article | Evento Json
// Construcción de enlace
$table->unsignedMediumInteger('linkable_id')->nullable()->index(); // Relación polimórfica con:
$table->string('linkable_type')->nullable()->index(); // páginas, entradas, productos, etc.
$table->string('laravel_route')->nullable()->index();
$table->string('url')->nullable()->index();
$table->string('method')->nullable();
$table->string('target', 16)->nullable(); // Enum _self, _blank, etc.
$table->string('js_event')->nullable();
// UI
$table->string('icon')->nullable();
$table->string('badge')->nullable();
$table->string('badge_color')->nullable();
// Visibilidad
$table->json('roles')->nullable();
$table->json('permissions')->nullable();
$table->boolean('hide_if_authenticated')->default(false)->index();
$table->boolean('hide_if_guest')->default(false)->index();
$table->timestamp('visible_from')->nullable();
$table->timestamp('visible_until')->nullable();
$table->unsignedSmallInteger('order')->default(0); // Para ordenar en el menú
$table->boolean('is_active')->default(true)->index();
// Auditoría
$table->unsignedMediumInteger('created_by')->nullable()->index();
$table->unsignedMediumInteger('updated_by')->nullable()->index();
$table->timestamps();
// Indices
$table->index(['menu_id', 'is_active']);
$table->index(['menu_id', 'parent_id', 'is_active']);
$table->index(['linkable_id', 'linkable_type']);
// Relaciones
$table->foreign('menu_id')->references('id')->on('website_menus')->cascadeOnDelete();
$table->foreign('parent_id')->references('id')->on('website_menu_items')->nullOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('website_menu_items');
}
};

View File

@ -0,0 +1,84 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('website_contents', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('site_id')->index();
$table->unsignedSmallInteger('seo_profile_id')->nullable()->index();
// Metadata
$table->string('title')->index();
$table->string('slug')->unique();
$table->string('description');
$table->json('keywords')->nullable();
// Template & Type content
$table->string('template')->nullable();
$table->string('template_variant')->nullable();
$table->string('type', 16)->default('page')->index(); // Enum: Content, Landing, Product, Category Blog, Partial
$table->string('render_mode', 16)->default('static');
$table->string('block_mode', 16)->default('db');
$table->string('source', 16)->default('db');
$table->string('render_as')->nullable();
//canonical url
$table->string('canonical_url')->nullable();
// Content
$table->json('content_blocks')->nullable(); // Bloques estructurados
$table->json('seo_overrides')->nullable();
// Control
$table->boolean('is_draft')->default(true)->index();
$table->boolean('is_sensitive')->default(false)->index(); // Allow dangerous Blade content
$table->boolean('is_partial')->default(false)->index();
// Visibilidad
$table->json('roles')->nullable();
$table->json('permissions')->nullable();
$table->boolean('hide_if_authenticated')->default(false)->index();
$table->boolean('hide_if_guest')->default(false)->index();
$table->timestamp('visible_from')->nullable();
$table->timestamp('visible_until')->nullable();
// Cache
$table->boolean('enable_cache')->default(true)->index();
$table->unsignedSmallInteger('cache_ttl')->default(60); // minutos
// Auditoria
$table->unsignedMediumInteger('created_by')->nullable()->index();
$table->unsignedMediumInteger('updated_by')->nullable()->index();
$table->timestamps();
// Indices
$table->index(['site_id', 'type']);
$table->index(['site_id', 'type', 'slug']);
// Relaciones
$table->foreign('site_id')->references('id')->on('website_sites')->cascadeOnDelete();
$table->foreign('seo_profile_id')->references('id')->on('website_seo_profiles')->nullOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('website_contents');
}
};

View File

@ -0,0 +1,48 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('website_content_blocks', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('content_id')->index();
$table->unsignedSmallInteger('parent_id')->nullable()->index();
$table->string('slug')->nullable();
$table->string('type', 32);
$table->string('mode', 16)->default('view');
$table->string('view_path')->nullable();
$table->string('component_class')->nullable();
$table->boolean('is_enabled')->default(true);
$table->boolean('enable_cache')->default(true);
$table->unsignedSmallInteger('cache_ttl')->default(60);
$table->json('settings')->nullable();
$table->json('data')->nullable();
$table->unsignedSmallInteger('order')->default(0);
$table->timestamps();
$table->foreign('content_id')->references('id')->on('website_contents')->cascadeOnDelete();
$table->foreign('parent_id')->references('id')->on('website_content_blocks')->nullOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('website_content_blocks');
}
};

View File

@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('website_content_versions', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('website_content_id')->index();
$table->string('version_label')->nullable();
$table->longText('content');
$table->json('metadata')->nullable();
// Auditoria
$table->unsignedMediumInteger('created_by')->nullable();
$table->unsignedMediumInteger('updated_by')->nullable();
$table->timestamps();
// Relaciones
$table->foreign('website_content_id')->references('id')->on('website_contents')->cascadeOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('website_content_versions');
}
};

View File

@ -0,0 +1,44 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('sitemap_profiles', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('site_id')->index(); // Soporte multisite
$table->string('name'); // Nombre del perfil: 'Productos', 'Páginas CMS'
$table->string('slug')->unique(); // Clave técnica
$table->string('entity_type')->nullable(); // Ej: App\Models\Product
$table->string('generator_class')->nullable(); // Clase que implementa SitemapUrlGeneratorInterface
$table->boolean('is_active')->default(true)->index();
// Auditoría
$table->unsignedMediumInteger('created_by')->nullable()->index();
$table->unsignedMediumInteger('updated_by')->nullable()->index();
$table->timestamps();
// Indices
$table->index(['site_id', 'slug']);
$table->index(['site_id', 'slug', 'is_active']);
// Relaciones
$table->foreign('site_id')->references('id')->on('website_sites')->cascadeOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}
public function down(): void
{
Schema::dropIfExists('sitemap_profiles');
}
};

View File

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('sitemap_rules', function (Blueprint $table) {
$table->mediumIncrements('id');
$table->unsignedSmallInteger('sitemap_profile_id')->index();
$table->string('rule_type'); // Ej: 'priority_override', 'exclude_flag', etc.
$table->json('rule_data'); // JSON con parámetros
$table->timestamps();
// Indices
$table->index(['sitemap_profile_id', 'rule_type']);
// Relaciones
$table->foreign('sitemap_profile_id')->references('id')->on('sitemap_profiles')->cascadeOnDelete();
});
}
public function down(): void
{
Schema::dropIfExists('sitemap_rules');
}
};

View File

@ -12,13 +12,26 @@ return new class extends Migration
public function up(): void
{
Schema::create('sitemap_urls', function (Blueprint $table) {
$table->id();
$table->mediumIncrements('id');
$table->unsignedSmallInteger('sitemap_profile_id')->index();
$table->string('url')->unique();
$table->enum('changefreq', ['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly'])->default('weekly');
$table->string('changefreq', 16)->default('weekly'); // Enum
$table->decimal('priority', 2, 1)->default(0.5);
$table->timestamp('lastmod')->nullable();
$table->boolean('is_active')->default(true);
$table->boolean('is_active')->default(true)->index();
$table->json('alternate_locales')->nullable(); // SEO internacional
// Auditoría
$table->timestamps();
// Indices
$table->index(['sitemap_profile_id', 'is_active']);
// Relaciones
$table->foreign('sitemap_profile_id')->references('id')->on('sitemap_profiles')->cascadeOnDelete();
});
}

View File

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('sitemap_index_files', function (Blueprint $table) {
$table->mediumIncrements('id');
$table->unsignedSmallInteger('sitemap_profile_id')->index();
$table->string('file_name')->unique();
$table->string('url');
$table->timestamp('generated_at');
$table->integer('url_count')->default(0);
$table->boolean('is_current')->default(true);
$table->timestamps();
$table->foreign('sitemap_profile_id')->references('id')->on('sitemap_profiles')->cascadeOnDelete();
});
}
public function down(): void
{
Schema::dropIfExists('sitemap_index_files');
}
};

View File

@ -14,13 +14,27 @@ return new class extends Migration
Schema::create('faq_categories', function (Blueprint $table) {
$table->smallIncrements('id');
$table->string('name')->unique();
$table->unsignedSmallInteger('site_id')->index(); // Soporte multisite
$table->string('name')->index();
$table->string('icon')->nullable();
$table->unsignedInteger('order')->default(0)->index();
$table->boolean('is_active')->default(true)->index();
// Auditoria
$table->unsignedMediumInteger('created_by')->nullable()->index();
$table->unsignedMediumInteger('updated_by')->nullable()->index();
$table->timestamps();
// Indices
$table->unique(['name', 'site_id']);
$table->index(['name', 'is_active', 'site_id']);
// Relaciones
$table->foreign('site_id')->references('id')->on('website_sites')->cascadeOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}

View File

@ -12,7 +12,7 @@ return new class extends Migration
public function up(): void
{
Schema::create('faqs', function (Blueprint $table) {
$table->id();
$table->smallIncrements('id');
$table->unsignedSmallInteger('category_id')->nullable()->index();
$table->string('question');
@ -21,10 +21,18 @@ return new class extends Migration
$table->boolean('is_active')->default(true)->index();
// Auditoria
$table->unsignedMediumInteger('created_by')->nullable()->index();
$table->unsignedMediumInteger('updated_by')->nullable()->index();
$table->timestamps();
// Indices
$table->index(['category_id', 'is_active']);
// Relaciones
$table->foreign('category_id')->references('id')->on('faq_categories')->nullOnDelete();
$table->foreign('category_id')->references('id')->on('faq_categories')->restrictOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}

View File

@ -0,0 +1,60 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('blog_categories', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('site_id')->index(); // Soporte multisite
$table->string('name')->index();
$table->string('slug')->index();
$table->string('full_slug')->nullable()->index(); // NUEVO: Ruta cacheada
$table->unsignedSmallInteger('parent_id')->nullable()->index();
$table->string('icon')->nullable(); // NUEVO: Soporte para icono
$table->string('group')->nullable()->index(); // NUEVO: Soporte para agrupación (ej: blog, noticias, promociones)
$table->text('description')->nullable();
$table->boolean('is_active')->default(true)->index();
// Auditoría
$table->unsignedMediumInteger('created_by')->nullable()->index();
$table->unsignedMediumInteger('updated_by')->nullable()->index();
$table->timestamps();
// Relaciones
$table->foreign('parent_id')->references('id')->on('blog_categories')->nullOnDelete();
// Indices
$table->index(['name', 'is_active', 'site_id']);
$table->unique(['slug', 'site_id']);
// Relaciones
$table->foreign('site_id')->references('id')->on('website_sites')->cascadeOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('blog_categories');
}
};

View File

@ -0,0 +1,48 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('blog_tags', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('site_id')->index(); // Soporte multisite
$table->string('name')->index();
$table->string('slug')->index();
$table->boolean('is_active')->default(true)->index();
// Auditoria
$table->unsignedMediumInteger('created_by')->nullable()->index();
$table->unsignedMediumInteger('updated_by')->nullable()->index();
$table->timestamps();
// Indices
$table->unique(['slug', 'site_id']);
$table->index(['name', 'is_active']);
// Relaciones
$table->foreign('site_id')->references('id')->on('website_sites')->cascadeOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('blog_tags');
}
};

View File

@ -0,0 +1,53 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('blog_articles', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('category_id')->index();
$table->string('title')->index();
$table->string('slug')->index();
$table->text('excerpt')->nullable();
$table->longText('content');
$table->json('metadata')->nullable();
$table->boolean('is_published')->default(false)->index();
$table->timestamp('published_at')->nullable()->index();
$table->unsignedMediumInteger('created_by')->index();
$table->unsignedMediumInteger('updated_by')->index();
// Auditoria
$table->timestamps();
// Indices
$table->unique(['slug', 'category_id']);
$table->index(['title', 'is_published']);
// Relaciones
$table->foreign('category_id')->references('id')->on('blog_categories')->restrictOnDelete();
$table->foreign('created_by')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('blog_articles');
}
};

View File

@ -0,0 +1,39 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('blog_article_tag', function (Blueprint $table) {
$table->smallIncrements('id');
$table->unsignedSmallInteger('blog_article_id')->index();
$table->unsignedSmallInteger('blog_tag_id')->index();
// Auditoria
$table->timestamps();
// Indices
$table->index(['blog_article_id', 'blog_tag_id']);
// Relaciones
$table->foreign('blog_article_id')->references('id')->on('blog_articles')->cascadeOnDelete();
$table->foreign('blog_tag_id')->references('id')->on('blog_tags')->cascadeOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('blog_article_tag');
}
};

View File

@ -0,0 +1,47 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('blog_comments', function (Blueprint $table) {
$table->mediumIncrements('id');
$table->unsignedSmallInteger('blog_article_id')->index();
$table->unsignedMediumInteger('author_id')->nullable()->index();
$table->string('author_name')->index();
$table->string('author_email')->index();
$table->text('comment');
$table->boolean('is_approved')->default(false)->index();
// Auditoria
$table->unsignedMediumInteger('updated_by')->index();
$table->timestamps();
// Indices
$table->index(['blog_article_id', 'is_approved']);
// Relaciones
$table->foreign('blog_article_id')->references('id')->on('blog_articles')->restrictOnDelete();
$table->foreign('author_id')->references('id')->on('users')->restrictOnDelete();
$table->foreign('updated_by')->references('id')->on('users')->restrictOnDelete();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('blog_comments');
}
};

View File

@ -1,23 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration{
public function up(): void
{
Schema::create('sitemap_configurations', function (Blueprint $table) {
$table->id();
$table->string('route');
$table->boolean('include')->default(true);
$table->decimal('priority', 2, 1)->default(0.5);
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('sitemap_configurations');
}
};

View File

@ -0,0 +1,70 @@
[
"admin.website-admin.settings.general.view",
"admin.website-admin.settings.general.update",
"admin.website-admin.settings.social.view",
"admin.website-admin.settings.social.update",
"admin.website-admin.settings.indexing.view",
"admin.website-admin.settings.indexing.update",
"admin.website-admin.contact.info.view",
"admin.website-admin.contact.info.update",
"admin.website-admin.contact.form.view",
"admin.website-admin.contact.form.update",
"admin.website-admin.analytics.google-analytics.view",
"admin.website-admin.analytics.google-analytics.update",
"admin.website-admin.analytics.google-tags.view",
"admin.website-admin.analytics.google-tags.update",
"admin.website-admin.analytics.google-search-console.view",
"admin.website-admin.analytics.google-search-console.update",
"admin.website-admin.analytics.pixel-meta.view",
"admin.website-admin.analytics.pixel-meta.update",
"admin.website-admin.comunication.messenger.view",
"admin.website-admin.comunication.messenger.update",
"admin.website-admin.comunication.whatsapp.view",
"admin.website-admin.comunication.whatsapp.update",
"admin.website-admin.comunication.tawk-to.view",
"admin.website-admin.comunication.tawk-to.update",
"admin.website-admin.comunication.twitter.view",
"admin.website-admin.comunication.twitter.update",
"admin.website-admin.translate.google.view",
"admin.website-admin.translate.google.update",
"admin.website-admin.content.faq.view",
"admin.website-admin.content.faq.update",
"admin.website-admin.content.faq.create",
"admin.website-admin.content.faq.delete",
"admin.website-admin.content.gallery.view",
"admin.website-admin.content.gallery.update",
"admin.website-admin.content.gallery.create",
"admin.website-admin.content.gallery.delete",
"admin.website-admin.content.legal.view",
"admin.website-admin.content.legal.update",
"admin.website-admin.content.legal.create",
"admin.website-admin.content.legal.delete",
"admin.website-admin.seo.sitemap.view",
"admin.website-admin.seo.sitemap.update",
"admin.website-admin.seo.jsonld.view",
"admin.website-admin.seo.jsonld.update",
"admin.website-admin.seo.robots.view",
"admin.website-admin.seo.robots.update",
"admin.website-admin.seo.manifest.view",
"admin.website-admin.seo.manifest.update",
"admin.website-admin.seo.canonical.view",
"admin.website-admin.seo.canonical.update",
"admin.website-admin.seo.social-cards.view",
"admin.website-admin.seo.social-cards.update",
"admin.website-admin.blog.categories.view",
"admin.website-admin.blog.categories.update",
"admin.website-admin.blog.categories.create",
"admin.website-admin.blog.categories.delete",
"admin.website-admin.blog.tags.view",
"admin.website-admin.blog.tags.update",
"admin.website-admin.blog.tags.create",
"admin.website-admin.blog.tags.delete",
"admin.website-admin.blog.articles.view",
"admin.website-admin.blog.articles.update",
"admin.website-admin.blog.articles.create",
"admin.website-admin.blog.articles.delete",
"admin.website-admin.blog.comments.view",
"admin.website-admin.blog.comments.update",
"admin.website-admin.blog.comments.create",
"admin.website-admin.blog.comments.delete"
]

View File

@ -0,0 +1,177 @@
{
"SuperAdmin" : {
"permissions" : [
"admin.website-admin.settings.general.view",
"admin.website-admin.settings.general.update",
"admin.website-admin.settings.social.view",
"admin.website-admin.settings.social.update",
"admin.website-admin.settings.indexing.view",
"admin.website-admin.settings.indexing.update",
"admin.website-admin.contact.info.view",
"admin.website-admin.contact.info.update",
"admin.website-admin.contact.form.view",
"admin.website-admin.contact.form.update",
"admin.website-admin.analytics.google-analytics.view",
"admin.website-admin.analytics.google-analytics.update",
"admin.website-admin.analytics.google-tags.view",
"admin.website-admin.analytics.google-tags.update",
"admin.website-admin.analytics.google-search-console.view",
"admin.website-admin.analytics.google-search-console.update",
"admin.website-admin.analytics.pixel-meta.view",
"admin.website-admin.analytics.pixel-meta.update",
"admin.website-admin.comunication.messenger.view",
"admin.website-admin.comunication.messenger.update",
"admin.website-admin.comunication.whatsapp.view",
"admin.website-admin.comunication.whatsapp.update",
"admin.website-admin.comunication.tawk-to.view",
"admin.website-admin.comunication.tawk-to.update",
"admin.website-admin.comunication.twitter.view",
"admin.website-admin.comunication.twitter.update",
"admin.website-admin.translate.google.view",
"admin.website-admin.translate.google.update",
"admin.website-admin.content.faq.view",
"admin.website-admin.content.faq.update",
"admin.website-admin.content.faq.create",
"admin.website-admin.content.faq.delete",
"admin.website-admin.content.gallery.view",
"admin.website-admin.content.gallery.update",
"admin.website-admin.content.gallery.create",
"admin.website-admin.content.gallery.delete",
"admin.website-admin.content.legal.view",
"admin.website-admin.content.legal.update",
"admin.website-admin.content.legal.create",
"admin.website-admin.content.legal.delete",
"admin.website-admin.seo.sitemap.view",
"admin.website-admin.seo.sitemap.update",
"admin.website-admin.seo.jsonld.view",
"admin.website-admin.seo.jsonld.update",
"admin.website-admin.seo.robots.view",
"admin.website-admin.seo.robots.update",
"admin.website-admin.seo.manifest.view",
"admin.website-admin.seo.manifest.update",
"admin.website-admin.seo.canonical.view",
"admin.website-admin.seo.canonical.update",
"admin.website-admin.seo.social-cards.view",
"admin.website-admin.seo.social-cards.update",
"admin.website-admin.blog.categories.view",
"admin.website-admin.blog.categories.update",
"admin.website-admin.blog.categories.create",
"admin.website-admin.blog.categories.delete",
"admin.website-admin.blog.tags.view",
"admin.website-admin.blog.tags.update",
"admin.website-admin.blog.tags.create",
"admin.website-admin.blog.tags.delete",
"admin.website-admin.blog.articles.view",
"admin.website-admin.blog.articles.update",
"admin.website-admin.blog.articles.create",
"admin.website-admin.blog.articles.delete",
"admin.website-admin.blog.comments.view",
"admin.website-admin.blog.comments.update",
"admin.website-admin.blog.comments.create",
"admin.website-admin.blog.comments.delete"
]
},
"Admin" : {
"permissions" : [
"admin.website-admin.settings.general.view",
"admin.website-admin.settings.general.update",
"admin.website-admin.settings.social.view",
"admin.website-admin.settings.social.update",
"admin.website-admin.settings.indexing.view",
"admin.website-admin.settings.indexing.update",
"admin.website-admin.contact.info.view",
"admin.website-admin.contact.info.update",
"admin.website-admin.contact.form.view",
"admin.website-admin.contact.form.update",
"admin.website-admin.analytics.google-analytics.view",
"admin.website-admin.analytics.google-analytics.update",
"admin.website-admin.analytics.google-tags.view",
"admin.website-admin.analytics.google-tags.update",
"admin.website-admin.analytics.google-search-console.view",
"admin.website-admin.analytics.google-search-console.update",
"admin.website-admin.analytics.pixel-meta.view",
"admin.website-admin.analytics.pixel-meta.update",
"admin.website-admin.comunication.messenger.view",
"admin.website-admin.comunication.messenger.update",
"admin.website-admin.comunication.whatsapp.view",
"admin.website-admin.comunication.whatsapp.update",
"admin.website-admin.comunication.tawk-to.view",
"admin.website-admin.comunication.tawk-to.update",
"admin.website-admin.comunication.twitter.view",
"admin.website-admin.comunication.twitter.update",
"admin.website-admin.translate.google.view",
"admin.website-admin.translate.google.update",
"admin.website-admin.content.faq.view",
"admin.website-admin.content.faq.update",
"admin.website-admin.content.faq.create",
"admin.website-admin.content.faq.delete",
"admin.website-admin.content.gallery.view",
"admin.website-admin.content.gallery.update",
"admin.website-admin.content.gallery.create",
"admin.website-admin.content.gallery.delete",
"admin.website-admin.content.legal.view",
"admin.website-admin.content.legal.update",
"admin.website-admin.content.legal.create",
"admin.website-admin.content.legal.delete",
"admin.website-admin.seo.sitemap.view",
"admin.website-admin.seo.sitemap.update",
"admin.website-admin.seo.jsonld.view",
"admin.website-admin.seo.jsonld.update",
"admin.website-admin.seo.robots.view",
"admin.website-admin.seo.robots.update",
"admin.website-admin.seo.manifest.view",
"admin.website-admin.seo.manifest.update",
"admin.website-admin.seo.canonical.view",
"admin.website-admin.seo.canonical.update",
"admin.website-admin.seo.social-cards.view",
"admin.website-admin.seo.social-cards.update",
"admin.website-admin.blog.categories.view",
"admin.website-admin.blog.categories.update",
"admin.website-admin.blog.categories.create",
"admin.website-admin.blog.categories.delete",
"admin.website-admin.blog.tags.view",
"admin.website-admin.blog.tags.update",
"admin.website-admin.blog.tags.create",
"admin.website-admin.blog.tags.delete",
"admin.website-admin.blog.articles.view",
"admin.website-admin.blog.articles.update",
"admin.website-admin.blog.articles.create",
"admin.website-admin.blog.articles.delete",
"admin.website-admin.blog.comments.view",
"admin.website-admin.blog.comments.update",
"admin.website-admin.blog.comments.create",
"admin.website-admin.blog.comments.delete"
]
},
"Auditor" : {
"permissions" : [
"admin.website-admin.settings.general.view",
"admin.website-admin.settings.social.view",
"admin.website-admin.settings.indexing.view",
"admin.website-admin.contact.info.view",
"admin.website-admin.contact.form.view",
"admin.website-admin.analytics.google-analytics.view",
"admin.website-admin.analytics.google-tags.view",
"admin.website-admin.analytics.google-search-console.view",
"admin.website-admin.analytics.pixel-meta.view",
"admin.website-admin.comunication.messenger.view",
"admin.website-admin.comunication.whatsapp.view",
"admin.website-admin.comunication.tawk-to.view",
"admin.website-admin.comunication.twitter.view",
"admin.website-admin.translate.google.view",
"admin.website-admin.content.faq.view",
"admin.website-admin.content.gallery.view",
"admin.website-admin.content.legal.view",
"admin.website-admin.seo.sitemap.view",
"admin.website-admin.seo.jsonld.view",
"admin.website-admin.seo.robots.view",
"admin.website-admin.seo.manifest.view",
"admin.website-admin.seo.canonical.view",
"admin.website-admin.seo.social-cards.view",
"admin.website-admin.blog.categories.view",
"admin.website-admin.blog.tags.view",
"admin.website-admin.blog.articles.view",
"admin.website-admin.blog.comments.view"
]
}
}