[{"data":1,"prerenderedAt":543},["ShallowReactive",2],{"docsNavigation":3,"contentNavigation":145,"$f33KesTH4sSy4U-Njo2WelY7ftWNegNpenIZRZJMuYNY":225,"\u002Fblog\u002Fdiy-vs-nuxt-starter-kit-cost":228,"\u002Fblog\u002Fdiy-vs-nuxt-starter-kit-cost-blog-surround":536},[4,32,44,52,60,67,75,83,90,97,104,112,119,127,139],{"title":5,"path":6,"stem":7,"children":8,"icon":31},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F01.getting-started\u002F1.index",[9,11,15,19,23,27],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F01.getting-started\u002F2.installation",{"title":16,"path":17,"stem":18},"Setup","\u002Fdocs\u002Fgetting-started\u002Fsetup","docs\u002F01.getting-started\u002F3.setup",{"title":20,"path":21,"stem":22},"Pull Updates","\u002Fdocs\u002Fgetting-started\u002Fpull-updates","docs\u002F01.getting-started\u002F4.pull-updates",{"title":24,"path":25,"stem":26},"Deployment","\u002Fdocs\u002Fgetting-started\u002Fdeployment","docs\u002F01.getting-started\u002F5.deployment",{"title":28,"path":29,"stem":30},"Going to production","\u002Fdocs\u002Fgetting-started\u002Fgoing-to-production","docs\u002F01.getting-started\u002F6.going-to-production","i-lucide-square-play",{"title":33,"path":34,"stem":35,"children":36,"icon":43},"Architecture","\u002Fdocs\u002Farchitecture","docs\u002F02.architecture\u002F1.index",[37,39],{"title":38,"path":34,"stem":35},"Tech Stack",{"title":40,"path":41,"stem":42},"Layers","\u002Fdocs\u002Farchitecture\u002Flayers","docs\u002F02.architecture\u002F2.layers","i-lucide-layers",{"title":45,"path":46,"stem":47,"children":48,"icon":51},"Database","\u002Fdocs\u002Fdatabase","docs\u002F03.database\u002F1.index",[49],{"title":50,"path":46,"stem":47},"PostgreSQL","i-lucide-database",{"title":53,"path":54,"stem":55,"children":56,"icon":59},"Emails","\u002Fdocs\u002Femails","docs\u002F04.emails\u002F1.index",[57],{"title":58,"path":54,"stem":55},"Overview","i-lucide-mail",{"title":61,"path":62,"stem":63,"children":64,"icon":66},"Authentication","\u002Fdocs\u002Fauthentication","docs\u002F05.authentication\u002F1.index",[65],{"title":58,"path":62,"stem":63},"i-lucide-lock-keyhole",{"title":68,"path":69,"stem":70,"children":71,"icon":74},"Payments","\u002Fdocs\u002Fpayments","docs\u002F06.payments\u002F1.index",[72],{"title":73,"path":69,"stem":70},"Polar","i-lucide-circle-dollar-sign",{"title":76,"path":77,"stem":78,"children":79,"icon":82},"Admin","\u002Fdocs\u002Fadmin","docs\u002F07.admin\u002F1.index",[80],{"title":81,"path":77,"stem":78},"Features","i-lucide-user-cog",{"title":84,"path":85,"stem":86,"children":87,"icon":89},"Images","\u002Fdocs\u002Fimages","docs\u002F08.images\u002F1.index",[88],{"title":58,"path":85,"stem":86},"i-lucide-image",{"title":91,"path":92,"stem":93,"children":94,"icon":96},"i18n","\u002Fdocs\u002Fi18n","docs\u002F09.i18n\u002F1.index",[95],{"title":58,"path":92,"stem":93},"i-lucide-languages",{"title":98,"path":99,"stem":100,"children":101,"icon":103},"SEO","\u002Fdocs\u002Fseo","docs\u002F10.seo\u002F1.index",[102],{"title":58,"path":99,"stem":100},"i-lucide-globe",{"title":105,"path":106,"stem":107,"children":108,"icon":111},"Analytics","\u002Fdocs\u002Fanalytics","docs\u002F11.analytics\u002F1.index",[109],{"title":110,"path":106,"stem":107},"Umami","i-lucide-chart-line",{"title":113,"path":114,"stem":115,"children":116,"icon":118},"Security","\u002Fdocs\u002Fsecurity","docs\u002F12.security\u002F1.index",[117],{"title":58,"path":114,"stem":115},"i-lucide-file-lock",{"title":120,"path":121,"stem":122,"children":123,"icon":126},"Testing","\u002Fdocs\u002Ftesting","docs\u002F13.testing\u002F1.index",[124],{"title":125,"path":121,"stem":122},"E2E Testing","i-lucide-test-tube",{"title":128,"path":129,"stem":130,"children":131,"icon":138},"Support","\u002Fdocs\u002Fsupport","docs\u002F14.support\u002F1.index",[132,134],{"title":133,"path":129,"stem":130},"Help",{"title":135,"path":136,"stem":137},"Troubleshooting","\u002Fdocs\u002Fsupport\u002Ftroubleshooting","docs\u002F14.support\u002F2.troubleshooting","i-lucide-message-circle-question",{"title":140,"path":141,"stem":142,"children":143},"LLMs","\u002Fdocs\u002Fllms","docs\u002F15.llms\u002F1.index",[144],{"title":140,"path":141,"stem":142},[146,168],{"title":147,"path":148,"stem":149,"children":150,"page":167},"Blog","\u002Fblog","blog",[151,155,159,163],{"title":152,"path":153,"stem":154},"How to Build a SaaS with Nuxt 4, better-auth, and Polar","\u002Fblog\u002Fbuild-saas-with-nuxt-4-better-auth-polar","blog\u002Fbuild-saas-with-nuxt-4-better-auth-polar",{"title":156,"path":157,"stem":158},"DIY vs Nuxt Starter Kit — The Real Cost of Auth and Payments","\u002Fblog\u002Fdiy-vs-nuxt-starter-kit-cost","blog\u002Fdiy-vs-nuxt-starter-kit-cost",{"title":160,"path":161,"stem":162},"Nuxt Boilerplate for Solo Founders — Ship Without Rebuilding Foundations","\u002Fblog\u002Fnuxt-boilerplate-for-solo-founders","blog\u002Fnuxt-boilerplate-for-solo-founders",{"title":164,"path":165,"stem":166},"Best Nuxt SaaS Boilerplate in 2026 — What Actually Matters","\u002Fblog\u002Fnuxt-saas-boilerplate-comparison","blog\u002Fnuxt-saas-boilerplate-comparison",false,{"title":169,"path":170,"stem":171,"children":172,"page":167},"Documentation","\u002Fdocs","docs",[173,181,185,188,191,194,197,200,203,206,209,212,215,218,222],{"title":5,"path":6,"stem":7,"children":174,"icon":31},[175,176,177,178,179,180],{"title":10,"path":6,"stem":7},{"title":12,"path":13,"stem":14},{"title":16,"path":17,"stem":18},{"title":20,"path":21,"stem":22},{"title":24,"path":25,"stem":26},{"title":28,"path":29,"stem":30},{"title":33,"path":34,"stem":35,"children":182,"icon":43},[183,184],{"title":38,"path":34,"stem":35},{"title":40,"path":41,"stem":42},{"title":45,"path":46,"stem":47,"children":186,"icon":51},[187],{"title":50,"path":46,"stem":47},{"title":53,"path":54,"stem":55,"children":189,"icon":59},[190],{"title":58,"path":54,"stem":55},{"title":61,"path":62,"stem":63,"children":192,"icon":66},[193],{"title":58,"path":62,"stem":63},{"title":68,"path":69,"stem":70,"children":195,"icon":74},[196],{"title":73,"path":69,"stem":70},{"title":76,"path":77,"stem":78,"children":198,"icon":82},[199],{"title":81,"path":77,"stem":78},{"title":84,"path":85,"stem":86,"children":201,"icon":89},[202],{"title":58,"path":85,"stem":86},{"title":91,"path":92,"stem":93,"children":204,"icon":96},[205],{"title":58,"path":92,"stem":93},{"title":98,"path":99,"stem":100,"children":207,"icon":103},[208],{"title":58,"path":99,"stem":100},{"title":105,"path":106,"stem":107,"children":210,"icon":111},[211],{"title":110,"path":106,"stem":107},{"title":113,"path":114,"stem":115,"children":213,"icon":118},[214],{"title":58,"path":114,"stem":115},{"title":120,"path":121,"stem":122,"children":216,"icon":126},[217],{"title":125,"path":121,"stem":122},{"title":128,"path":129,"stem":130,"children":219,"icon":138},[220,221],{"title":133,"path":129,"stem":130},{"title":135,"path":136,"stem":137},{"title":140,"path":141,"stem":142,"children":223},[224],{"title":140,"path":141,"stem":142},{"amount":226,"formatted":227},99,"$99",{"id":229,"title":156,"body":230,"date":523,"description":524,"draft":167,"extension":525,"image":526,"meta":527,"navigation":528,"path":157,"seo":529,"sitemap":530,"stem":158,"tags":531,"__hash__":535},"blog\u002Fblog\u002Fdiy-vs-nuxt-starter-kit-cost.md",{"type":231,"value":232,"toc":513},"minimark",[233,237,245,250,253,319,327,334,338,341,363,366,370,373,394,397,401,404,418,422,499,503,506],[234,235,236],"p",{},"“I can build that myself over a weekend” is the most expensive sentence in indie SaaS.",[234,238,239,240,244],{},"You ",[241,242,243],"em",{},"can"," build auth and payments yourself. The question is what it costs in calendar time — and what you postpone while you do it.",[246,247,249],"h2",{"id":248},"what-diy-foundation-usually-includes","What “DIY foundation” usually includes",[234,251,252],{},"For a Nuxt SaaS MVP that you would trust with real customers:",[254,255,256,269],"table",{},[257,258,259],"thead",{},[260,261,262,266],"tr",{},[263,264,265],"th",{},"Workstream",[263,267,268],{},"Realistic solo estimate",[270,271,272,281,289,297,305,312],"tbody",{},[260,273,274,278],{},[275,276,277],"td",{},"Auth (email, social, sessions, resets)",[275,279,280],{},"20–40 hours",[260,282,283,286],{},[275,284,285],{},"Payments + webhooks + entitlements",[275,287,288],{},"15–30 hours",[260,290,291,294],{},[275,292,293],{},"Admin basics (users, bans, impersonation)",[275,295,296],{},"10–20 hours",[260,298,299,302],{},[275,300,301],{},"Security headers, rate limits, hardening",[275,303,304],{},"8–15 hours",[260,306,307,310],{},[275,308,309],{},"Monorepo\u002Flayer structure + DX polish",[275,311,296],{},[260,313,314,317],{},[275,315,316],{},"Deploy, env, monitoring, edge cases",[275,318,296],{},[234,320,321,322,326],{},"That is roughly ",[323,324,325],"strong",{},"75–145 hours"," before your actual product logic.",[234,328,329,330,333],{},"At a conservative freelance rate of $100\u002Fhour, that is ",[323,331,332],{},"$7.5k–$14.5k"," of your time — not counting opportunity cost.",[246,335,337],{"id":336},"where-diy-estimates-go-wrong","Where DIY estimates go wrong",[234,339,340],{},"People underestimate:",[342,343,344,348,351,354,357,360],"ul",{},[345,346,347],"li",{},"Webhook retries and duplicate events",[345,349,350],{},"Password reset abuse",[345,352,353],{},"Session invalidation after password change",[345,355,356],{},"Tax\u002FMoR complexity for global sales",[345,358,359],{},"“Temporary” folder structure that becomes permanent debt",[345,361,362],{},"Upgrade work when Nuxt\u002Fauth\u002Fpayment libs move",[234,364,365],{},"AI helps generate code. It does not remove the need for correct system design.",[246,367,369],{"id":368},"when-diy-is-the-right-call","When DIY is the right call",[234,371,372],{},"Build from scratch if:",[342,374,375,382,388,391],{},[345,376,377,378,381],{},"Learning the full stack ",[241,379,380],{},"is"," the goal",[345,383,384,385,387],{},"Your product’s core IP ",[241,386,380],{}," the billing\u002Fauth model",[345,389,390],{},"You need exotic constraints a kit cannot express",[345,392,393],{},"You enjoy infrastructure more than product",[234,395,396],{},"Those are valid reasons. They are not the default for a solo founder validating a market.",[246,398,400],{"id":399},"when-a-starter-kit-is-the-right-call","When a starter kit is the right call",[234,402,403],{},"Buy a foundation if:",[342,405,406,409,412,415],{},[345,407,408],{},"You have shipped (or abandoned) the same auth\u002Fpayment setup before",[345,410,411],{},"You want to validate a product idea in weeks, not quarters",[345,413,414],{},"You value an opinionated architecture you can still own and modify",[345,416,417],{},"You would rather spend evenings on features users pay for",[246,419,421],{"id":420},"honest-comparison","Honest comparison",[254,423,424,436],{},[257,425,426],{},[260,427,428,430,433],{},[263,429],{},[263,431,432],{},"DIY",[263,434,435],{},"Nuxt Starter Kit",[270,437,438,455,466,477,488],{},[260,439,440,443,446],{},[275,441,442],{},"Upfront cash",[275,444,445],{},"$0",[275,447,448,449,454],{},"One-time license (",[450,451,453],"a",{"href":452},"\u002Fpricing","pricing",")",[260,456,457,460,463],{},[275,458,459],{},"Time to secure baseline",[275,461,462],{},"Weeks",[275,464,465],{},"Hours to configure",[260,467,468,471,474],{},[275,469,470],{},"Ownership",[275,472,473],{},"Full",[275,475,476],{},"Full (you get the code)",[260,478,479,482,485],{},[275,480,481],{},"Risk",[275,483,484],{},"Unknown unknowns",[275,486,487],{},"Known opinionated defaults",[260,489,490,493,496],{},[275,491,492],{},"Best for",[275,494,495],{},"Learning \u002F unique constraints",[275,497,498],{},"Shipping product faster",[246,500,502],{"id":501},"the-decision-in-one-sentence","The decision in one sentence",[234,504,505],{},"If foundation work delays your first paying user, DIY is probably the expensive option — even when the invoice is $0.",[234,507,508,509,512],{},"If you want the Nuxt 4 + better-auth + Polar path without rebuilding it, start with ",[450,510,435],{"href":511},"\u002F"," and put your hours into the product only you can build.",{"title":514,"searchDepth":515,"depth":515,"links":516},"",2,[517,518,519,520,521,522],{"id":248,"depth":515,"text":249},{"id":336,"depth":515,"text":337},{"id":368,"depth":515,"text":369},{"id":399,"depth":515,"text":400},{"id":420,"depth":515,"text":421},{"id":501,"depth":515,"text":502},"2026-08-06","A realistic breakdown of what it costs (in hours) to build Nuxt SaaS foundations yourself versus starting from a production boilerplate.","md",null,{},true,{"title":156,"description":524},{"loc":157},[532,533,534],"Indie Hackers","Pricing","Productivity","ZvMEiWvLdA_87W_Lu-2rKkPsop632It7v8drILrkQMg",[537,540],{"title":152,"path":153,"stem":154,"description":538,"date":539,"children":-1},"A practical path to shipping a Nuxt SaaS — authentication with better-auth, payments with Polar, and the foundation pieces AI will not get right for you.","2026-08-07",{"title":160,"path":161,"stem":162,"description":541,"date":542,"children":-1},"Why solo founders should treat a Nuxt boilerplate as leverage, not a shortcut — and what to look for when AI can generate features but not a durable product foundation.","2026-08-05",1786184750446]