Prepare component
This commit is contained in:
		
							
								
								
									
										1154
									
								
								database/data/rbac/permissions.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1154
									
								
								database/data/rbac/permissions.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										280
									
								
								database/data/rbac/roles.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										280
									
								
								database/data/rbac/roles.json
									
									
									
									
									
										Normal 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"
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										192
									
								
								database/data/website-admin/website_agroform_contents.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								database/data/website-admin/website_agroform_contents.json
									
									
									
									
									
										Normal 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
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										66
									
								
								database/data/website-admin/website_agroform_menus.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								database/data/website-admin/website_agroform_menus.json
									
									
									
									
									
										Normal 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"]
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										192
									
								
								database/data/website-admin/website_cleanfy_contents.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								database/data/website-admin/website_cleanfy_contents.json
									
									
									
									
									
										Normal 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
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										74
									
								
								database/data/website-admin/website_cleanfy_menus.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								database/data/website-admin/website_cleanfy_menus.json
									
									
									
									
									
										Normal 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"
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										44
									
								
								database/data/website-admin/website_menus.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								database/data/website-admin/website_menus.json
									
									
									
									
									
										Normal 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
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										192
									
								
								database/data/website-admin/website_realcity_contents.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								database/data/website-admin/website_realcity_contents.json
									
									
									
									
									
										Normal 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
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										92
									
								
								database/data/website-admin/website_realcity_menus.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								database/data/website-admin/website_realcity_menus.json
									
									
									
									
									
										Normal 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"
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										145
									
								
								database/data/website-admin/website_seo_profiles.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								database/data/website-admin/website_seo_profiles.json
									
									
									
									
									
										Normal 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."
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										220
									
								
								database/data/website-admin/website_sites.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								database/data/website-admin/website_sites.json
									
									
									
									
									
										Normal 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"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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']);
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										70
									
								
								database/rbac copy/permissions.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								database/rbac copy/permissions.json
									
									
									
									
									
										Normal 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"
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										177
									
								
								database/rbac copy/roles.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								database/rbac copy/roles.json
									
									
									
									
									
										Normal 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"
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user