1:"$Sreact.fragment" 2:I[9304,["874","static/chunks/874-476808868ec6108b.js","63","static/chunks/63-823c026914caba58.js","277","static/chunks/277-34ac9409e9b139a7.js","90","static/chunks/90-c5869c9866037403.js","177","static/chunks/app/layout-9df031a7c5ce6a68.js"],"ThemeProvider"] 3:I[7733,["874","static/chunks/874-476808868ec6108b.js","63","static/chunks/63-823c026914caba58.js","277","static/chunks/277-34ac9409e9b139a7.js","90","static/chunks/90-c5869c9866037403.js","177","static/chunks/app/layout-9df031a7c5ce6a68.js"],"LanguageProvider"] 4:I[6236,["874","static/chunks/874-476808868ec6108b.js","63","static/chunks/63-823c026914caba58.js","277","static/chunks/277-34ac9409e9b139a7.js","90","static/chunks/90-c5869c9866037403.js","177","static/chunks/app/layout-9df031a7c5ce6a68.js"],"default"] 5:I[3817,["874","static/chunks/874-476808868ec6108b.js","63","static/chunks/63-823c026914caba58.js","277","static/chunks/277-34ac9409e9b139a7.js","90","static/chunks/90-c5869c9866037403.js","177","static/chunks/app/layout-9df031a7c5ce6a68.js"],"default"] 6:I[7555,[],""] 7:I[1295,[],""] 8:I[6874,["874","static/chunks/874-476808868ec6108b.js","63","static/chunks/63-823c026914caba58.js","303","static/chunks/app/portfolio/%5Bslug%5D/page-3513e3dd2d4ae06b.js"],""] 9:I[3063,["874","static/chunks/874-476808868ec6108b.js","63","static/chunks/63-823c026914caba58.js","303","static/chunks/app/portfolio/%5Bslug%5D/page-3513e3dd2d4ae06b.js"],"Image"] a:I[7076,["874","static/chunks/874-476808868ec6108b.js","63","static/chunks/63-823c026914caba58.js","277","static/chunks/277-34ac9409e9b139a7.js","90","static/chunks/90-c5869c9866037403.js","177","static/chunks/app/layout-9df031a7c5ce6a68.js"],"default"] b:I[6671,["874","static/chunks/874-476808868ec6108b.js","63","static/chunks/63-823c026914caba58.js","277","static/chunks/277-34ac9409e9b139a7.js","90","static/chunks/90-c5869c9866037403.js","177","static/chunks/app/layout-9df031a7c5ce6a68.js"],"Toaster"] d:I[9665,[],"OutletBoundary"] 10:I[9665,[],"ViewportBoundary"] 12:I[9665,[],"MetadataBoundary"] 14:I[6614,[],""] :HL["/_next/static/media/636a5ac981f94f8b-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/139cb1476936bbfe.css","style"] :HL["/_next/static/css/91640fb5eb51ec66.css","style"] 0:{"P":null,"b":"N9LD80WwDAEtYpH8x6iC_","p":"","c":["","portfolio","doors-windows-erm"],"i":false,"f":[[["",{"children":["portfolio",{"children":[["slug","doors-windows-erm","d"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/139cb1476936bbfe.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/91640fb5eb51ec66.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_646807 font-sans antialiased","children":["$","$L2",null,{"attribute":"class","defaultTheme":"light","enableSystem":true,"children":["$","$L3",null,{"children":[["$","$L4",null,{}],["$","div",null,{"className":"flex min-h-screen flex-col","children":[["$","$L5",null,{}],["$","main",null,{"className":"flex-1","children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}],["$","footer",null,{"className":"bg-secondary text-white","children":["$","div",null,{"className":"container mx-auto px-4 py-12 md:py-16","children":[["$","div",null,{"className":"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8","children":[["$","div",null,{"className":"space-y-4","children":[["$","$L8",null,{"href":"/","className":"inline-block","children":["$","$L9",null,{"src":"/images/logo.png","alt":"DotCreative Logo","width":200,"height":60,"className":"h-14 w-auto"}]}],["$","p",null,{"className":"text-sm text-white/80 mt-4 max-w-xs","children":"Empowering businesses with innovative software solutions and expert consulting services since 2015."}],["$","div",null,{"className":"flex space-x-4 mt-6","children":[["$","a",null,{"href":"#","className":"text-white/70 hover:text-primary transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-facebook h-5 w-5","children":[["$","path","1jg4f8",{"d":"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"}],"$undefined"]}]}],["$","a",null,{"href":"#","className":"text-white/70 hover:text-primary transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-twitter h-5 w-5","children":[["$","path","pff0z6",{"d":"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"}],"$undefined"]}]}],["$","a",null,{"href":"#","className":"text-white/70 hover:text-primary transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-linkedin h-5 w-5","children":[["$","path","c2jq9f",{"d":"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"}],["$","rect","mk3on5",{"width":"4","height":"12","x":"2","y":"9"}],["$","circle","bt5ra8",{"cx":"4","cy":"4","r":"2"}],"$undefined"]}]}],["$","a",null,{"href":"#","className":"text-white/70 hover:text-primary transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-instagram h-5 w-5","children":[["$","rect","2e1cvw",{"width":"20","height":"20","x":"2","y":"2","rx":"5","ry":"5"}],["$","path","9exkf1",{"d":"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"}],["$","line","r4j83e",{"x1":"17.5","x2":"17.51","y1":"6.5","y2":"6.5"}],"$undefined"]}]}]]}]]}],["$","div",null,{"children":[["$","h3",null,{"className":"text-lg font-bold mb-4","children":"Services"}],["$","ul",null,{"className":"space-y-2","children":[["$","li",null,{"children":["$","$L8",null,{"href":"/services/mobile-app-development","className":"text-white/70 hover:text-primary transition-colors","children":"Mobile App Development"}]}],["$","li",null,{"children":["$","$L8",null,{"href":"/services/web-app-development","className":"text-white/70 hover:text-primary transition-colors","children":"Web Development"}]}],["$","li",null,{"children":["$","$L8",null,{"href":"/services/saas-development","className":"text-white/70 hover:text-primary transition-colors","children":"SaaS Development"}]}],["$","li",null,{"children":["$","$L8",null,{"href":"/services/cybersecurity","className":"text-white/70 hover:text-primary transition-colors","children":"Cybersecurity"}]}],["$","li",null,{"children":["$","$L8",null,{"href":"/services/iot-solutions","className":"text-white/70 hover:text-primary transition-colors","children":"IoT Solutions"}]}]]}]]}],["$","div",null,{"children":[["$","h3",null,{"className":"text-lg font-bold mb-4","children":"Company"}],["$","ul",null,{"className":"space-y-2","children":[["$","li",null,{"children":["$","$L8",null,{"href":"/about","className":"text-white/70 hover:text-primary transition-colors","children":"About Us"}]}],["$","li",null,{"children":["$","$L8",null,{"href":"/services","className":"text-white/70 hover:text-primary transition-colors","children":"Services"}]}],["$","li",null,{"children":["$","$L8",null,{"href":"/portfolio","className":"text-white/70 hover:text-primary transition-colors","children":"Portfolio"}]}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","className":"text-white/70 hover:text-primary transition-colors","children":"Blog"}]}],["$","li",null,{"children":["$","$L8",null,{"href":"/contact","className":"text-white/70 hover:text-primary transition-colors","children":"Contact"}]}],["$","li",null,{"children":["$","$L8",null,{"href":"/privacy-policy","className":"text-white/70 hover:text-primary transition-colors","children":"Privacy Policy"}]}],["$","li",null,{"children":["$","$L8",null,{"href":"/terms","className":"text-white/70 hover:text-primary transition-colors","children":"Terms of Service"}]}]]}]]}],["$","div",null,{"children":[["$","h3",null,{"className":"text-lg font-bold mb-4","children":"Contact"}],["$","ul",null,{"className":"space-y-4","children":[["$","li",null,{"className":"flex items-start","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-map-pin h-5 w-5 mr-2 text-primary shrink-0 mt-0.5","children":[["$","path","1r0f0z",{"d":"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"}],["$","circle","ilqhr7",{"cx":"12","cy":"10","r":"3"}],"$undefined"]}],["$","span",null,{"className":"text-white/80","children":["21 Tigoni Road, Kilimani",["$","br",null,{}],"Nairobi, Kenya"]}]]}],["$","li",null,{"className":"flex items-center","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-phone h-5 w-5 mr-2 text-primary shrink-0","children":[["$","path","foiqr5",{"d":"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"}],"$undefined"]}],["$","a",null,{"href":"tel:+254703822480","className":"text-white/80 hover:text-primary transition-colors","children":"+254 (703) 822480"}]]}],["$","li",null,{"className":"flex items-center","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-mail h-5 w-5 mr-2 text-primary shrink-0","children":[["$","rect","18n3k1",{"width":"20","height":"16","x":"2","y":"4","rx":"2"}],["$","path","1ocrg3",{"d":"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"}],"$undefined"]}],["$","a",null,{"href":"mailto:info@dotcreative.co.ke","className":"text-white/80 hover:text-primary transition-colors","children":"info@dotcreative.co.ke"}]]}],["$","li",null,{"className":"flex items-start","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-clock h-5 w-5 mr-2 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","polyline","68esgv",{"points":"12 6 12 12 16 14"}],"$undefined"]}],["$","span",null,{"className":"text-white/80","children":["Mon - Fri: 9:00 AM - 6:00 PM EAT",["$","br",null,{}],"Sat - Sun: Closed"]}]]}]]}]]}]]}],["$","div",null,{"className":"border-t border-white/20 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center","children":[["$","p",null,{"className":"text-sm text-white/60","children":["© ",2026," DotCreative. A subsidiary of"," ",["$","a",null,{"href":"https://hasrangroup.com","target":"_blank","rel":"noopener noreferrer","className":"underline hover:text-white","children":"Hasran Group"}],". All rights reserved."]}],["$","div",null,{"className":"flex space-x-6 mt-4 md:mt-0"}]]}]]}]}],["$","$La",null,{}]]}],["$","$Lb",null,{"position":"top-right","toastOptions":{"style":{"background":"white","border":"1px solid"},"success":{"style":{"background":"linear-gradient(to right, #ecfdf5, #f0fdf4)","border":"1px solid #86efac","color":"#166534"}},"error":{"style":{"background":"linear-gradient(to right, #fef2f2, #fff1f2)","border":"1px solid #fca5a5","color":"#991b1b"}},"info":{"style":{"background":"linear-gradient(to right, #eff6ff, #f0f7ff)","border":"1px solid #93c5fd","color":"#1e40af"}}}}]]}]}]}]}]]}],{"children":["portfolio",["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["slug","doors-windows-erm","d"],["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$Lc","$undefined",null,["$","$Ld",null,{"children":["$Le","$Lf",null]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","lyyZTKXdw8L3AcHfxviki",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L12",null,{"children":"$L13"}]]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true} c:[["$","section",null,{"className":"pt-10 pb-12 md:pt-14 md:pb-16 relative overflow-hidden","children":[["$","div",null,{"className":"absolute top-0 right-0 w-1/2 h-1/2 rounded-full blur-3xl -z-10 opacity-30","style":{"background":"#ec2024"}}],["$","div",null,{"className":"absolute bottom-0 left-0 w-1/3 h-1/3 bg-secondary/10 rounded-full blur-3xl -z-10"}],["$","div",null,{"className":"container","children":[["$","$L8",null,{"href":"/portfolio","className":"inline-flex items-center text-sm text-muted-foreground hover:text-primary mb-8 transition-colors","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-left mr-2 h-4 w-4","children":[["$","path","1l729n",{"d":"m12 19-7-7 7-7"}],["$","path","x3x0zl",{"d":"M19 12H5"}],"$undefined"]}],"Back to portfolio"]}],["$","div",null,{"className":"grid grid-cols-1 lg:grid-cols-2 gap-12 items-center","children":[["$","div",null,{"children":[["$","div",null,{"className":"flex flex-wrap items-center gap-3 mb-4","children":[["$","span",null,{"className":"text-xs font-semibold uppercase tracking-wider px-3 py-1 rounded-full bg-primary/10 text-primary","children":"Manufacturing"}],["$","span",null,{"className":"text-sm text-muted-foreground","children":"Doors, windows & architectural glass"}],["$","span",null,{"className":"text-sm text-muted-foreground","children":["· ","2026"]}]]}],["$","h1",null,{"className":"font-heading text-4xl md:text-5xl font-bold mb-4","children":"Doors & Windows ERM"}],["$","p",null,{"className":"text-xl md:text-2xl font-medium mb-6","style":{"color":"#ec2024"},"children":"From quotation to installed openings—one project spine."}],["$","p",null,{"className":"text-lg text-muted-foreground mb-8 leading-relaxed","children":"An enterprise resource management system for glass and aluminium door/window fabricators: sales, design, quotation, materials, production, QC, and field installation tied to a single project record."}],["$","div",null,{"className":"flex flex-wrap gap-4","children":[["$","$L8",null,{"href":"/contact","children":"Discuss a similar build","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-primary-foreground h-10 px-4 py-2 bg-primary hover:bg-primary/90","ref":null}],null]}]]}],["$","div",null,{"className":"relative","children":[["$","div",null,{"className":"absolute -inset-1 rounded-2xl blur opacity-25","style":{"background":"linear-gradient(135deg, #ec2024, #255c84)"}}],["$","div",null,{"className":"relative rounded-2xl overflow-hidden border border-border/60 bg-muted/20","children":["$","$L9",null,{"src":"/images/portfolio/doors-windows-erm-cover.png","alt":"Doors and Windows ERP manufacturing operations dashboard","width":1200,"height":675,"className":"w-full h-auto","priority":true}]}]]}]]}]]}]]}],["$","section",null,{"className":"py-12 border-y border-border/60 bg-muted/20","children":["$","div",null,{"className":"container grid grid-cols-1 md:grid-cols-3 gap-8","children":[["$","div",null,{"children":[["$","p",null,{"className":"text-sm text-muted-foreground mb-1","children":"Type"}],["$","p",null,{"className":"font-semibold","children":"Manufacturing"}]]}],["$","div",null,{"children":[["$","p",null,{"className":"text-sm text-muted-foreground mb-1","children":"Our role"}],["$","p",null,{"className":"font-semibold","children":"Full-stack ERM product design, module architecture, and implementation"}]]}],["$","div",null,{"children":[["$","p",null,{"className":"text-sm text-muted-foreground mb-1","children":"Industry"}],["$","p",null,{"className":"font-semibold","children":"Doors, windows & architectural glass"}]]}]]}]}],["$","section",null,{"className":"py-20","children":["$","div",null,{"className":"container grid grid-cols-1 lg:grid-cols-2 gap-12","children":[["$","div",null,{"children":[["$","h2",null,{"className":"font-heading text-3xl font-bold mb-4","children":"The challenge"}],["$","p",null,{"className":"text-muted-foreground leading-relaxed text-lg","children":"Door and window manufacturers run a long chain—lead, site measure, design, quote, deposit, BOM, warehouse, cutting, fabrication, glass fit, QC, and install. When those steps live in separate tools, hand-offs break, stock fights projects, and nobody owns the stage."}]]}],["$","div",null,{"children":[["$","h2",null,{"className":"font-heading text-3xl font-bold mb-4","children":"What we delivered"}],["$","p",null,{"className":"text-muted-foreground leading-relaxed text-lg","children":"DotCreative built a project-centric ERM: CRM wins the deal, Project Management owns stage progression, and warehouse, procurement, production, QC, and field emit events into that spine—so fabrication businesses run one connected operating model."}]]}]]}]}],["$","section",null,{"className":"py-20 bg-muted/30","children":["$","div",null,{"className":"container","children":[["$","div",null,{"className":"max-w-3xl mb-14","children":[["$","h2",null,{"className":"font-heading text-3xl md:text-4xl font-bold mb-4","children":"How the system works"}],["$","p",null,{"className":"text-lg text-muted-foreground","children":"A walkthrough of the operating model—from daily work to controls that keep the business governed."}]]}],["$","div",null,{"className":"space-y-10","children":[["$","div","Sales → project handoff",{"className":"grid grid-cols-1 lg:grid-cols-[80px_1fr] gap-6 lg:gap-10 items-start","children":[["$","div",null,{"className":"font-heading text-4xl font-bold text-primary/40","children":"01"}],["$","div",null,{"children":[["$","h3",null,{"className":"font-heading text-2xl font-bold mb-3","children":"Sales → project handoff"}],["$","p",null,{"className":"text-muted-foreground mb-4 leading-relaxed","children":"Leads move through contact, account, site visit, millimetre measurements, design, quotation, and deposit. When the deal is won, a project is created and starts at awaiting deposit or deposit received."}],["$","ul",null,{"className":"grid grid-cols-1 md:grid-cols-2 gap-3","children":[["$","li","Lead pipeline through quotation and deal win",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"Lead pipeline through quotation and deal win"}]]}],["$","li","Quotation measurements for pricing vs production measurements later",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"Quotation measurements for pricing vs production measurements later"}]]}],["$","li","Deposit threshold gates when execution can advance",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"Deposit threshold gates when execution can advance"}]]}]]}]]}]]}],["$","div","Design, BOM, and materials",{"className":"grid grid-cols-1 lg:grid-cols-[80px_1fr] gap-6 lg:gap-10 items-start","children":[["$","div",null,{"className":"font-heading text-4xl font-bold text-primary/40","children":"02"}],["$","div",null,{"children":[["$","h3",null,{"className":"font-heading text-2xl font-bold mb-3","children":"Design, BOM, and materials"}],["$","p",null,{"className":"text-muted-foreground mb-4 leading-relaxed","children":"Approved measurements become design jobs; fabrication-ready packages feed quotation and later BOM. When the BOM is finalized, warehouse runs an all-or-nothing FIFO reservation—or procurement fills shortages before release to the shop floor."}],["$","ul",null,{"className":"grid grid-cols-1 md:grid-cols-2 gap-3","children":[["$","li","Design jobs and fabrication-ready uploads",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"Design jobs and fabrication-ready uploads"}]]}],["$","li","BOM finalize triggers stock check and reservation",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"BOM finalize triggers stock check and reservation"}]]}],["$","li","PR → PO → GRN path when materials are short",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"PR → PO → GRN path when materials are short"}]]}],["$","li","Glass ordered per project—not held as bin stock",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"Glass ordered per project—not held as bin stock"}]]}]]}]]}]]}],["$","div","Production → QC → field install",{"className":"grid grid-cols-1 lg:grid-cols-[80px_1fr] gap-6 lg:gap-10 items-start","children":[["$","div",null,{"className":"font-heading text-4xl font-bold text-primary/40","children":"03"}],["$","div",null,{"children":[["$","h3",null,{"className":"font-heading text-2xl font-bold mb-3","children":"Production → QC → field install"}],["$","p",null,{"className":"text-muted-foreground mb-4 leading-relaxed","children":"Production schedules orders through material prep, cutting, fabrication, sash, glass assembly, finishing, and post-fab QC. Field then runs install jobs, delivery records, unit progress, non-conformities, and tool custody through to site QC and snagging."}],["$","ul",null,{"className":"grid grid-cols-1 md:grid-cols-2 gap-3","children":[["$","li","Shop-floor stages with evidence and misfit handling",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"Shop-floor stages with evidence and misfit handling"}]]}],["$","li","Install modes for fabrication-only vs full site install",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"Install modes for fabrication-only vs full site install"}]]}],["$","li","QC gates across warehouse, production, and site",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"QC gates across warehouse, production, and site"}]]}],["$","li","Client portal shows controlled progress without exposing internal ops",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"Client portal shows controlled progress without exposing internal ops"}]]}]]}]]}]]}],["$","div","Governed integration",{"className":"grid grid-cols-1 lg:grid-cols-[80px_1fr] gap-6 lg:gap-10 items-start","children":[["$","div",null,{"className":"font-heading text-4xl font-bold text-primary/40","children":"04"}],["$","div",null,{"children":[["$","h3",null,{"className":"font-heading text-2xl font-bold mb-3","children":"Governed integration"}],["$","p",null,{"className":"text-muted-foreground mb-4 leading-relaxed","children":"Warehouse, procurement, production, and field notify Project Management; only PM writes the canonical project stage. Every meaningful action stays attributable to a user—and usually a project—with an audit trail."}],["$","ul",null,{"className":"grid grid-cols-1 md:grid-cols-2 gap-3","children":[["$","li","19-stage project lifecycle from deposit to complete",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"19-stage project lifecycle from deposit to complete"}]]}],["$","li","Event-driven module integration",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"Event-driven module integration"}]]}],["$","li","Role + permission access by department",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"Role + permission access by department"}]]}],["$","li","FIFO materials with audited overrides",{"className":"flex items-start gap-2 text-sm md:text-base","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-circle-check h-5 w-5 text-primary shrink-0 mt-0.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","path","dzmm74",{"d":"m9 12 2 2 4-4"}],"$undefined"]}],["$","span",null,{"children":"FIFO materials with audited overrides"}]]}]]}]]}]]}]]}]]}]}],["$","section",null,{"className":"py-20","children":["$","div",null,{"className":"container","children":[["$","div",null,{"className":"max-w-3xl mb-12","children":[["$","h2",null,{"className":"font-heading text-3xl md:text-4xl font-bold mb-4","children":"Core modules"}],["$","p",null,{"className":"text-lg text-muted-foreground","children":"The building blocks operators use day to day."}]]}],["$","div",null,{"className":"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6","children":[["$","div","CRM & quotation",{"className":"rounded-2xl border border-border/70 bg-background p-6 hover:border-primary/40 transition-colors","children":[["$","h3",null,{"className":"font-heading text-xl font-bold mb-2","children":"CRM & quotation"}],["$","p",null,{"className":"text-muted-foreground text-sm leading-relaxed","children":"Leads, accounts, deals, site visits, measurements, and proforma quotations."}]]}],["$","div","Design",{"className":"rounded-2xl border border-border/70 bg-background p-6 hover:border-primary/40 transition-colors","children":[["$","h3",null,{"className":"font-heading text-xl font-bold mb-2","children":"Design"}],["$","p",null,{"className":"text-muted-foreground text-sm leading-relaxed","children":"Measurement packages to fabrication-ready design jobs and reviews."}]]}],["$","div","Project management",{"className":"rounded-2xl border border-border/70 bg-background p-6 hover:border-primary/40 transition-colors","children":[["$","h3",null,{"className":"font-heading text-xl font-bold mb-2","children":"Project management"}],["$","p",null,{"className":"text-muted-foreground text-sm leading-relaxed","children":"Stage board, BOM, documents, change orders, dispatch, and timeline."}]]}],["$","div","Warehouse & procurement",{"className":"rounded-2xl border border-border/70 bg-background p-6 hover:border-primary/40 transition-colors","children":[["$","h3",null,{"className":"font-heading text-xl font-bold mb-2","children":"Warehouse & procurement"}],["$","p",null,{"className":"text-muted-foreground text-sm leading-relaxed","children":"FIFO stock, tools, offcuts, PRs/POs/GRNs, and per-project glass orders."}]]}],["$","div","Production & QC",{"className":"rounded-2xl border border-border/70 bg-background p-6 hover:border-primary/40 transition-colors","children":[["$","h3",null,{"className":"font-heading text-xl font-bold mb-2","children":"Production & QC"}],["$","p",null,{"className":"text-muted-foreground text-sm leading-relaxed","children":"Cutting through glass assembly with inspection gates and defects."}]]}],["$","div","Field installation",{"className":"rounded-2xl border border-border/70 bg-background p-6 hover:border-primary/40 transition-colors","children":[["$","h3",null,{"className":"font-heading text-xl font-bold mb-2","children":"Field installation"}],["$","p",null,{"className":"text-muted-foreground text-sm leading-relaxed","children":"Crew jobs, delivery, unit progress, NCs, and site handover."}]]}]]}]]}]}],["$","section",null,{"className":"py-20 bg-secondary text-white","children":["$","div",null,{"className":"container","children":[["$","div",null,{"className":"max-w-3xl mb-12","children":[["$","h2",null,{"className":"font-heading text-3xl md:text-4xl font-bold mb-4","children":"Results at a glance"}],["$","p",null,{"className":"text-white/75 text-lg","children":"Point-in-time signals from the live or populated environment—not marketing estimates."}]]}],["$","div",null,{"className":"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-6","children":[["$","div","Project stages",{"className":"text-center md:text-left","children":[["$","div",null,{"className":"font-heading text-3xl md:text-4xl font-bold text-primary mb-1","children":"19"}],["$","div",null,{"className":"text-sm text-white/70","children":"Project stages"}]]}],["$","div","Ops modules",{"className":"text-center md:text-left","children":[["$","div",null,{"className":"font-heading text-3xl md:text-4xl font-bold text-primary mb-1","children":"8+"}],["$","div",null,{"className":"text-sm text-white/70","children":"Ops modules"}]]}],["$","div","Project spine",{"className":"text-center md:text-left","children":[["$","div",null,{"className":"font-heading text-3xl md:text-4xl font-bold text-primary mb-1","children":"1"}],["$","div",null,{"className":"text-sm text-white/70","children":"Project spine"}]]}],["$","div","Material reservation",{"className":"text-center md:text-left","children":[["$","div",null,{"className":"font-heading text-3xl md:text-4xl font-bold text-primary mb-1","children":"FIFO"}],["$","div",null,{"className":"text-sm text-white/70","children":"Material reservation"}]]}],["$","div","Measurement standard",{"className":"text-center md:text-left","children":[["$","div",null,{"className":"font-heading text-3xl md:text-4xl font-bold text-primary mb-1","children":"mm"}],["$","div",null,{"className":"text-sm text-white/70","children":"Measurement standard"}]]}],["$","div","Sales-to-install chain",{"className":"text-center md:text-left","children":[["$","div",null,{"className":"font-heading text-3xl md:text-4xl font-bold text-primary mb-1","children":"Full"}],["$","div",null,{"className":"text-sm text-white/70","children":"Sales-to-install chain"}]]}]]}],["$","div",null,{"className":"mt-12 pt-10 border-t border-white/15","children":[["$","p",null,{"className":"text-sm uppercase tracking-wider text-white/50 mb-4","children":"Capabilities & stack"}],["$","div",null,{"className":"flex flex-wrap gap-2","children":[["$","span","Next.js",{"className":"px-3 py-1 rounded-full text-sm bg-white/10 text-white/90 border border-white/10","children":"Next.js"}],["$","span","Laravel API",{"className":"px-3 py-1 rounded-full text-sm bg-white/10 text-white/90 border border-white/10","children":"Laravel API"}],["$","span","PostgreSQL / MySQL",{"className":"px-3 py-1 rounded-full text-sm bg-white/10 text-white/90 border border-white/10","children":"PostgreSQL / MySQL"}],["$","span","Event-driven modules",{"className":"px-3 py-1 rounded-full text-sm bg-white/10 text-white/90 border border-white/10","children":"Event-driven modules"}],["$","span","Role-based access",{"className":"px-3 py-1 rounded-full text-sm bg-white/10 text-white/90 border border-white/10","children":"Role-based access"}],["$","span","Client portal",{"className":"px-3 py-1 rounded-full text-sm bg-white/10 text-white/90 border border-white/10","children":"Client portal"}]]}]]}]]}]}],["$","section",null,{"className":"py-20","children":["$","div",null,{"className":"container","children":["$","div",null,{"className":"rounded-3xl bg-muted/40 border border-border/60 p-8 md:p-12 text-center max-w-4xl mx-auto","children":[["$","h2",null,{"className":"font-heading text-3xl font-bold mb-4","children":"Ready for your own operating system?"}],["$","p",null,{"className":"text-muted-foreground text-lg mb-8 max-w-2xl mx-auto","children":"Running a doors, windows, or architectural glass operation? We can map your sales-to-install flow onto a single ERM spine."}],["$","$L8",null,{"href":"/contact","children":"Book a discovery conversation","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-primary-foreground h-11 rounded-md px-8 bg-primary hover:bg-primary/90","ref":null}]]}]}]}],["$","section",null,{"className":"pb-24","children":["$","div",null,{"className":"container","children":[["$","h2",null,{"className":"font-heading text-2xl font-bold mb-8","children":"More from the portfolio"}],["$","div",null,{"className":"grid grid-cols-1 md:grid-cols-2 gap-6","children":[["$","$L8","pharma-gmp",{"href":"/portfolio/pharma-gmp","className":"group rounded-2xl border border-border/70 overflow-hidden hover:border-primary/40 transition-colors","children":[["$","div",null,{"className":"aspect-[16/9] relative bg-muted","children":["$","$L9",null,{"src":"/images/portfolio/pharma-gmp-cover.png","alt":"Pharmaceutical GMP compliance dashboard","fill":true,"className":"object-cover transition-transform duration-500 group-hover:scale-[1.03]"}]}],["$","div",null,{"className":"p-6","children":[["$","p",null,{"className":"text-xs font-semibold uppercase tracking-wider text-primary mb-2","children":"GMP / Pharma"}],["$","h3",null,{"className":"font-heading text-xl font-bold mb-2 group-hover:text-primary transition-colors","children":"Pharmaceutical GMP"}],["$","p",null,{"className":"text-sm text-muted-foreground mb-4 line-clamp-2","children":"A populated pharmaceutical GMP implementation connecting documents, materials, production, quality, and audit evidence in one role-aware operating model."}],["$","span",null,{"className":"inline-flex items-center text-sm font-medium text-primary","children":["Read more",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-right ml-2 h-4 w-4","children":[["$","path","1ays0h",{"d":"M5 12h14"}],["$","path","xquz4c",{"d":"m12 5 7 7-7 7"}],"$undefined"]}]]}]]}]]}],["$","$L8","dotcreative-helpdesk",{"href":"/portfolio/dotcreative-helpdesk","className":"group rounded-2xl border border-border/70 overflow-hidden hover:border-primary/40 transition-colors","children":[["$","div",null,{"className":"aspect-[16/9] relative bg-muted","children":["$","$L9",null,{"src":"/images/portfolio/helpdesk-cover.png","alt":"DotCreative Helpdesk portal and support workspace","fill":true,"className":"object-cover transition-transform duration-500 group-hover:scale-[1.03]"}]}],["$","div",null,{"className":"p-6","children":[["$","p",null,{"className":"text-xs font-semibold uppercase tracking-wider text-primary mb-2","children":"Support"}],["$","h3",null,{"className":"font-heading text-xl font-bold mb-2 group-hover:text-primary transition-colors","children":"DotCreative Helpdesk"}],["$","p",null,{"className":"text-sm text-muted-foreground mb-4 line-clamp-2","children":"A client-facing helpdesk where customers report what broke, open a tracked ticket, and get an agent assigned—so support stays visible from intake to resolution."}],["$","span",null,{"className":"inline-flex items-center text-sm font-medium text-primary","children":["Read more",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-right ml-2 h-4 w-4","children":[["$","path","1ays0h",{"d":"M5 12h14"}],["$","path","xquz4c",{"d":"m12 5 7 7-7 7"}],"$undefined"]}]]}]]}]]}],["$","$L8","stockly",{"href":"/portfolio/stockly","className":"group rounded-2xl border border-border/70 overflow-hidden hover:border-primary/40 transition-colors","children":[["$","div",null,{"className":"aspect-[16/9] relative bg-muted","children":["$","$L9",null,{"src":"/images/portfolio/stockly-cover.png","alt":"Stockly POS hardware and retail dashboard showcase","fill":true,"className":"object-cover transition-transform duration-500 group-hover:scale-[1.03]"}]}],["$","div",null,{"className":"p-6","children":[["$","p",null,{"className":"text-xs font-semibold uppercase tracking-wider text-primary mb-2","children":"SaaS"}],["$","h3",null,{"className":"font-heading text-xl font-bold mb-2 group-hover:text-primary transition-colors","children":"Stockly"}],["$","p",null,{"className":"text-sm text-muted-foreground mb-4 line-clamp-2","children":"A cloud-based multi-shop POS and inventory platform that unifies sales, stock, and customer loyalty so retailers run every location from one place."}],["$","span",null,{"className":"inline-flex items-center text-sm font-medium text-primary","children":["Read more",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-right ml-2 h-4 w-4","children":[["$","path","1ays0h",{"d":"M5 12h14"}],["$","path","xquz4c",{"d":"m12 5 7 7-7 7"}],"$undefined"]}]]}]]}]]}]]}]]}]}]] 11:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] e:null f:null 13:[["$","title","0",{"children":"Doors & Windows ERM | Portfolio | DotCreative"}],["$","meta","1",{"name":"description","content":"An enterprise resource management system for glass and aluminium door/window fabricators: sales, design, quotation, materials, production, QC, and field installation tied to a single project record."}],["$","meta","2",{"name":"generator","content":"v0.dev"}],["$","link","3",{"rel":"icon","href":"/images/fav.png"}]]