[{"data":1,"prerenderedAt":695},["ShallowReactive",2],{"navigation:en":3,"\u002Fblog\u002Farquitetura-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\u002Farquitetura-modular-nuxt-layers-b2b.md","Arquitetura Modular com Nuxt Layers: Organizando Recursos B2B sem Monólitos Espaguete","Equipe 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",{},"Conforme um produto SaaS cresce, a complexidade do código tende a explodir. Componentes de checkout misturam-se com regras de autenticação, telas de administração dividem diretórios com telas de usuários comuns e uma alteração no modelo de banco quebra três telas diferentes sem aviso prévio.",[138,142,143,144,148,149,152,153,156],{},"A solução do ",[145,146,147],"strong",{},"Nuxt 4"," para esse dilema chama-se ",[145,150,151],{},"Nuxt Layers",". No ",[145,154,155],{},"Nuxfire",", usamos Layers para construir módulos isolados que podem ser ativados ou desativados com uma única linha de configuração.",[158,159],"hr",{},[161,162,164],"h2",{"id":163},"o-que-é-uma-nuxt-layer","O que é uma Nuxt Layer?",[138,166,167],{},"Uma Layer no Nuxt é um pacote completo e autônomo que pode conter:",[169,170,171,184,190,196],"ul",{},[172,173,174,175,179,180,183],"li",{},"Páginas (",[176,177,178],"code",{},"pages\u002F",") e layouts (",[176,181,182],{},"layouts\u002F",").",[172,185,186,187,183],{},"Componentes Vue acessíveis (",[176,188,189],{},"components\u002F",[172,191,192,193,183],{},"Rotas de servidor e procedures tRPC (",[176,194,195],{},"server\u002F",[172,197,198,199,183],{},"Fatias de schema do Drizzle ORM (",[176,200,201],{},"schema.ts",[138,203,204,205,208,209,212],{},"Isso significa que a funcionalidade de ",[145,206,207],{},"Faturamento (Billing)",", por exemplo, existe inteiramente contida 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          # Painel administrativo da plataforma, MFA e logs de auditoria\n├── billing\u002F        # Planos Stripe, checkout, webhooks e portal do cliente\n├── teams\u002F          # Multi-tenancy B2B, convites de membros e RBAC granular\n└── notifications\u002F  # Hub de WebSockets com Durable Objects e histórico SQLite\n","text",[176,221,218],{"__ignoreMap":222},"",[158,224],{},[161,226,228,229],{"id":227},"o-contrato-de-camadas-nuxfiremanifest","O Contrato de Camadas: ",[176,230,231],{},"@nuxfire\u002Fmanifest",[138,233,234,235,238],{},"Para que cada camada seja verdadeiramente modular sem acoplamento rígido, cada layer exporta um manifesto usando o helper compartilhado ",[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: \"Gerenciamento de assinaturas Stripe, webhooks e portal de clientes\",\n  dependencies: [\"teams\"],\n  routes: [\"\u002Fbilling\", \"\u002Fbilling\u002Fplans\"],\n  navigation: {\n    title: \"Assinatura & Faturamento\",\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},"Gerenciamento de assinaturas Stripe, webhooks e 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},"Assinatura & Faturamento",[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},"ativando-e-desativando-módulos-em-configts","Ativando e Desativando Módulos em ",[176,481,482],{},"config.ts",[138,484,485,486,238],{},"Imagine que você está criando um produto enxuto e não precisa do módulo de cobrança ou do sistema de notificações complexo. No Nuxfire, você controla os módulos no arquivo raiz ",[176,487,482],{},[214,489,491],{"className":241,"code":490,"language":243,"meta":222,"style":222},"export const config = {\n  domain: \"seusaas.com\",\n  layers: {\n    core: [\"teams\", \"notifications\", \"admin\"],\n    features: {\n      billing: false, \u002F\u002F Desative com facilidade sem quebrar o 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},"seusaas.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 Desative com facilidade sem quebrar o 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],{},"O script de build inspeciona esse arquivo e monta a composição final em ",[176,617,618],{},"apps\u002Fapp\u002Fnuxt.config.ts"," de forma 100% automática.",[158,621],{},[161,623,625],{"id":624},"benefícios-práticos-para-equipes-e-desenvolvedores","Benefícios Práticos para Equipes e Desenvolvedores",[627,628,629,635,641],"ol",{},[172,630,631,634],{},[145,632,633],{},"Testabilidade Isolada",": Cada camada possui seus próprios testes unitários e de integração.",[172,636,637,640],{},[145,638,639],{},"Reaproveitamento Imediato",": Crie um novo produto copiando apenas as camadas que você precisa.",[172,642,643,646,647,649],{},[145,644,645],{},"Contexto Ideal para IAs",": Ao pedir para uma IA (Cursor, Claude Code) editar o checkout, ela só precisa ler os arquivos dentro de ",[176,648,211],{},", sem carregar milhares de linhas irrelevantes na memória.",[138,651,652],{},"Pronto para transformar sua produtividade e construir com a arquitetura correta desde o início?",[138,654,655],{},[656,657,659],"a",{"href":658},"\u002Fpt-br#pricing",[145,660,661],{},"Garanta acesso imediato ao código-fonte do Nuxfire e ao 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},"O Contrato de Camadas: @nuxfire\u002Fmanifest",{"id":478,"depth":284,"text":672},"Ativando e Desativando Módulos em config.ts",{"id":624,"depth":284,"text":625},"Engenharia de Software","2026-09-15","Como desacoplar faturamento Stripe, workspaces multi-tenant e painel admin usando Nuxt Layers e monorepos Bun para criar SaaS limpos e sustentáveis.","md","\u002Fimages\u002Fblog\u002Fnuxt-layers-modular-b2b.svg","pt-br",{},"\u002Fimages\u002Fblog\u002Fnuxt-layers-modular-b2b.png","\u002Fblog\u002Farquitetura-modular-nuxt-layers-b2b","8 min",{"title":131,"description":676},"blog\u002Farquitetura-modular-nuxt-layers-b2b",[151,687,688,689],"Arquitetura 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","U0ImZuzNt3n8vMqmrtu83MyMY4pyCGpJQQtWH6EmrXs",1794055329841]