[{"data":1,"prerenderedAt":695},["ShallowReactive",2],{"navigation:en":3,"\u002Fblog\u002Farquitectura-modular-nuxt-layers-b2b":129},[4],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Nuxfire Docs","\u002Fdocs","docs\u002F0.index",[9,11],{"title":5,"path":6,"stem":7,"icon":10},"i-ph-squares-four-duotone",{"title":12,"path":13,"stem":14,"children":15,"icon":18},"Flow Videos","\u002Fdocs\u002Fflow-videos","docs\u002Fflow-videos\u002F0.index",[16,19,36,67,93],{"title":17,"path":13,"stem":14,"icon":18},"Serelius Flow Video","i-ph-video-camera-duotone",{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":35},"Getting Started","i-ph-rocket-launch-duotone","\u002Fdocs\u002Fflow-videos\u002Fgetting-started","docs\u002Fflow-videos\u002F1.getting-started",[25,30],{"title":26,"path":27,"stem":28,"icon":29},"Overview","\u002Fdocs\u002Fflow-videos\u002Fgetting-started\u002Foverview","docs\u002Fflow-videos\u002F1.getting-started\u002F0.overview","i-ph-play-circle-duotone",{"title":31,"path":32,"stem":33,"icon":34},"Global Features","\u002Fdocs\u002Fflow-videos\u002Fgetting-started\u002Fglobal-features","docs\u002Fflow-videos\u002F1.getting-started\u002F1.global-features","i-ph-gear-six-duotone",false,{"title":37,"icon":38,"path":39,"stem":40,"children":41,"page":35},"Pipeline","i-ph-film-strip-duotone","\u002Fdocs\u002Fflow-videos\u002Fpipeline","docs\u002Fflow-videos\u002F2.pipeline",[42,47,52,57,62],{"title":43,"path":44,"stem":45,"icon":46},"Phase 1 — Script","\u002Fdocs\u002Fflow-videos\u002Fpipeline\u002Fscript","docs\u002Fflow-videos\u002F2.pipeline\u002F1.script","i-ph-scroll-duotone",{"title":48,"path":49,"stem":50,"icon":51},"Phase 2 — Style & Identity","\u002Fdocs\u002Fflow-videos\u002Fpipeline\u002Fstyle-and-identity","docs\u002Fflow-videos\u002F2.pipeline\u002F2.style-and-identity","i-ph-palette-duotone",{"title":53,"path":54,"stem":55,"icon":56},"Phase 3 — Storyboard","\u002Fdocs\u002Fflow-videos\u002Fpipeline\u002Fstoryboard","docs\u002Fflow-videos\u002F2.pipeline\u002F3.storyboard","i-ph-image-duotone",{"title":58,"path":59,"stem":60,"icon":61},"Phase 4 — Videos","\u002Fdocs\u002Fflow-videos\u002Fpipeline\u002Fvideos","docs\u002Fflow-videos\u002F2.pipeline\u002F4.videos","i-ph-video-duotone",{"title":63,"path":64,"stem":65,"icon":66},"Phase 5 — Final Assembly","\u002Fdocs\u002Fflow-videos\u002Fpipeline\u002Ffinal-assembly","docs\u002Fflow-videos\u002F2.pipeline\u002F5.final-assembly","i-ph-scissors-duotone",{"title":68,"icon":69,"path":70,"stem":71,"children":72,"page":35},"Settings & Models","i-ph-sliders-duotone","\u002Fdocs\u002Fflow-videos\u002Fsettings-and-models","docs\u002Fflow-videos\u002F3.settings-and-models",[73,78,83,88],{"title":74,"path":75,"stem":76,"icon":77},"Settings","\u002Fdocs\u002Fflow-videos\u002Fsettings-and-models\u002Fsettings","docs\u002Fflow-videos\u002F3.settings-and-models\u002F0.settings","i-ph-sliders-horizontal-duotone",{"title":79,"path":80,"stem":81,"icon":82},"AI Models & Limits","\u002Fdocs\u002Fflow-videos\u002Fsettings-and-models\u002Fmodels-and-limits","docs\u002Fflow-videos\u002F3.settings-and-models\u002F1.models-and-limits","i-ph-cpu-duotone",{"title":84,"path":85,"stem":86,"icon":87},"Option Catalogs","\u002Fdocs\u002Fflow-videos\u002Fsettings-and-models\u002Fcatalogs","docs\u002Fflow-videos\u002F3.settings-and-models\u002F2.catalogs","i-ph-list-bullets-duotone",{"title":89,"path":90,"stem":91,"icon":92},"Pipeline Calibration","\u002Fdocs\u002Fflow-videos\u002Fsettings-and-models\u002Fcalibration","docs\u002Fflow-videos\u002F3.settings-and-models\u002F3.calibration","i-ph-gauge-duotone",{"title":94,"icon":95,"path":96,"stem":97,"children":98,"page":35},"Reference","i-ph-book-open-duotone","\u002Fdocs\u002Fflow-videos\u002Freference","docs\u002Fflow-videos\u002F4.reference",[99,104,109,114,119,124],{"title":100,"path":101,"stem":102,"icon":103},"Delivered Files","\u002Fdocs\u002Fflow-videos\u002Freference\u002Fdelivered-files","docs\u002Fflow-videos\u002F4.reference\u002F0.delivered-files","i-ph-folder-duotone",{"title":105,"path":106,"stem":107,"icon":108},"Supported Video Types","\u002Fdocs\u002Fflow-videos\u002Freference\u002Fvideo-types","docs\u002Fflow-videos\u002F4.reference\u002F1.video-types","i-ph-television-duotone",{"title":110,"path":111,"stem":112,"icon":113},"What the Tool Does NOT Do","\u002Fdocs\u002Fflow-videos\u002Freference\u002Flimitations","docs\u002Fflow-videos\u002F4.reference\u002F2.limitations","i-ph-prohibit-duotone",{"title":115,"path":116,"stem":117,"icon":118},"Business Models","\u002Fdocs\u002Fflow-videos\u002Freference\u002Fbusiness-models","docs\u002Fflow-videos\u002F4.reference\u002F3.business-models","i-ph-briefcase-duotone",{"title":120,"path":121,"stem":122,"icon":123},"FAQ & Glossary","\u002Fdocs\u002Fflow-videos\u002Freference\u002Ffaq-and-glossary","docs\u002Fflow-videos\u002F4.reference\u002F4.faq-and-glossary","i-ph-question-duotone",{"title":125,"path":126,"stem":127,"icon":128},"Technical and Architectural Audit","\u002Fdocs\u002Fflow-videos\u002Freference\u002Faudit","docs\u002Fflow-videos\u002F4.reference\u002F5.audit","i-ph-shield-check-duotone",{"id":130,"title":131,"author":132,"authorType":133,"body":134,"category":674,"date":675,"description":676,"extension":677,"image":678,"lang":679,"meta":680,"navigation":287,"ogImage":681,"path":682,"readTime":683,"seo":684,"stem":685,"tags":686,"translations":690,"updated":133,"__hash__":694},"blog\u002Fblog\u002Farquitectura-modular-nuxt-layers-b2b.md","Arquitectura Modular con Nuxt Layers: Organizando Funciones B2B sin Monolitos Espagueti","Equipo Nuxfire",null,{"type":135,"value":136,"toc":666},"minimark",[137,141,157,160,165,168,202,213,223,225,232,239,474,476,483,488,613,620,622,626,650,653,662],[138,139,140],"p",{},"A medida que un producto SaaS crece, la complejidad del código tiende a explotar. Los componentes de checkout se mezclan con las reglas de autenticación, las pantallas de administración comparten directorios con las de los usuarios comunes y un cambio en el modelo de base de datos rompe tres pantallas distintas sin previo aviso.",[138,142,143,144,148,149,152,153,156],{},"La solución de ",[145,146,147],"strong",{},"Nuxt 4"," para este dilema se llama ",[145,150,151],{},"Nuxt Layers",". En ",[145,154,155],{},"Nuxfire",", usamos Layers para construir módulos aislados que se pueden activar o desactivar con una sola línea de configuración.",[158,159],"hr",{},[161,162,164],"h2",{"id":163},"qué-es-una-nuxt-layer","¿Qué es una Nuxt Layer?",[138,166,167],{},"Una Layer en Nuxt es un paquete completo y autónomo que puede contener:",[169,170,171,184,190,196],"ul",{},[172,173,174,175,179,180,183],"li",{},"Páginas (",[176,177,178],"code",{},"pages\u002F",") y layouts (",[176,181,182],{},"layouts\u002F",").",[172,185,186,187,183],{},"Componentes Vue accesibles (",[176,188,189],{},"components\u002F",[172,191,192,193,183],{},"Rutas de servidor y procedures tRPC (",[176,194,195],{},"server\u002F",[172,197,198,199,183],{},"Fragmentos del schema de Drizzle ORM (",[176,200,201],{},"schema.ts",[138,203,204,205,208,209,212],{},"Esto significa que la funcionalidad de ",[145,206,207],{},"Facturación (Billing)",", por ejemplo, existe totalmente contenida dentro de ",[176,210,211],{},"layers\u002Fbilling\u002F",".",[214,215,220],"pre",{"className":216,"code":218,"language":219},[217],"language-text","layers\u002F\n├── admin\u002F          # Panel de administración de la plataforma, MFA y registros de auditoría\n├── billing\u002F        # Planes de Stripe, checkout, webhooks y portal del cliente\n├── teams\u002F          # Multi-tenancy B2B, invitaciones de miembros y RBAC granular\n└── notifications\u002F  # Hub de WebSockets con Durable Objects e historial en SQLite\n","text",[176,221,218],{"__ignoreMap":222},"",[158,224],{},[161,226,228,229],{"id":227},"el-contrato-de-capas-nuxfiremanifest","El Contrato de Capas: ",[176,230,231],{},"@nuxfire\u002Fmanifest",[138,233,234,235,238],{},"Para que cada capa sea verdaderamente modular sin un acoplamiento rígido, cada layer exporta un manifiesto mediante el helper compartido ",[176,236,237],{},"defineLayerManifest()",":",[214,240,244],{"className":241,"code":242,"language":243,"meta":222,"style":222},"language-typescript shiki shiki-themes material-theme-lighter github-light github-dark monokai","import { defineLayerManifest } from \"@nuxfire\u002Fmanifest\";\n\nexport default defineLayerManifest({\n  name: \"billing\",\n  description: \"Gestión de suscripciones de Stripe, webhooks y portal de clientes\",\n  dependencies: [\"teams\"],\n  routes: [\"\u002Fbilling\", \"\u002Fbilling\u002Fplans\"],\n  navigation: {\n    title: \"Suscripción y Facturación\",\n    icon: \"i-ph-credit-card-duotone\",\n    path: \"\u002Fbilling\"\n  }\n});\n","typescript",[176,245,246,282,289,307,326,343,366,397,408,425,442,457,463],{"__ignoreMap":222},[247,248,251,255,259,263,266,269,273,276,279],"span",{"class":249,"line":250},"line",1,[247,252,254],{"class":253},"sRxSC","import",[247,256,258],{"class":257},"swvn1"," {",[247,260,262],{"class":261},"ss--_"," defineLayerManifest",[247,264,265],{"class":257}," }",[247,267,268],{"class":253}," from",[247,270,272],{"class":271},"siCPE"," \"",[247,274,231],{"class":275},"sLACW",[247,277,278],{"class":271},"\"",[247,280,281],{"class":257},";\n",[247,283,285],{"class":249,"line":284},2,[247,286,288],{"emptyLinePlaceholder":287},true,"\n",[247,290,292,295,298,301,304],{"class":249,"line":291},3,[247,293,294],{"class":253},"export",[247,296,297],{"class":253}," default",[247,299,262],{"class":300},"sD0ED",[247,302,303],{"class":261},"(",[247,305,306],{"class":257},"{\n",[247,308,310,314,316,318,321,323],{"class":249,"line":309},4,[247,311,313],{"class":312},"squCx","  name",[247,315,238],{"class":257},[247,317,272],{"class":271},[247,319,320],{"class":275},"billing",[247,322,278],{"class":271},[247,324,325],{"class":257},",\n",[247,327,329,332,334,336,339,341],{"class":249,"line":328},5,[247,330,331],{"class":312},"  description",[247,333,238],{"class":257},[247,335,272],{"class":271},[247,337,338],{"class":275},"Gestión de suscripciones de Stripe, webhooks y portal de clientes",[247,340,278],{"class":271},[247,342,325],{"class":257},[247,344,346,349,351,354,356,359,361,364],{"class":249,"line":345},6,[247,347,348],{"class":312},"  dependencies",[247,350,238],{"class":257},[247,352,353],{"class":261}," [",[247,355,278],{"class":271},[247,357,358],{"class":275},"teams",[247,360,278],{"class":271},[247,362,363],{"class":261},"]",[247,365,325],{"class":257},[247,367,369,372,374,376,378,381,383,386,388,391,393,395],{"class":249,"line":368},7,[247,370,371],{"class":312},"  routes",[247,373,238],{"class":257},[247,375,353],{"class":261},[247,377,278],{"class":271},[247,379,380],{"class":275},"\u002Fbilling",[247,382,278],{"class":271},[247,384,385],{"class":257},",",[247,387,272],{"class":271},[247,389,390],{"class":275},"\u002Fbilling\u002Fplans",[247,392,278],{"class":271},[247,394,363],{"class":261},[247,396,325],{"class":257},[247,398,400,403,405],{"class":249,"line":399},8,[247,401,402],{"class":312},"  navigation",[247,404,238],{"class":257},[247,406,407],{"class":257}," {\n",[247,409,411,414,416,418,421,423],{"class":249,"line":410},9,[247,412,413],{"class":312},"    title",[247,415,238],{"class":257},[247,417,272],{"class":271},[247,419,420],{"class":275},"Suscripción y Facturación",[247,422,278],{"class":271},[247,424,325],{"class":257},[247,426,428,431,433,435,438,440],{"class":249,"line":427},10,[247,429,430],{"class":312},"    icon",[247,432,238],{"class":257},[247,434,272],{"class":271},[247,436,437],{"class":275},"i-ph-credit-card-duotone",[247,439,278],{"class":271},[247,441,325],{"class":257},[247,443,445,448,450,452,454],{"class":249,"line":444},11,[247,446,447],{"class":312},"    path",[247,449,238],{"class":257},[247,451,272],{"class":271},[247,453,380],{"class":275},[247,455,456],{"class":271},"\"\n",[247,458,460],{"class":249,"line":459},12,[247,461,462],{"class":257},"  }\n",[247,464,466,469,472],{"class":249,"line":465},13,[247,467,468],{"class":257},"}",[247,470,471],{"class":261},")",[247,473,281],{"class":257},[158,475],{},[161,477,479,480],{"id":478},"activar-y-desactivar-módulos-en-configts","Activar y Desactivar Módulos en ",[176,481,482],{},"config.ts",[138,484,485,486,238],{},"Imagina que estás creando un producto ligero y no necesitas el módulo de facturación ni el complejo sistema de notificaciones. En Nuxfire, controlas los módulos en el archivo raíz ",[176,487,482],{},[214,489,491],{"className":241,"code":490,"language":243,"meta":222,"style":222},"export const config = {\n  domain: \"tusaas.com\",\n  layers: {\n    core: [\"teams\", \"notifications\", \"admin\"],\n    features: {\n      billing: false, \u002F\u002F Desactívalo fácilmente sin romper el build\n    }\n  }\n};\n",[176,492,493,511,527,536,573,582,599,604,608],{"__ignoreMap":222},[247,494,495,497,501,505,509],{"class":249,"line":250},[247,496,294],{"class":253},[247,498,500],{"class":499},"srJo8"," const",[247,502,504],{"class":503},"s91G_"," config",[247,506,508],{"class":507},"sGXK2"," =",[247,510,407],{"class":257},[247,512,513,516,518,520,523,525],{"class":249,"line":284},[247,514,515],{"class":312},"  domain",[247,517,238],{"class":257},[247,519,272],{"class":271},[247,521,522],{"class":275},"tusaas.com",[247,524,278],{"class":271},[247,526,325],{"class":257},[247,528,529,532,534],{"class":249,"line":291},[247,530,531],{"class":312},"  layers",[247,533,238],{"class":257},[247,535,407],{"class":257},[247,537,538,541,543,545,547,549,551,553,555,558,560,562,564,567,569,571],{"class":249,"line":309},[247,539,540],{"class":312},"    core",[247,542,238],{"class":257},[247,544,353],{"class":261},[247,546,278],{"class":271},[247,548,358],{"class":275},[247,550,278],{"class":271},[247,552,385],{"class":257},[247,554,272],{"class":271},[247,556,557],{"class":275},"notifications",[247,559,278],{"class":271},[247,561,385],{"class":257},[247,563,272],{"class":271},[247,565,566],{"class":275},"admin",[247,568,278],{"class":271},[247,570,363],{"class":261},[247,572,325],{"class":257},[247,574,575,578,580],{"class":249,"line":328},[247,576,577],{"class":312},"    features",[247,579,238],{"class":257},[247,581,407],{"class":257},[247,583,584,587,589,593,595],{"class":249,"line":345},[247,585,586],{"class":312},"      billing",[247,588,238],{"class":257},[247,590,592],{"class":591},"s8HiA"," false",[247,594,385],{"class":257},[247,596,598],{"class":597},"ss7Ak"," \u002F\u002F Desactívalo fácilmente sin romper el build\n",[247,600,601],{"class":249,"line":368},[247,602,603],{"class":257},"    }\n",[247,605,606],{"class":249,"line":399},[247,607,462],{"class":257},[247,609,610],{"class":249,"line":410},[247,611,612],{"class":257},"};\n",[138,614,615,616,619],{},"El script de build inspecciona este archivo y arma la composición final en ",[176,617,618],{},"apps\u002Fapp\u002Fnuxt.config.ts"," de forma 100% automática.",[158,621],{},[161,623,625],{"id":624},"beneficios-prácticos-para-equipos-y-desarrolladores","Beneficios Prácticos para Equipos y Desarrolladores",[627,628,629,635,641],"ol",{},[172,630,631,634],{},[145,632,633],{},"Testabilidad Aislada",": Cada capa tiene sus propias pruebas unitarias y de integración.",[172,636,637,640],{},[145,638,639],{},"Reutilización Inmediata",": Crea un nuevo producto copiando solo las capas que necesitas.",[172,642,643,646,647,649],{},[145,644,645],{},"Contexto Ideal para las IA",": Cuando le pides a una IA (Cursor, Claude Code) que edite el checkout, solo necesita leer los archivos dentro de ",[176,648,211],{},", sin cargar en memoria miles de líneas irrelevantes.",[138,651,652],{},"¿Listo para transformar tu productividad y construir con la arquitectura correcta desde el principio?",[138,654,655],{},[656,657,659],"a",{"href":658},"\u002Fes#pricing",[145,660,661],{},"Obtén acceso inmediato al código fuente de Nuxfire y al Grupo VIP →",[663,664,665],"style",{},"html pre.shiki code .sRxSC, html code.shiki .sRxSC{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#F92672;--shiki-sepia-font-style:inherit}html pre.shiki code .swvn1, html code.shiki .swvn1{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .ss--_, html code.shiki .ss--_{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .siCPE, html code.shiki .siCPE{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sLACW, html code.shiki .sLACW{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sD0ED, html code.shiki .sD0ED{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .squCx, html code.shiki .squCx{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html pre.shiki code .srJo8, html code.shiki .srJo8{--shiki-light:#9C3EDA;--shiki-light-font-style:inherit;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .s91G_, html code.shiki .s91G_{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#F8F8F2}html pre.shiki code .sGXK2, html code.shiki .sGXK2{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .s8HiA, html code.shiki .s8HiA{--shiki-light:#FF5370;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}html pre.shiki code .ss7Ak, html code.shiki .ss7Ak{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit;--shiki-sepia:#88846F;--shiki-sepia-font-style:inherit}",{"title":222,"searchDepth":284,"depth":284,"links":667},[668,669,671,673],{"id":163,"depth":284,"text":164},{"id":227,"depth":284,"text":670},"El Contrato de Capas: @nuxfire\u002Fmanifest",{"id":478,"depth":284,"text":672},"Activar y Desactivar Módulos en config.ts",{"id":624,"depth":284,"text":625},"Ingeniería de Software","2026-09-15","Cómo desacoplar la facturación con Stripe, los workspaces multi-tenant y el panel de administración con Nuxt Layers y monorepos Bun para crear SaaS limpios y sostenibles.","md","\u002Fimages\u002Fblog\u002Fnuxt-layers-modular-b2b-es.svg","es",{},"\u002Fimages\u002Fblog\u002Fnuxt-layers-modular-b2b-es.png","\u002Fblog\u002Farquitectura-modular-nuxt-layers-b2b","8 min",{"title":131,"description":676},"blog\u002Farquitectura-modular-nuxt-layers-b2b",[151,687,688,689],"Arquitectura Modular","B2B SaaS","Clean Code",{"en":691,"pt-br":692,"es":693},"modular-architecture-nuxt-layers-b2b","arquitetura-modular-nuxt-layers-b2b","arquitectura-modular-nuxt-layers-b2b","5LEI97Gl2MZLkmzgqhuncWvS5qgdj_kU7KCyd8ypK6o",1794055329841]