{"id":26,"date":"2026-06-06T21:48:59","date_gmt":"2026-06-06T21:48:59","guid":{"rendered":"https:\/\/softwareproduction.eu\/wordpress\/?p=26"},"modified":"2026-06-06T23:45:48","modified_gmt":"2026-06-06T23:45:48","slug":"the-full-picture-what-the-new-concept-delivers","status":"publish","type":"post","link":"https:\/\/softwareproduction.eu\/?p=26","title":{"rendered":"The Full Picture \u2014 What the New Concept Delivers"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Twentieth and final article in a series about migrating from legacy architectures to a modern Nuxt 4 stack.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">From Parts to Whole<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The previous fifteen articles describe individual pieces \u2014 the GraphQL gateway, code generators, performance, infrastructure, security. This article brings them together and answers the question that matters to decision-makers: <strong>what does the complete system deliver?<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Architecture at a Glance<\/h2>\n\n\n\n<pre class=\"mermaid\">flowchart TB\n    A[\"Azure Front Door&lt;br\/&gt;(CDN + WAF)\"] --&gt; B[Azure Container Apps Environment]\n    B --&gt; C[\"Nginx Proxy&lt;br\/&gt;TLS, Image cache, OTel spans\"]\n    C --&gt; D[\"Nuxt 4&lt;br\/&gt;SSR + GQL Gateway&lt;br\/&gt;SSR, GraphQL stitching&lt;br\/&gt;Page cache, Redis\"]\n    D --&gt; E[\".NET API&lt;br\/&gt;Pricing, Orders, Users, Validation\"]\n    D --&gt; F[\"Redis&lt;br\/&gt;(per-env)\"]\n    B --&gt; G[\"External Services&lt;br\/&gt;Headless CMS \u00b7 Application Insights&lt;br\/&gt;Azure Key Vault \u00b7 Azure AD\"]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Four containers per environment. One frontend language (<strong>TypeScript<\/strong>). One data schema (<strong>GraphQL<\/strong>). One module system (<strong>Nuxt modules<\/strong>). One configuration generator (<strong>YAML \u2192 JSON + Bicep<\/strong>).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Five Pillars<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Five architectural pillars, each delivering measurable value in a large enterprise application.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pillar 1: Unified Data Layer (GraphQL Schema Stitching)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What it delivers<\/strong>: One API endpoint for all data sources. The frontend never needs to know which backend produced which field.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Before<\/th><th>After<\/th><\/tr><\/thead><tbody><tr><td>3\u20135 REST calls per page<\/td><td>1 GraphQL query per page<\/td><\/tr><tr><td>Manual data joining in frontend code<\/td><td>Automatic via <code>@delegate<\/code> directive<\/td><\/tr><tr><td>Per-endpoint types, manually maintained<\/td><td>Generated from unified schema<\/td><\/tr><tr><td>Custom error handling per API<\/td><td>One Apollo error link<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Pillar 2: Total Automation (Code Generation)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What it delivers<\/strong>: Developers write declarations (GraphQL queries, YAML translations, GraphQL input types). The system generates everything else.<\/p>\n\n\n\n<pre class=\"mermaid\">flowchart LR\n    A[What developers write] --&gt; B[What is generated]\n    A1[.graphql files] --&gt; B1[\"Typed composables&lt;br\/&gt;(auto-imported)\"]\n    A2[YAML translation files] --&gt; B2[\"Typed t.* proxy chain&lt;br\/&gt;(auto-imported)\"]\n    A3[GraphQL input types] --&gt; B3[Form field metadata + validation]\n    A4[CMS content model] --&gt; B4[Vue component stubs + types]\n    A5[Module scaffold command] --&gt; B5[Complete module structure]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Roughly <strong>40\u201360% of the TypeScript code is generated<\/strong> \u2014 not boilerplate, but correct implementations derived from authoritative schemas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pillar 3: SSR Performance Stack<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What it delivers<\/strong>: Near-instant page loads with near-perfect Lighthouse scores.<\/p>\n\n\n\n<pre class=\"mermaid\">flowchart TB\n    S[Performance Stack]\n    S --&gt; L1[\"SSR&lt;br\/&gt;Content visible immediately\"]\n    S --&gt; L2[\"Multi-Tier Cache&lt;br\/&gt;Sub-ms data retrieval\"]\n    S --&gt; L3[\"Deferred Hydration&lt;br\/&gt;No render-blocking JS\"]\n    S --&gt; L4[\"Same-Origin Proxy&lt;br\/&gt;\u2212594ms LCP\"]\n    S --&gt; L5[\"Font Strategy&lt;br\/&gt;Zero CLS\"]\n    S --&gt; L6[\"Bot Detection&lt;br\/&gt;Clean audit scores\"]\n    S --&gt; L7[\"Manual Chunks&lt;br\/&gt;Only needed JS per page\"]\n    S --&gt; R[\"Combined Result&lt;br\/&gt;Lighthouse 97+ (mobile)\"]<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Pillar 4: Production-Grade Operations<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What it delivers<\/strong>: Elastic infrastructure, zero-downtime deployments, full observability, and instant rollback.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Capability<\/th><th>Implementation<\/th><th>Article<\/th><\/tr><\/thead><tbody><tr><td>Elastic scaling<\/td><td>Container Apps auto-scale (5\u201320 replicas)<\/td><td>11<\/td><\/tr><tr><td>Zero-downtime deploy<\/td><td>Blue-green with traffic switching<\/td><td>11<\/td><\/tr><tr><td>Per-branch environments<\/td><td>Automated feature deployments<\/td><td>11<\/td><\/tr><tr><td>Full request tracing<\/td><td>W3C Trace Context across all services<\/td><td>13<\/td><\/tr><tr><td>Security<\/td><td>CSRF + Azure AD + runtime CSP<\/td><td>12<\/td><\/tr><tr><td>Instant rollback<\/td><td>Traffic switch to previous revision<\/td><td>11<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Pillar 5: Developer Experience<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What it delivers<\/strong>: Fast feedback loops, strong type safety, AI-assisted debugging, and clear modular boundaries.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Aspect<\/th><th>Experience<\/th><\/tr><\/thead><tbody><tr><td><strong>New data source<\/strong><\/td><td>Write <code>.graphql<\/code> file \u2192 composable auto-imported<\/td><\/tr><tr><td><strong>New translation<\/strong><\/td><td>Add YAML key \u2192 <code>t.section.key<\/code> typed and available<\/td><\/tr><tr><td><strong>New module<\/strong><\/td><td>Run scaffold \u2192 complete structure created<\/td><\/tr><tr><td><strong>Debugging<\/strong><\/td><td>AI assistant with 30+ live inspection tools<\/td><\/tr><tr><td><strong>Architecture understanding<\/strong><\/td><td><code>AGENTS.md<\/code> + module READMEs + consistent patterns<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">For Decision-Makers: The Numbers<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Performance<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">These example metrics illustrate typical gains when moving a legacy enterprise frontend to a modern SSR + GraphQL stack:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Metric<\/th><th>Legacy<\/th><th>New<\/th><th>Improvement<\/th><\/tr><\/thead><tbody><tr><td>Median response time<\/td><td>2,618 ms<\/td><td>165 ms<\/td><td><strong>15.9\u00d7 faster<\/strong><\/td><\/tr><tr><td>Error rate<\/td><td>3.91%<\/td><td>0.09%<\/td><td><strong>97% lower<\/strong><\/td><\/tr><tr><td>Lighthouse Performance (mobile)<\/td><td>~50<\/td><td>97+<\/td><td><strong>+47 points<\/strong><\/td><\/tr><tr><td>LCP<\/td><td>> 5 s<\/td><td>< 2.5 s<\/td><td><strong>Google &#8220;good&#8221;<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Capacity and Cost<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Metric<\/th><th>Legacy<\/th><th>New<\/th><th>Improvement<\/th><\/tr><\/thead><tbody><tr><td>Max tested capacity<\/td><td>~99 RPM<\/td><td>494+ RPM<\/td><td><strong>5\u00d7 more<\/strong><\/td><\/tr><tr><td>Infrastructure model<\/td><td>Fixed (always on)<\/td><td>Elastic (pay-per-use)<\/td><td><strong>~40% cost reduction at average load<\/strong><\/td><\/tr><tr><td>Scaling<\/td><td>Manual (operations team)<\/td><td>Automatic (config-driven)<\/td><td><strong>Zero manual intervention<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Development Velocity<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Metric<\/th><th>Legacy<\/th><th>New<\/th><th>Improvement<\/th><\/tr><\/thead><tbody><tr><td>New API integration<\/td><td>Write REST client + types + mapper<\/td><td>Write <code>.graphql<\/code> file<\/td><td><strong>~90% less glue code<\/strong><\/td><\/tr><tr><td>New form<\/td><td>Backend + frontend sync + manual testing<\/td><td>Schema-driven, auto-validated<\/td><td><strong>No manual field wiring<\/strong><\/td><\/tr><tr><td>New CMS content type<\/td><td>Manual component + data fetching + types<\/td><td>Generated component stub + typed query<\/td><td><strong>No boilerplate<\/strong><\/td><\/tr><tr><td>New translation key<\/td><td>Add key, hope it matches at runtime<\/td><td>YAML key \u2192 typed <code>t.section.key<\/code><\/td><td><strong>Compile-time checked<\/strong><\/td><\/tr><tr><td>New module<\/td><td>Create folders, wire routing, exports, types<\/td><td><code>yarn plop<\/code> \u2192 complete scaffold<\/td><td><strong>Consistent structure in seconds<\/strong><\/td><\/tr><tr><td>Type safety coverage<\/td><td>Partial (hand-written)<\/td><td>Complete (generated)<\/td><td><strong>Zero type drift<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">For Architects: The Design Principles<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Five design principles unify the decisions across all 15 articles for large-scale web applications.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Generate, Don&#8217;t Write<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If code can be derived from an authoritative schema (GraphQL, CMS model, YAML translations), generate it. Hand-written code drifts; generated code stays correct.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. One Source of Truth Per Concern<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data shape \u2192 GraphQL schema  <\/li>\n<li>Validation rules \u2192 Backend model annotations  <\/li>\n<li>URL structure \u2192 CMS entries  <\/li>\n<li>Translations \u2192 YAML files  <\/li>\n<li>Infrastructure configuration \u2192 YAML values files  <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">No concern has two sources. Everything is defined once and consumed many times.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Eliminate Work, Don&#8217;t Optimize It<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The biggest performance gains came from <strong>removing<\/strong> work: modulepreload hints, cross-origin connections, redundant CMS queries. The biggest productivity gains came from removing boilerplate. Subtraction outperforms optimization.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Modules as Boundaries<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Folders suggest organization. Modules enforce it. With 35+ modules, each owning its own API surface, the codebase has real boundaries.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Measure Everything, Assume Nothing<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Architecture claims without data are opinions. Load test results, Lighthouse scores, cache hit rates, and response time distributions turn them into evidence. The production configuration is shaped by measurement.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lessons Learned<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">The whole is greater than the sum of the parts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No single technique produces a 15.9\u00d7 improvement. Stitched GraphQL removes multi-source joins, caching eliminates redundant fetches, deferred hydration removes render-blocking JS, and elastic infrastructure eliminates over-provisioning. Each targets a different bottleneck; together they transform the system.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture must allow change<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The architecture is designed upfront \u2014 but designed <em>for adaptability<\/em>. Technology and requirements evolve, and the system must evolve with them. An architecture that requires wholesale rewrites accumulates debt until it becomes unmaintainable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Four mechanisms make change safe:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Loose coupling via modules.<\/strong> Dozens of independent modules, each owning a vertical slice. Replacing authentication, tracking, or forms never cascades into unrelated code. A module can be deleted and rebuilt without touching the rest.<\/li>\n<li><strong>Code generation from schemas.<\/strong> Generated code follows the schema it came from. When a data source changes or a service is replaced, regeneration produces correct integration code. No hand-written adapter layer drifting from reality.<\/li>\n<li><strong>Schema-driven contracts (GraphQL).<\/strong> The frontend depends on a unified schema, not individual backends. A service can be rewritten, split, or replaced \u2014 as long as it serves the same fields, no frontend changes are required. New clients (mobile, internal tools) consume the same gateway without backend modifications.<\/li>\n<li><strong>Infrastructure as configuration.<\/strong> The same YAML generates manifests for Container Apps, AKS, and App Service. Switching platforms or adding environments is a configuration change, not a re-architecture.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In practice: adding a data source is one subgraph and a stitch directive. Changing rendering strategy is a route rule. Replacing a backend service is transparent to the frontend. Swapping a module is contained to its directory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Things that change often (services, modules, data sources, infrastructure) are easy to change. The few core decisions that are hard to change (framework, data protocol) are chosen carefully and affect only their own layer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Developer experience is a force multiplier<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Fast feedback loops (auto-generated types, branch environments, AI debugging) do not just improve morale \u2014 they improve the system. When adding a data source takes minutes instead of hours, teams integrate more data. When debugging takes minutes instead of days, bugs get fixed faster.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Developer hardware is not optional<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This architecture demands fast machines. The dev stack runs a Nuxt server watching thousands of files, a GraphQL server, code generators, and TypeScript language services analyzing the module graph \u2014 simultaneously. When hardware falls short, HMR becomes sluggish, type checking lags, and code generation feels blocking.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Windows is particularly affected. Node.js file watching and module resolution are measurably slower on NTFS than on macOS or Linux. Teams on Windows need WSL2, faster disks, or higher-spec hardware.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A trade-off worth noting: the architecture optimizes for velocity <em>given adequate hardware<\/em>. The minimum spec is higher than simpler stacks. Budget accordingly.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What&#8217;s Next<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The remaining articles dive deeper into specific technical patterns:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Article 17<\/strong>: <em>The <code>@delegate<\/code> Directive Deep Dive<\/em> \u2014 Cross-subgraph field resolution in detail  <\/li>\n<li><strong>Article 18<\/strong>: <em>Building a Headless Design System \u2014 The Compose Pattern<\/em> \u2014 Separating style logic from templates  <\/li>\n<li><strong>Article 19<\/strong>: <em>A\/B Testing at SSR Level<\/em> \u2014 Cookie-based variant selection during server rendering  <\/li>\n<li><strong>Articles 20\u201327<\/strong>: Content preview, logging, module development, conditional rendering, image proxying, observability, reactive filters, and deferred hydration<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Munir Husseini is a software architect specializing in full-stack TypeScript, .NET, and cloud-native architectures.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Twentieth and final article in a series about migrating from legacy architectures to a modern Nuxt 4 stack. From Parts to Whole The previous fifteen articles describe individual pieces \u2014 the GraphQL gateway, code generators, performance, infrastructure, security. This article brings them together and answers the question that matters to decision-makers: what does the complete [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":248,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-26","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-advanced-web-app-with-nuxt-and-net"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Full Picture \u2014 What the New Concept Delivers - Scalable Web Production<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/softwareproduction.eu\/?p=26\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Full Picture \u2014 What the New Concept Delivers - Scalable Web Production\" \/>\n<meta property=\"og:description\" content=\"Twentieth and final article in a series about migrating from legacy architectures to a modern Nuxt 4 stack. From Parts to Whole The previous fifteen articles describe individual pieces \u2014 the GraphQL gateway, code generators, performance, infrastructure, security. This article brings them together and answers the question that matters to decision-makers: what does the complete [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/softwareproduction.eu\/?p=26\" \/>\n<meta property=\"og:site_name\" content=\"Scalable Web Production\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-06T21:48:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-06T23:45:48+00:00\" \/>\n<meta name=\"author\" content=\"Munir Husseini\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Munir Husseini\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26\"},\"author\":{\"name\":\"Munir Husseini\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#\\\/schema\\\/person\\\/fec48f54713e1bd117640fb9b748802f\"},\"headline\":\"The Full Picture \u2014 What the New Concept Delivers\",\"datePublished\":\"2026-06-06T21:48:59+00:00\",\"dateModified\":\"2026-06-06T23:45:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26\"},\"wordCount\":1205,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/20-the-full-picture.jpg\",\"articleSection\":[\"Advanced Web App with Nuxt and .NET\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/softwareproduction.eu\\\/?p=26#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26\",\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26\",\"name\":\"The Full Picture \u2014 What the New Concept Delivers - Scalable Web Production\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/20-the-full-picture.jpg\",\"datePublished\":\"2026-06-06T21:48:59+00:00\",\"dateModified\":\"2026-06-06T23:45:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/softwareproduction.eu\\\/?p=26\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26#primaryimage\",\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/20-the-full-picture.jpg\",\"contentUrl\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/20-the-full-picture.jpg\",\"width\":1733,\"height\":1300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=26#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/softwareproduction.eu\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Full Picture \u2014 What the New Concept Delivers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#website\",\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/\",\"name\":\"Softwareproduction\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/softwareproduction.eu\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#organization\",\"name\":\"Munir Husseini\",\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/softwareproduction-logo-32.png\",\"contentUrl\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/softwareproduction-logo-32.png\",\"width\":32,\"height\":32,\"caption\":\"Munir Husseini\"},\"image\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#\\\/schema\\\/person\\\/fec48f54713e1bd117640fb9b748802f\",\"name\":\"Munir Husseini\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g\",\"caption\":\"Munir Husseini\"},\"sameAs\":[\"https:\\\/\\\/softwareproduction.eu\\\/\"],\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Full Picture \u2014 What the New Concept Delivers - Scalable Web Production","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/softwareproduction.eu\/?p=26","og_locale":"en_US","og_type":"article","og_title":"The Full Picture \u2014 What the New Concept Delivers - Scalable Web Production","og_description":"Twentieth and final article in a series about migrating from legacy architectures to a modern Nuxt 4 stack. From Parts to Whole The previous fifteen articles describe individual pieces \u2014 the GraphQL gateway, code generators, performance, infrastructure, security. This article brings them together and answers the question that matters to decision-makers: what does the complete [&hellip;]","og_url":"https:\/\/softwareproduction.eu\/?p=26","og_site_name":"Scalable Web Production","article_published_time":"2026-06-06T21:48:59+00:00","article_modified_time":"2026-06-06T23:45:48+00:00","author":"Munir Husseini","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Munir Husseini","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/softwareproduction.eu\/?p=26#article","isPartOf":{"@id":"https:\/\/softwareproduction.eu\/?p=26"},"author":{"name":"Munir Husseini","@id":"https:\/\/softwareproduction.eu\/#\/schema\/person\/fec48f54713e1bd117640fb9b748802f"},"headline":"The Full Picture \u2014 What the New Concept Delivers","datePublished":"2026-06-06T21:48:59+00:00","dateModified":"2026-06-06T23:45:48+00:00","mainEntityOfPage":{"@id":"https:\/\/softwareproduction.eu\/?p=26"},"wordCount":1205,"commentCount":0,"publisher":{"@id":"https:\/\/softwareproduction.eu\/#organization"},"image":{"@id":"https:\/\/softwareproduction.eu\/?p=26#primaryimage"},"thumbnailUrl":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/20-the-full-picture.jpg","articleSection":["Advanced Web App with Nuxt and .NET"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/softwareproduction.eu\/?p=26#respond"]}]},{"@type":"WebPage","@id":"https:\/\/softwareproduction.eu\/?p=26","url":"https:\/\/softwareproduction.eu\/?p=26","name":"The Full Picture \u2014 What the New Concept Delivers - Scalable Web Production","isPartOf":{"@id":"https:\/\/softwareproduction.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/softwareproduction.eu\/?p=26#primaryimage"},"image":{"@id":"https:\/\/softwareproduction.eu\/?p=26#primaryimage"},"thumbnailUrl":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/20-the-full-picture.jpg","datePublished":"2026-06-06T21:48:59+00:00","dateModified":"2026-06-06T23:45:48+00:00","breadcrumb":{"@id":"https:\/\/softwareproduction.eu\/?p=26#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/softwareproduction.eu\/?p=26"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareproduction.eu\/?p=26#primaryimage","url":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/20-the-full-picture.jpg","contentUrl":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/20-the-full-picture.jpg","width":1733,"height":1300},{"@type":"BreadcrumbList","@id":"https:\/\/softwareproduction.eu\/?p=26#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/softwareproduction.eu\/"},{"@type":"ListItem","position":2,"name":"The Full Picture \u2014 What the New Concept Delivers"}]},{"@type":"WebSite","@id":"https:\/\/softwareproduction.eu\/#website","url":"https:\/\/softwareproduction.eu\/","name":"Softwareproduction","description":"","publisher":{"@id":"https:\/\/softwareproduction.eu\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/softwareproduction.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/softwareproduction.eu\/#organization","name":"Munir Husseini","url":"https:\/\/softwareproduction.eu\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareproduction.eu\/#\/schema\/logo\/image\/","url":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/05\/softwareproduction-logo-32.png","contentUrl":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/05\/softwareproduction-logo-32.png","width":32,"height":32,"caption":"Munir Husseini"},"image":{"@id":"https:\/\/softwareproduction.eu\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/softwareproduction.eu\/#\/schema\/person\/fec48f54713e1bd117640fb9b748802f","name":"Munir Husseini","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g","caption":"Munir Husseini"},"sameAs":["https:\/\/softwareproduction.eu\/"],"url":"https:\/\/softwareproduction.eu\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/20-the-full-picture.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/posts\/26","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=26"}],"version-history":[{"count":10,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/posts\/26\/revisions"}],"predecessor-version":[{"id":249,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/posts\/26\/revisions\/249"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/media\/248"}],"wp:attachment":[{"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}