1:"$Sreact.fragment" 2:I[65875,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js"],"ThemeProvider"] 3:I[39756,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"default"] 4:I[37457,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"default"] 5:I[71311,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js"],"FloatingActions"] 6:I[20158,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js"],"Analytics"] 7:I[34863,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js"],"Toaster"] 8:I[79799,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js"],"ModalProvider"] 9:I[3995,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js","/_next/static/chunks/95a5e382a1e8200a.js","/_next/static/chunks/06fe5961b16f81d0.js","/_next/static/chunks/8c955ce35598c7b8.js"],"MainNav"] f:I[68027,[],"default"] :HL["/_next/static/chunks/98b318e576119eda.css","style"] :HL["/_next/static/chunks/9f6b77641f836b5a.css","style"] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/CalSans_SemiBold-s.p.4d9d14e3.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/f6a709d5935db663-s.p.529c3631.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 0:{"P":null,"b":"pOVubU_Kt6m3SrfLgqzM-","c":["","blogs"],"q":"","i":false,"f":[[["",{"children":["(root)",{"children":["blogs",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/98b318e576119eda.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/0a3f498ef71c618e.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/61bc785dc6bd3109.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/a676f0ced11453e9.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/4b778b2e48718709.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"icon","href":"/portfolio/logos/logo-3.png","media":"(prefers-color-scheme: light)"}],["$","link",null,{"rel":"icon","href":"/portfolio/logos/logo-4.png","media":"(prefers-color-scheme: dark)"}]]}],["$","body",null,{"suppressHydrationWarning":true,"className":"min-h-screen bg-background font-sans antialiased inter_dd475d0c-module__9A3jha__variable fontheading_82debfef-module__MkcH8W__variable","children":["$","$L2",null,{"attribute":"class","defaultTheme":"dark","enableSystem":false,"themes":["light","dark","retro","cyberpunk","paper","aurora","synthwave"],"children":[["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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"}],["$","$L5",null,{}],["$","$L6",null,{}],["$","$L7",null,{}],["$","$L8",null,{}]]}]}],null]}]]}],{"children":[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/9f6b77641f836b5a.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/95a5e382a1e8200a.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/06fe5961b16f81d0.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/8c955ce35598c7b8.js","async":true,"nonce":"$undefined"}]],["$","div",null,{"className":"flex min-h-screen flex-col bg-[#020617]","children":[["$","header",null,{"className":"sticky top-0 z-50 border-b border-white/10 bg-[#020617]/90 backdrop-blur","children":["$","div",null,{"className":"container flex h-20 items-center justify-between py-6","children":[["$","$L9",null,{"items":[{"title":"Home","href":"/"},{"title":"Projects","href":"/projects"},{"title":"Impact","href":"/#impact"},{"title":"Contact","href":"/#contact"}]}],["$","a",null,{"href":"/#contact","className":"hidden rounded-md bg-blue-600 px-4 py-2 text-sm font-semibold text-white transition hover:bg-blue-500 md:inline-flex","children":"Let's Talk"}]]}]}],["$","main",null,{"className":"container flex-1","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:style","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)}}"}}],"$La","$Lb"]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":["$Lc",{"children":["$Ld",{},null,false,false]},null,false,false]},null,false,false]},null,false,false],"$Le",false]],"m":"$undefined","G":["$f",[]],"S":true} 10:I[79520,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js","/_next/static/chunks/95a5e382a1e8200a.js","/_next/static/chunks/06fe5961b16f81d0.js","/_next/static/chunks/8c955ce35598c7b8.js","/_next/static/chunks/c17b6b84f9eabd23.js"],""] 16:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"ViewportBoundary"] 18:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"MetadataBoundary"] 19:"$Sreact.suspense" a:["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:children:props:children:1:props:style","children":404}] b:["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}] c:["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}] 11:T10d3,{"@context":"https://schema.org","@type":"CollectionPage","name":"Hussein Maghrabi — Blog","description":"Naman Barkiya's blog — thoughts on AI, software engineering, and building in public.","url":"https://h-maghrabi.tech//blogs","isPartOf":{"@type":"WebSite","name":"Hussein Maghrabi - Senior PHP / Laravel Developer","url":"https://h-maghrabi.tech/"},"author":{"@type":"Person","name":"Hussein Maghrabi","url":"https://h-maghrabi.tech/"},"mainEntity":{"@type":"Blog","name":"Hussein Maghrabi's Blog","description":"Naman Barkiya's blog — thoughts on AI, software engineering, and building in public.","url":"https://h-maghrabi.tech//blogs","author":{"@type":"Person","name":"Hussein Maghrabi","url":"https://h-maghrabi.tech/"},"blogPost":[{"@type":"BlogPosting","headline":"How I Got 150+ Stars on GitHub for a Next.js Portfolio Template","description":"The story behind minimal-next-portfolio — an open-source Next.js 16 portfolio template that grew from a personal project to 148 stars, 41 forks, and developers worldwide using it to showcase their work.","datePublished":"2026-02-01","url":"https://h-maghrabi.tech//blogs/how-i-got-150-stars-nextjs-portfolio-template","author":{"@type":"Person","name":"Hussein Maghrabi"},"keywords":"Next.js, Open Source, GitHub, Portfolio, React","image":"https://h-maghrabi.tech//blogs/star-history-portfolio.svg"},{"@type":"BlogPosting","headline":"Ship Your Backend in 10 Minutes: The Niya FastAPI Template","description":"A production-ready FastAPI template with Supabase auth, rate limiting, connection pooling, and clean architecture — built so you never waste another week on backend boilerplate.","datePublished":"2025-03-01","url":"https://h-maghrabi.tech//blogs/niya-fastapi-starter-template","author":{"@type":"Person","name":"Hussein Maghrabi"},"keywords":"FastAPI, Python, Supabase, Backend, API","image":"https://h-maghrabi.tech//blogs/niya-fastpi.png"},{"@type":"BlogPosting","headline":"I Built a Free SaaS Starter Template — Here's Everything Inside","description":"Niya SaaS Template is a production-ready, open-source Next.js 15 starter kit with Supabase auth, Zustand, React Query, Magic UI animations, and clean architecture. Built for developers and AI startups who want to ship fast.","datePublished":"2025-02-20","url":"https://h-maghrabi.tech//blogs/niya-saas-starter-template","author":{"@type":"Person","name":"Hussein Maghrabi"},"keywords":"Next.js, SaaS, Supabase, Open Source, Boilerplate","image":"https://h-maghrabi.tech//projects/niya/logo.png"},{"@type":"BlogPosting","headline":"Building a Production-Ready AI Chatbot Platform: Lessons from Convot","description":"Deep-dive into the architecture decisions, ingestion pipelines, and hard-won lessons from building Convot — an embeddable AI chatbot that retrieves answers from your own knowledge base.","datePublished":"2025-02-15","url":"https://h-maghrabi.tech//blogs/building-production-ai-chatbot-convot","author":{"@type":"Person","name":"Hussein Maghrabi"},"keywords":"AI, LLM, RAG, FastAPI, Next.js, Vector Search","image":"https://h-maghrabi.tech//projects/convot/logo.png"},{"@type":"BlogPosting","headline":"AEO vs SEO: How I Ranked #1 on ChatGPT for a Next.js Template","description":"Answer Engine Optimization (AEO) is the new frontier. Here's the exact strategy I used to get my open-source Next.js portfolio template to rank #1 on ChatGPT search — and what it means for developers building in public.","datePublished":"2024-11-20","url":"https://h-maghrabi.tech//blogs/aeo-vs-seo-chatgpt-ranking","author":{"@type":"Person","name":"Hussein Maghrabi"},"keywords":"SEO, AEO, Next.js, Open Source, Growth","image":"https://h-maghrabi.tech//projects/portfolio/logo.png"},{"@type":"BlogPosting","headline":"3D Card with Embedded Links Using Three.js and Blender","description":"Ever thought your traditional business card could use a serious upgrade? Here's how I used Three.js and Blender to transform a plain business card into an interactive 3D masterpiece with embedded clickable links.","datePublished":"2023-11-01","url":"https://h-maghrabi.tech//blogs/3d-card-threejs-blender","author":{"@type":"Person","name":"Hussein Maghrabi"},"keywords":"Three.js, Blender, 3D, JavaScript, WebGL","image":"https://h-maghrabi.tech//projects/card/card_2.webp"}]}}d:["$","$1","c",{"children":[[["$","$L10",null,{"id":"schema-blog-list","type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"$11"}}],"$L12","$L13"],["$L14"],"$L15"]}] e:["$","$1","h",{"children":[null,["$","$L16",null,{"children":"$@17"}],["$","div",null,{"hidden":true,"children":["$","$L18",null,{"children":["$","$19",null,{"name":"Next.Metadata","children":"$@1a"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] 1b:I[88754,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js","/_next/static/chunks/95a5e382a1e8200a.js","/_next/static/chunks/06fe5961b16f81d0.js","/_next/static/chunks/8c955ce35598c7b8.js","/_next/static/chunks/c17b6b84f9eabd23.js"],"ClientPageWrapper"] 1c:I[3601,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js","/_next/static/chunks/95a5e382a1e8200a.js","/_next/static/chunks/06fe5961b16f81d0.js","/_next/static/chunks/8c955ce35598c7b8.js","/_next/static/chunks/c17b6b84f9eabd23.js"],"AnimatedSection"] 1d:I[22016,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js","/_next/static/chunks/95a5e382a1e8200a.js","/_next/static/chunks/06fe5961b16f81d0.js","/_next/static/chunks/8c955ce35598c7b8.js","/_next/static/chunks/c17b6b84f9eabd23.js"],""] 1e:I[85437,["/_next/static/chunks/0a3f498ef71c618e.js","/_next/static/chunks/61bc785dc6bd3109.js","/_next/static/chunks/a676f0ced11453e9.js","/_next/static/chunks/4b778b2e48718709.js","/_next/static/chunks/95a5e382a1e8200a.js","/_next/static/chunks/06fe5961b16f81d0.js","/_next/static/chunks/8c955ce35598c7b8.js","/_next/static/chunks/c17b6b84f9eabd23.js"],"Image"] 27:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"] 12:["$","$L10",null,{"id":"schema-breadcrumb-blogs","type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://h-maghrabi.tech/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blogs\",\"item\":\"https://h-maghrabi.tech//blogs\"}]}"}}] 13:["$","$L1b",null,{"children":["$","div",null,{"children":[[["$","div",null,{"className":"flex flex-col mt-5 items-start gap-4 md:flex-row md:justify-between md:gap-8","children":["$","div",null,{"className":"flex-1 space-y-4","children":[["$","h1",null,{"className":"inline-block font-heading text-4xl tracking-tight lg:text-5xl capitalize ","children":"Blogs"}],["$","p",null,{"className":"text-lg text-muted-foreground","children":"Thoughts on AI, software engineering, and building in public."}]]}]}],["$","hr",null,{"className":"my-6"}]],["$","div",null,{"className":"mx-4 sm:mx-6 lg:mx-8 max-w-full overflow-x-hidden","children":["$","div",null,{"className":"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5 mt-2","children":[["$","$L1c","how-i-got-150-stars-nextjs-portfolio-template",{"delay":0,"direction":"up","className":"h-full","children":["$","$L1d",null,{"href":"/blogs/how-i-got-150-stars-nextjs-portfolio-template","className":"group relative flex flex-col bg-background border border-border rounded-lg overflow-hidden h-full transition-all duration-300 hover:shadow-lg hover:border-primary/40 hover:-translate-y-0.5","children":["$","article",null,{"className":"flex flex-col h-full","children":[["$","div",null,{"className":"relative w-full h-[180px] flex-shrink-0 overflow-hidden bg-muted","children":[["$","$L1e",null,{"src":"/blogs/star-history-portfolio.svg","alt":"How I Got 150+ Stars on GitHub for a Next.js Portfolio Template","fill":true,"className":"object-cover transition-transform duration-500 group-hover:scale-105"}],["$","div",null,{"className":"absolute inset-0 bg-gradient-to-t from-background/60 to-transparent"}]]}],["$","div",null,{"className":"p-5 flex flex-col flex-grow gap-3","children":[["$","div",null,{"className":"flex flex-wrap gap-1.5","aria-label":"Tags","children":[[["$","span","Next.js",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"Next.js"}],["$","span","Open Source",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"Open Source"}],["$","span","GitHub",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"GitHub"}]],["$","span",null,{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-muted text-muted-foreground","children":["+",2]}]]}],["$","h3",null,{"className":"text-lg font-bold text-foreground leading-snug line-clamp-2 group-hover:text-primary transition-colors duration-200","children":"How I Got 150+ Stars on GitHub for a Next.js Portfolio Template"}],["$","p",null,{"className":"text-sm text-muted-foreground line-clamp-3 flex-grow leading-relaxed","children":"The story behind minimal-next-portfolio — an open-source Next.js 16 portfolio template that grew from a personal project to 148 stars, 41 forks, and developers worldwide using it to showcase their work."}],["$","div",null,{"className":"flex items-center justify-between pt-2 border-t border-border mt-auto","children":[["$","div",null,{"className":"flex items-center gap-3 text-xs text-muted-foreground","children":[["$","time",null,{"dateTime":"2026-02-01T00:00:00.000Z","className":"flex items-center gap-1","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-calendar w-3.5 h-3.5","children":[["$","path","1cmpym",{"d":"M8 2v4"}],["$","path","4m81vk",{"d":"M16 2v4"}],["$","rect","1hopcy",{"width":"18","height":"18","x":"3","y":"4","rx":"2"}],["$","path","8toen8",{"d":"M3 10h18"}],"$undefined"]}],"February 1, 2026"]}],["$","span",null,{"className":"flex items-center gap-1","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 w-3.5 h-3.5","children":["$L1f","$L20","$undefined"]}],6," min read"]}]]}],"$L21"]}]]}]]}]}]}],"$L22","$L23","$L24","$L25","$L26"]}]}]]}]}] 14:["$","script","script-0",{"src":"/_next/static/chunks/c17b6b84f9eabd23.js","async":true,"nonce":"$undefined"}] 15:["$","$L27",null,{"children":["$","$19",null,{"name":"Next.MetadataOutlet","children":"$@28"}]}] 1f:["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}] 20:["$","polyline","68esgv",{"points":"12 6 12 12 16 14"}] 21:["$","span",null,{"className":"inline-flex items-center gap-0.5 text-xs font-medium text-muted-foreground group-hover:text-primary transition-colors duration-200","aria-hidden":"true","children":["Read",["$","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-chevron-right w-3 h-3 transition-transform duration-200 group-hover:translate-x-0.5","children":[["$","path","mthhwq",{"d":"m9 18 6-6-6-6"}],"$undefined"]}]]}] 22:["$","$L1c","niya-fastapi-starter-template",{"delay":0.05,"direction":"up","className":"h-full","children":["$","$L1d",null,{"href":"/blogs/niya-fastapi-starter-template","className":"group relative flex flex-col bg-background border border-border rounded-lg overflow-hidden h-full transition-all duration-300 hover:shadow-lg hover:border-primary/40 hover:-translate-y-0.5","children":["$","article",null,{"className":"flex flex-col h-full","children":[["$","div",null,{"className":"relative w-full h-[180px] flex-shrink-0 overflow-hidden bg-muted","children":[["$","$L1e",null,{"src":"/blogs/niya-fastpi.png","alt":"Ship Your Backend in 10 Minutes: The Niya FastAPI Template","fill":true,"className":"object-cover transition-transform duration-500 group-hover:scale-105"}],["$","div",null,{"className":"absolute inset-0 bg-gradient-to-t from-background/60 to-transparent"}]]}],["$","div",null,{"className":"p-5 flex flex-col flex-grow gap-3","children":[["$","div",null,{"className":"flex flex-wrap gap-1.5","aria-label":"Tags","children":[[["$","span","FastAPI",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"FastAPI"}],["$","span","Python",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"Python"}],["$","span","Supabase",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"Supabase"}]],["$","span",null,{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-muted text-muted-foreground","children":["+",2]}]]}],["$","h3",null,{"className":"text-lg font-bold text-foreground leading-snug line-clamp-2 group-hover:text-primary transition-colors duration-200","children":"Ship Your Backend in 10 Minutes: The Niya FastAPI Template"}],["$","p",null,{"className":"text-sm text-muted-foreground line-clamp-3 flex-grow leading-relaxed","children":"A production-ready FastAPI template with Supabase auth, rate limiting, connection pooling, and clean architecture — built so you never waste another week on backend boilerplate."}],["$","div",null,{"className":"flex items-center justify-between pt-2 border-t border-border mt-auto","children":[["$","div",null,{"className":"flex items-center gap-3 text-xs text-muted-foreground","children":[["$","time",null,{"dateTime":"2025-03-01T00:00:00.000Z","className":"flex items-center gap-1","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-calendar w-3.5 h-3.5","children":[["$","path","1cmpym",{"d":"M8 2v4"}],["$","path","4m81vk",{"d":"M16 2v4"}],["$","rect","1hopcy",{"width":"18","height":"18","x":"3","y":"4","rx":"2"}],["$","path","8toen8",{"d":"M3 10h18"}],"$undefined"]}],"March 1, 2025"]}],["$","span",null,{"className":"flex items-center gap-1","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 w-3.5 h-3.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","polyline","68esgv",{"points":"12 6 12 12 16 14"}],"$undefined"]}],6," min read"]}]]}],["$","span",null,{"className":"inline-flex items-center gap-0.5 text-xs font-medium text-muted-foreground group-hover:text-primary transition-colors duration-200","aria-hidden":"true","children":["Read",["$","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-chevron-right w-3 h-3 transition-transform duration-200 group-hover:translate-x-0.5","children":["$L29","$undefined"]}]]}]]}]]}]]}]}]}] 23:["$","$L1c","niya-saas-starter-template",{"delay":0.1,"direction":"up","className":"h-full","children":["$","$L1d",null,{"href":"/blogs/niya-saas-starter-template","className":"group relative flex flex-col bg-background border border-border rounded-lg overflow-hidden h-full transition-all duration-300 hover:shadow-lg hover:border-primary/40 hover:-translate-y-0.5","children":["$","article",null,{"className":"flex flex-col h-full","children":[["$","div",null,{"className":"relative w-full h-[180px] flex-shrink-0 overflow-hidden bg-muted","children":[["$","$L1e",null,{"src":"/projects/niya/logo.png","alt":"I Built a Free SaaS Starter Template — Here's Everything Inside","fill":true,"className":"object-cover transition-transform duration-500 group-hover:scale-105"}],["$","div",null,{"className":"absolute inset-0 bg-gradient-to-t from-background/60 to-transparent"}]]}],["$","div",null,{"className":"p-5 flex flex-col flex-grow gap-3","children":[["$","div",null,{"className":"flex flex-wrap gap-1.5","aria-label":"Tags","children":[[["$","span","Next.js",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"Next.js"}],["$","span","SaaS",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"SaaS"}],["$","span","Supabase",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"Supabase"}]],["$","span",null,{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-muted text-muted-foreground","children":["+",2]}]]}],["$","h3",null,{"className":"text-lg font-bold text-foreground leading-snug line-clamp-2 group-hover:text-primary transition-colors duration-200","children":"I Built a Free SaaS Starter Template — Here's Everything Inside"}],["$","p",null,{"className":"text-sm text-muted-foreground line-clamp-3 flex-grow leading-relaxed","children":"Niya SaaS Template is a production-ready, open-source Next.js 15 starter kit with Supabase auth, Zustand, React Query, Magic UI animations, and clean architecture. Built for developers and AI startups who want to ship fast."}],["$","div",null,{"className":"flex items-center justify-between pt-2 border-t border-border mt-auto","children":[["$","div",null,{"className":"flex items-center gap-3 text-xs text-muted-foreground","children":[["$","time",null,{"dateTime":"2025-02-20T00:00:00.000Z","className":"flex items-center gap-1","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-calendar w-3.5 h-3.5","children":[["$","path","1cmpym",{"d":"M8 2v4"}],["$","path","4m81vk",{"d":"M16 2v4"}],["$","rect","1hopcy",{"width":"18","height":"18","x":"3","y":"4","rx":"2"}],["$","path","8toen8",{"d":"M3 10h18"}],"$undefined"]}],"February 20, 2025"]}],["$","span",null,{"className":"flex items-center gap-1","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 w-3.5 h-3.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","polyline","68esgv",{"points":"12 6 12 12 16 14"}],"$undefined"]}],8," min read"]}]]}],["$","span",null,{"className":"inline-flex items-center gap-0.5 text-xs font-medium text-muted-foreground group-hover:text-primary transition-colors duration-200","aria-hidden":"true","children":["Read",["$","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-chevron-right w-3 h-3 transition-transform duration-200 group-hover:translate-x-0.5","children":["$L2a","$undefined"]}]]}]]}]]}]]}]}]}] 24:["$","$L1c","building-production-ai-chatbot-convot",{"delay":0.15000000000000002,"direction":"up","className":"h-full","children":["$","$L1d",null,{"href":"/blogs/building-production-ai-chatbot-convot","className":"group relative flex flex-col bg-background border border-border rounded-lg overflow-hidden h-full transition-all duration-300 hover:shadow-lg hover:border-primary/40 hover:-translate-y-0.5","children":["$","article",null,{"className":"flex flex-col h-full","children":[["$","div",null,{"className":"relative w-full h-[180px] flex-shrink-0 overflow-hidden bg-muted","children":[["$","$L1e",null,{"src":"/projects/convot/logo.png","alt":"Building a Production-Ready AI Chatbot Platform: Lessons from Convot","fill":true,"className":"object-cover transition-transform duration-500 group-hover:scale-105"}],["$","div",null,{"className":"absolute inset-0 bg-gradient-to-t from-background/60 to-transparent"}]]}],["$","div",null,{"className":"p-5 flex flex-col flex-grow gap-3","children":[["$","div",null,{"className":"flex flex-wrap gap-1.5","aria-label":"Tags","children":[[["$","span","AI",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"AI"}],["$","span","LLM",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"LLM"}],["$","span","RAG",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"RAG"}]],["$","span",null,{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-muted text-muted-foreground","children":["+",3]}]]}],["$","h3",null,{"className":"text-lg font-bold text-foreground leading-snug line-clamp-2 group-hover:text-primary transition-colors duration-200","children":"Building a Production-Ready AI Chatbot Platform: Lessons from Convot"}],["$","p",null,{"className":"text-sm text-muted-foreground line-clamp-3 flex-grow leading-relaxed","children":"Deep-dive into the architecture decisions, ingestion pipelines, and hard-won lessons from building Convot — an embeddable AI chatbot that retrieves answers from your own knowledge base."}],["$","div",null,{"className":"flex items-center justify-between pt-2 border-t border-border mt-auto","children":[["$","div",null,{"className":"flex items-center gap-3 text-xs text-muted-foreground","children":[["$","time",null,{"dateTime":"2025-02-15T00:00:00.000Z","className":"flex items-center gap-1","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-calendar w-3.5 h-3.5","children":[["$","path","1cmpym",{"d":"M8 2v4"}],["$","path","4m81vk",{"d":"M16 2v4"}],["$","rect","1hopcy",{"width":"18","height":"18","x":"3","y":"4","rx":"2"}],["$","path","8toen8",{"d":"M3 10h18"}],"$undefined"]}],"February 15, 2025"]}],"$undefined"]}],["$","span",null,{"className":"inline-flex items-center gap-0.5 text-xs font-medium text-muted-foreground group-hover:text-primary transition-colors duration-200","aria-hidden":"true","children":["Read",["$","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-chevron-right w-3 h-3 transition-transform duration-200 group-hover:translate-x-0.5","children":[["$","path","mthhwq",{"d":"m9 18 6-6-6-6"}],"$undefined"]}]]}]]}]]}]]}]}]}] 25:["$","$L1c","aeo-vs-seo-chatgpt-ranking",{"delay":0.2,"direction":"up","className":"h-full","children":["$","$L1d",null,{"href":"/blogs/aeo-vs-seo-chatgpt-ranking","className":"group relative flex flex-col bg-background border border-border rounded-lg overflow-hidden h-full transition-all duration-300 hover:shadow-lg hover:border-primary/40 hover:-translate-y-0.5","children":["$","article",null,{"className":"flex flex-col h-full","children":[["$","div",null,{"className":"relative w-full h-[180px] flex-shrink-0 overflow-hidden bg-muted","children":[["$","$L1e",null,{"src":"/projects/portfolio/logo.png","alt":"AEO vs SEO: How I Ranked #1 on ChatGPT for a Next.js Template","fill":true,"className":"object-cover transition-transform duration-500 group-hover:scale-105"}],["$","div",null,{"className":"absolute inset-0 bg-gradient-to-t from-background/60 to-transparent"}]]}],["$","div",null,{"className":"p-5 flex flex-col flex-grow gap-3","children":[["$","div",null,{"className":"flex flex-wrap gap-1.5","aria-label":"Tags","children":[[["$","span","SEO",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"SEO"}],["$","span","AEO",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"AEO"}],["$","span","Next.js",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"Next.js"}]],["$","span",null,{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-muted text-muted-foreground","children":["+",2]}]]}],["$","h3",null,{"className":"text-lg font-bold text-foreground leading-snug line-clamp-2 group-hover:text-primary transition-colors duration-200","children":"AEO vs SEO: How I Ranked #1 on ChatGPT for a Next.js Template"}],["$","p",null,{"className":"text-sm text-muted-foreground line-clamp-3 flex-grow leading-relaxed","children":"Answer Engine Optimization (AEO) is the new frontier. Here's the exact strategy I used to get my open-source Next.js portfolio template to rank #1 on ChatGPT search — and what it means for developers building in public."}],["$","div",null,{"className":"flex items-center justify-between pt-2 border-t border-border mt-auto","children":[["$","div",null,{"className":"flex items-center gap-3 text-xs text-muted-foreground","children":[["$","time",null,{"dateTime":"2024-11-20T00:00:00.000Z","className":"flex items-center gap-1","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-calendar w-3.5 h-3.5","children":[["$","path","1cmpym",{"d":"M8 2v4"}],["$","path","4m81vk",{"d":"M16 2v4"}],["$","rect","1hopcy",{"width":"18","height":"18","x":"3","y":"4","rx":"2"}],["$","path","8toen8",{"d":"M3 10h18"}],"$undefined"]}],"November 20, 2024"]}],"$undefined"]}],["$","span",null,{"className":"inline-flex items-center gap-0.5 text-xs font-medium text-muted-foreground group-hover:text-primary transition-colors duration-200","aria-hidden":"true","children":["Read",["$","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-chevron-right w-3 h-3 transition-transform duration-200 group-hover:translate-x-0.5","children":[["$","path","mthhwq",{"d":"m9 18 6-6-6-6"}],"$undefined"]}]]}]]}]]}]]}]}]}] 26:["$","$L1c","3d-card-threejs-blender",{"delay":0.25,"direction":"up","className":"h-full","children":["$","$L1d",null,{"href":"/blogs/3d-card-threejs-blender","className":"group relative flex flex-col bg-background border border-border rounded-lg overflow-hidden h-full transition-all duration-300 hover:shadow-lg hover:border-primary/40 hover:-translate-y-0.5","children":["$","article",null,{"className":"flex flex-col h-full","children":[["$","div",null,{"className":"relative w-full h-[180px] flex-shrink-0 overflow-hidden bg-muted","children":[["$","$L1e",null,{"src":"/projects/card/card_2.webp","alt":"3D Card with Embedded Links Using Three.js and Blender","fill":true,"className":"object-cover transition-transform duration-500 group-hover:scale-105"}],["$","div",null,{"className":"absolute inset-0 bg-gradient-to-t from-background/60 to-transparent"}]]}],["$","div",null,{"className":"p-5 flex flex-col flex-grow gap-3","children":[["$","div",null,{"className":"flex flex-wrap gap-1.5","aria-label":"Tags","children":[[["$","span","Three.js",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"Three.js"}],["$","span","Blender",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"Blender"}],["$","span","3D",{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-primary/10 text-primary border border-primary/20","children":"3D"}]],["$","span",null,{"className":"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium bg-muted text-muted-foreground","children":["+",2]}]]}],["$","h3",null,{"className":"text-lg font-bold text-foreground leading-snug line-clamp-2 group-hover:text-primary transition-colors duration-200","children":"3D Card with Embedded Links Using Three.js and Blender"}],["$","p",null,{"className":"text-sm text-muted-foreground line-clamp-3 flex-grow leading-relaxed","children":"Ever thought your traditional business card could use a serious upgrade? Here's how I used Three.js and Blender to transform a plain business card into an interactive 3D masterpiece with embedded clickable links."}],["$","div",null,{"className":"flex items-center justify-between pt-2 border-t border-border mt-auto","children":[["$","div",null,{"className":"flex items-center gap-3 text-xs text-muted-foreground","children":[["$","time",null,{"dateTime":"2023-11-01T00:00:00.000Z","className":"flex items-center gap-1","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-calendar w-3.5 h-3.5","children":[["$","path","1cmpym",{"d":"M8 2v4"}],["$","path","4m81vk",{"d":"M16 2v4"}],["$","rect","1hopcy",{"width":"18","height":"18","x":"3","y":"4","rx":"2"}],["$","path","8toen8",{"d":"M3 10h18"}],"$undefined"]}],"November 1, 2023"]}],["$","span",null,{"className":"flex items-center gap-1","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 w-3.5 h-3.5","children":[["$","circle","1mglay",{"cx":"12","cy":"12","r":"10"}],["$","polyline","68esgv",{"points":"12 6 12 12 16 14"}],"$undefined"]}],7," min read"]}]]}],["$","span",null,{"className":"inline-flex items-center gap-0.5 text-xs font-medium text-muted-foreground group-hover:text-primary transition-colors duration-200","aria-hidden":"true","children":["Read",["$","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-chevron-right w-3 h-3 transition-transform duration-200 group-hover:translate-x-0.5","children":["$L2b","$undefined"]}]]}]]}]]}]]}]}]}] 29:["$","path","mthhwq",{"d":"m9 18 6-6-6-6"}] 2a:["$","path","mthhwq",{"d":"m9 18 6-6-6-6"}] 2b:["$","path","mthhwq",{"d":"m9 18 6-6-6-6"}] 17:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 2c:I[27201,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"IconMark"] 1a:[["$","title","0",{"children":"Blogs | Hussein Maghrabi - Senior PHP / Laravel Developer"}],["$","meta","1",{"name":"description","content":"Naman Barkiya's blog — thoughts on AI, software engineering, and building in public."}],["$","link","2",{"rel":"author","href":"https://h-maghrabi.tech/"}],["$","meta","3",{"name":"author","content":"Hussein Maghrabi"}],["$","link","4",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}],["$","meta","5",{"name":"keywords","content":"Hussein Maghrabi,Senior PHP Developer,Laravel Developer,Backend Engineer,MySQL,API Integrations,Scalable Systems,Software Architecture,Portfolio"}],["$","meta","6",{"name":"creator","content":"husseinmaghrabi"}],["$","meta","7",{"name":"robots","content":"index, follow"}],["$","meta","8",{"name":"googlebot","content":"index, follow, max-image-preview:large, max-snippet:-1"}],["$","link","9",{"rel":"canonical","href":"https://h-maghrabi.tech//blogs"}],["$","meta","10",{"property":"og:title","content":"Blogs | Hussein Maghrabi - Senior PHP / Laravel Developer"}],["$","meta","11",{"property":"og:description","content":"Naman Barkiya's blog — thoughts on AI, software engineering, and building in public."}],["$","meta","12",{"property":"og:url","content":"https://h-maghrabi.tech//blogs"}],["$","meta","13",{"property":"og:site_name","content":"Hussein Maghrabi - Senior PHP / Laravel Developer"}],["$","meta","14",{"property":"og:image","content":"https://h-maghrabi.tech/og-image.png"}],["$","meta","15",{"property":"og:image:width","content":"1200"}],["$","meta","16",{"property":"og:image:height","content":"630"}],["$","meta","17",{"property":"og:image:alt","content":"Hussein Maghrabi Blog"}],["$","meta","18",{"property":"og:type","content":"website"}],["$","meta","19",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","20",{"name":"twitter:creator","content":"@husseinmaghrabi"}],["$","meta","21",{"name":"twitter:title","content":"Blogs | Hussein Maghrabi - Senior PHP / Laravel Developer"}],["$","meta","22",{"name":"twitter:description","content":"Naman Barkiya's blog — thoughts on AI, software engineering, and building in public."}],["$","meta","23",{"name":"twitter:image","content":"https://h-maghrabi.tech/og-image.png"}],["$","link","24",{"rel":"shortcut icon","href":"/portfolio/logos/logo-3.png"}],["$","link","25",{"rel":"icon","href":"/portfolio/logos/logo-3.png"}],["$","link","26",{"rel":"apple-touch-icon","href":"/portfolio/logos/logo-3.png"}],["$","$L2c","27",{}]] 28:null