[{"data":1,"prerenderedAt":1450},["ShallowReactive",2],{"blog-shipfast-boilerplate-vs-boiledplate-comparison":3,"related-shipfast-boilerplate-vs-boiledplate-comparison":297},{"id":4,"title":5,"author":6,"body":7,"category":6,"date":283,"description":284,"draft":285,"extension":286,"image":6,"meta":287,"navigation":288,"path":289,"seo":290,"stem":291,"tags":292,"__hash__":296},"blog\u002Fblog\u002Fshipfast-boilerplate-vs-boiledplate-comparison.md","ShipFast Boilerplate vs BoiledPlate: Full Comparison",null,{"type":8,"value":9,"toc":265},"minimark",[10,14,25,30,33,42,46,49,63,66,70,73,82,97,101,108,117,121,124,137,141,144,153,157,172,175,179,182,186,195,198,202,219,222,226,229,233,249,252,256],[11,12,13],"p",{},"If you've shopped for a SaaS starter kit, you've met ShipFast. It's the reference point in the category: a NextJS boilerplate with auth, payments, a database, and UI components, priced at $199. It does what it says. But the question worth asking before you buy any boilerplate isn't \"does it include a login page?\" — every one of them does. The question is what happens after you clone it, when you're alone in a room with a box of parts and a README.",[11,15,16,17,24],{},"This is an honest comparison between ShipFast and ",[18,19,23],"a",{"href":20,"rel":21},"https:\u002F\u002Fboiledplate.ai",[22],"nofollow","BoiledPlate",", the AI-native Nuxt + Supabase alternative. Both ship the same stack of features. They diverge on the part that actually eats your launch.",[26,27,29],"h2",{"id":28},"why-stack-choice-isnt-your-bottleneck","Why Stack Choice Isn't Your Bottleneck",[11,31,32],{},"Ask ten founders how to ship fast and you get ten stack arguments — Next vs Nuxt, Postgres vs a hosted DB, Stripe vs Paddle. Pick whatever you already know and the debate is over in an afternoon. The framework is not what slows you down.",[11,34,35,36,41],{},"What slows you down is the plumbing between the pieces: the Stripe webhook that has to agree with your database, the row-level security policy you forgot until a user saw someone else's data, the five places a new locale string has to land before the build stops complaining. None of it is clever. It's just endless. We wrote a whole piece on why ",[18,37,40],{"href":38,"rel":39},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fhow-to-ship-saas-fast",[22],"the stack is easy and the plumbing is the project",", and it's the single idea that separates these two products.",[26,43,45],{"id":44},"the-setup-story-manual-wiring-vs-agent-interview","The Setup Story: Manual Wiring vs. Agent Interview",[11,47,48],{},"Here's the core difference. ShipFast follows the classic model: clone the repo, read the docs, wire the services yourself. You create your Stripe products, copy the keys, set up your webhook endpoint, configure your database, and connect Google sign-in by hand. The code is good; the assembly is on you.",[11,50,51,52,56,57,62],{},"BoiledPlate's setup runs itself. Your coding agent interviews you — name, languages, theme, billing model — then reshapes the codebase to your answers with ",[53,54,55],"strong",{},"deterministic patches"," and provisions the services: Stripe products and webhooks, a Supabase database with RLS, Google sign-in. That's not a marketing flourish. As we argued in ",[18,58,61],{"href":59,"rel":60},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fnuxt-saas-boilerplate-for-ai-agents",[22],"every boilerplate ships the stack — that was never the hard part",", the slow part with coding agents moved somewhere else, and the win is measured in weeks, not hours.",[11,64,65],{},"\"Agent-driven\" doesn't mean magic. It means the repetitive, error-prone wiring is scripted and repeatable, with a human confirming each decision. You still build your product. You just skip the parts nobody enjoys.",[26,67,69],{"id":68},"billing-that-survives-reality","Billing That Survives Reality",[11,71,72],{},"Both products give you Stripe subscriptions. The difference shows up in the edge cases.",[11,74,75,76,81],{},"A client-side success page is a lie. The user's browser can close, refresh, or lose connection between paying and landing back on your site — so ",[18,77,80],{"href":78,"rel":79},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fstripe-webhooks-source-of-truth",[22],"your checkout success page should never touch your billing state",". The Stripe webhook is the source of truth. That means you need signature verification, idempotent processing (Stripe retries; duplicate delivery is normal), and a plan for partially refunded subscriptions.",[11,83,84,85,90,91,96],{},"BoiledPlate ships multi-plan subscriptions with signature-verified, idempotent webhooks out of the box, and we've documented the messy specifics — including ",[18,86,89],{"href":87,"rel":88},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fstripe-checkout-consent-collection-german-withdrawal-waiver",[22],"encoding a German withdrawal waiver into the pay button"," for EU consent law, and ",[18,92,95],{"href":93,"rel":94},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fthe-github-invite-is-the-product-building-a-stripe-webhook-where-delivery-throws",[22],"a webhook where some failures must throw and some never do",". These aren't hypotheticals. They're the difference between a demo and a product that survives contact with real customers.",[26,98,100],{"id":99},"database-security-row-level-security-matters","Database Security: Row-Level Security Matters",[11,102,103,104,107],{},"ShipFast leans on its own database setup with security largely handled in the application layer. BoiledPlate uses Supabase ",[53,105,106],{},"row-level security",", which enforces access rules at query time in the database itself — not in your API handlers, where one forgotten check leaks data across tenants.",[11,109,110,111,116],{},"For multi-tenant SaaS this matters enormously. RLS means a bug in your application code can't hand user A the rows belonging to user B, because the database refuses to return them. Supabase's own ",[18,112,115],{"href":113,"rel":114},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fdatabase\u002Fpostgres\u002Frow-level-security",[22],"RLS documentation"," is worth reading if you're weighing this trade-off.",[26,118,120],{"id":119},"agent-consistency-the-agentsmd-contract","Agent Consistency: The AGENTS.md Contract",[11,122,123],{},"This is BoiledPlate's genuinely unique angle, and ShipFast doesn't address it at all.",[11,125,126,127,130,131,136],{},"Coding agents drift. Ask one to add a feature and it may invent a new way to access data, handle secrets, or name things — subtly inconsistent with the last thing it wrote. BoiledPlate ships an ",[53,128,129],{},"AGENTS.md"," contract: one documented way to do data access and secret handling, so agent output stays consistent across sessions. We made the full case in ",[18,132,135],{"href":133,"rel":134},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fconventions-for-ai-coding-agents",[22],"write your conventions for the agent, not the next hire",". If you build with Claude or similar, this is the feature that keeps your codebase from turning into archaeology.",[26,138,140],{"id":139},"authentication-and-internationalization","Authentication and Internationalization",[11,142,143],{},"Both boilerplates handle Google sign-in. BoiledPlate pairs it with Supabase auth backed by RLS, so authentication and authorization share one enforcement point rather than a scattered JWT strategy layered on top.",[11,145,146,147,152],{},"On languages, ShipFast's i18n story is minimal. BoiledPlate ships four languages from day one, with locale setup handled by the same deterministic patches — because adding a language later means touching every string in the app, and that's exactly the kind of endless, slightly-different work described in ",[18,148,151],{"href":149,"rel":150},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fnuxt-supabase-stripe-saas-boilerplate",[22],"what it actually takes to wire up a Nuxt, Supabase and Stripe SaaS",".",[26,154,156],{"id":155},"the-blog-seo-and-transactional-email","The Blog, SEO, and Transactional Email",[11,158,159,160,165,166,171],{},"Every SaaS needs SEO momentum from day one, which is why both include a blog. BoiledPlate's is prerendered Markdown with JSON-LD schema, canonical URLs, and og:url tags. That corner has real pitfalls — we shipped a bug where ",[18,161,164],{"href":162,"rel":163},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Four-blog-canonically-pointed-at-localhost",[22],"our blog told Google its canonical URL was localhost:3000",", and another where ",[18,167,170],{"href":168,"rel":169},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fthe-page-that-returned-200-on-the-server-and-500-in-the-browser-a-json-ld-tempor",[22],"a JSON-LD source-order issue returned 200 from curl but 500 in Chrome",". Prevention is baked in because we hit them first.",[11,173,174],{},"For email, BoiledPlate integrates Resend for billing confirmations, refunds, and multi-language templates. Sending once is easy; sending exactly once, with SPF, DKIM, and unsubscribe handling correct, is the annoying part a starter should absorb.",[26,176,178],{"id":177},"updates-and-maintenance-the-merge-hell-problem","Updates and Maintenance: The Merge Hell Problem",[11,180,181],{},"With most boilerplates, ShipFast included, you own all your customizations and every upstream update is yours to integrate — which usually means rebase conflicts you postpone forever. BoiledPlate writes semantic, agent-readable release notes and offers opt-in updates to customized code, so your agent can apply an improvement without stomping your changes. Lifetime updates are part of the Pro tier.",[26,183,185],{"id":184},"deployment-types-and-theming","Deployment, Types, and Theming",[11,187,188,189,194],{},"BoiledPlate deploys in minutes to Vercel, Netlify, or self-hosted, with environment variables and secrets documented. It's TypeScript strict mode end to end — server, client, and database layer — which is how you catch billing bugs at compile time instead of in a customer's inbox. (One caveat we hit: ",[18,190,193],{"href":191,"rel":192},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fvercel-web-analytics-nuxt-4-analytics-package-breaks-typecheck",[22],"Vercel's analytics package can break Nuxt typecheck",", documented so you don't lose an afternoon to it.)",[11,196,197],{},"Theming is handled in the setup interview: pick a preset — Warm Studio, Clean SaaS, Midnight Pro, Sharp Enterprise — or describe your own and the agent maps it onto the codebase. The dashboard previews on the homepage are the real thing every buyer gets.",[26,199,201],{"id":200},"pricing-one-time-vs-recurring","Pricing: One-Time vs. Recurring",[11,203,204,205,208,209,214,215,218],{},"ShipFast is $199 per license. BoiledPlate comes in two tiers: ",[53,206,207],{},"Lite"," is free and MIT-licensed — clone it and wire the services manually, exactly the ShipFast experience minus the price — documented in our post on the ",[18,210,213],{"href":211,"rel":212},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Ffree-nuxt-supabase-saas-boilerplate",[22],"free Nuxt + Supabase boilerplate",". ",[53,216,217],{},"Pro"," is €159 one-time with lifetime updates and instant delivery via GitHub invite.",[11,220,221],{},"The honest total-cost comparison isn't the sticker price. It's the sticker price plus the weeks of wiring. If you value an afternoon over a fortnight, the setup process is where the money is.",[26,223,225],{"id":224},"when-a-boilerplate-isnt-enough","When a Boilerplate Isn't Enough",[11,227,228],{},"Be clear-eyed: any boilerplate solves maybe 60–70% of setup. Your actual product logic — the thing that makes you money — is still yours to write. What both products give you is a clean, owned starting point. BoiledPlate's agent-readable conventions arguably reduce lock-in, because the code documents its own contract.",[26,230,232],{"id":231},"decision-framework-shipfast-or-boiledplate","Decision Framework: ShipFast or BoiledPlate?",[234,235,236,243],"ul",{},[237,238,239,242],"li",{},[53,240,241],{},"Choose ShipFast if:"," you're committed to NextJS, prefer wiring services by hand, and don't build with coding agents.",[237,244,245,248],{},[53,246,247],{},"Choose BoiledPlate if:"," you're on (or happy to be on) the Nuxt + Supabase + Stripe stack, you build with agents, you want RLS enforced at the database, and lifetime updates matter.",[11,250,251],{},"The framework is not the differentiator. The setup process and the maintenance cost are.",[26,253,255],{"id":254},"the-bigger-picture","The Bigger Picture",[11,257,258,259,264],{},"Agent-native contracts like AGENTS.md are becoming table stakes. As more code gets written with coding assistants, the boilerplates that win won't just be readable by humans — they'll be written for agent consumption, with one documented way to do every dangerous thing. That's the bet BoiledPlate makes, and it's worth understanding before you commit €159 or $199 to a codebase you'll live in for the next year. Read ",[18,260,263],{"href":261,"rel":262},"https:\u002F\u002Fboiledplate.ai\u002Fblog",[22],"the full blog"," if you want the edge cases in detail before you decide.",{"title":266,"searchDepth":267,"depth":267,"links":268},"",3,[269,271,272,273,274,275,276,277,278,279,280,281,282],{"id":28,"depth":270,"text":29},2,{"id":44,"depth":270,"text":45},{"id":68,"depth":270,"text":69},{"id":99,"depth":270,"text":100},{"id":119,"depth":270,"text":120},{"id":139,"depth":270,"text":140},{"id":155,"depth":270,"text":156},{"id":177,"depth":270,"text":178},{"id":184,"depth":270,"text":185},{"id":200,"depth":270,"text":201},{"id":224,"depth":270,"text":225},{"id":231,"depth":270,"text":232},{"id":254,"depth":270,"text":255},"2026-07-30","Compare ShipFast and BoiledPlate SaaS boilerplates. Learn which NextJS or Nuxt starter kit is best for your launch.",false,"md",{},true,"\u002Fblog\u002Fshipfast-boilerplate-vs-boiledplate-comparison",{"title":5,"description":284},"blog\u002Fshipfast-boilerplate-vs-boiledplate-comparison",[293,294,23,295],"SaaS boilerplate","ShipFast","startup tools","8oQ72bY_8m5LCPzvTkG2lpmm-Ev85wdQnPhYSmrbnkQ",[298,673,1174],{"id":299,"title":300,"author":6,"body":301,"category":6,"date":661,"description":662,"draft":285,"extension":286,"image":6,"meta":663,"navigation":288,"path":664,"seo":665,"stem":666,"tags":667,"__hash__":672},"blog\u002Fblog\u002Fshipfast-docs-beyond-framework.md","ShipFast Docs: Beyond the Framework Stack",{"type":8,"value":302,"toc":630},[303,306,309,313,318,321,325,333,337,340,344,350,354,358,361,365,368,372,375,379,382,386,394,398,411,419,423,427,434,438,441,445,453,457,464,468,479,483,495,498,502,515,519,522,526,536,542,545,549,552,555,579,586,590,623],[11,304,305],{},"If you searched for \"ShipFast docs,\" you were probably trying to answer one question: can a boilerplate actually get me from idea to revenue faster? ShipFast built its reputation on that promise for Next.js — \"launch in days, not weeks.\" It's a good product. But the promise hides an assumption worth challenging: that the framework and UI scaffolding are what stand between you and a shipped product.",[11,307,308],{},"They aren't. The stack is the easy part. The plumbing between the pieces is the project. This article walks through what a SaaS starter actually needs to do — and where an AI-native approach changes the math.",[26,310,312],{"id":311},"the-real-cost-of-saas-setup-why-stack-choice-isnt-your-bottleneck","The Real Cost of SaaS Setup: Why Stack Choice Isn't Your Bottleneck",[314,315,317],"h3",{"id":316},"the-myth-pick-the-right-framework-and-youre-done","The myth: \"pick the right framework and you're done\"",[11,319,320],{},"Ask ten founders how to ship fast and you get ten stack arguments — Next vs Nuxt, Postgres vs a hosted DB, Stripe vs Paddle. Pick whatever you already know and the debate is over in an afternoon. Framework choice is a days-long decision at most.",[314,322,324],{"id":323},"what-actually-kills-shipping-velocity","What actually kills shipping velocity",[11,326,327,328,332],{},"Authentication with real session handling. Billing webhooks that survive retries. Database schemas with access control. Email that doesn't land in spam. Multi-currency display. Refund flows. This is the ",[18,329,331],{"href":38,"rel":330},[22],"plumbing that eats your launch",", and it doesn't show up in a demo. It shows up three weeks in, when a webhook fires twice and you've charged someone twice.",[314,334,336],{"id":335},"why-nextjs-boilerplates-miss-the-actual-problem","Why Next.js boilerplates miss the actual problem",[11,338,339],{},"Most boilerplates, ShipFast included, give you a landing page, auth scaffolding, and UI components. That's genuinely useful. But the hard integration — making Stripe the source of truth, wiring idempotent webhooks, enforcing row-level security — is often left as an exercise for the reader. You still write the part that's actually hard.",[314,341,343],{"id":342},"solving-for-the-real-constraint","Solving for the real constraint",[11,345,346,349],{},[18,347,23],{"href":20,"rel":348},[22]," takes a different angle: your coding agent doesn't just write code, it provisions the services. Stripe products and webhooks, a Supabase database with RLS, Google sign-in — configured in one session, not copied from a docs page you follow by hand.",[26,351,353],{"id":352},"from-idea-to-production-what-5-minutes-actually-means","From Idea to Production: What \"5 Minutes\" Actually Means",[314,355,357],{"id":356},"the-honest-timeline","The honest timeline",[11,359,360],{},"Five minutes gets you a running local app. It does not get you correct Stripe webhook handling — that historically takes weeks to get right. Anyone promising both in the same sentence is selling you the clone step and hiding the wiring step.",[314,362,364],{"id":363},"what-you-get-immediately","What you get immediately",[11,366,367],{},"A Nuxt codebase, a Supabase schema with policies, Google sign-in, real Stripe products and price IDs, a prerendered Markdown blog, and i18n across four languages. That's the plumbing pre-solved.",[314,369,371],{"id":370},"what-still-requires-your-thought","What still requires your thought",[11,373,374],{},"Your business logic. Your domain data model. Your pricing strategy. Your actual features. A boilerplate can't ship those, and it shouldn't pretend to. What it can do is stop you spending 80% of your effort on integration work — the real indie-builder killer.",[26,376,378],{"id":377},"billing-done-right-webhook-architecture-that-survives-reality","Billing Done Right: Webhook Architecture That Survives Reality",[11,380,381],{},"Missed or mishandled webhooks mean lost refunds, corrupted subscription state, and angry customers. This is non-negotiable, and it's where most DIY setups quietly rot.",[314,383,385],{"id":384},"idempotent-webhook-design","Idempotent webhook design",[11,387,388,389,393],{},"Stripe will send the same event more than once. Your handler must process a replayed event ten times and produce the same result as processing it once. If replaying ",[390,391,392],"code",{},"invoice.paid"," can charge or provision twice, your billing is broken by design.",[314,395,397],{"id":396},"making-the-webhook-the-source-of-truth","Making the webhook the source of truth",[11,399,400,401,405,406,410],{},"The single most important billing decision: ",[18,402,404],{"href":78,"rel":403},[22],"your checkout success page should not touch your billing state",". The success page is a redirect the user might never see. The webhook is the fact. BoiledPlate's implementation verifies the Stripe signature, applies deterministic state transitions, and handles failure explicitly — some failures throw and retry, ",[18,407,409],{"href":93,"rel":408},[22],"some must never throw",". Knowing which is which is the whole game.",[11,412,413,414,152],{},"For a full walkthrough of the ordering — plans in config, checkout, webhook, RLS-gated access, customer portal — see ",[18,415,418],{"href":416,"rel":417},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fstripe-subscriptions-nuxt-supabase",[22],"how to set up Stripe subscriptions in a Nuxt + Supabase app",[26,420,422],{"id":421},"database-security-without-the-headaches-row-level-security","Database Security Without the Headaches: Row-Level Security",[314,424,426],{"id":425},"what-rls-actually-does","What RLS actually does",[11,428,429,430,433],{},"Row-level security enforces access at query time, in the database, not in your application code. Even if an API route forgets a ",[390,431,432],{},"WHERE user_id ="," check, Postgres refuses to return rows the caller shouldn't see.",[314,435,437],{"id":436},"why-it-matters-for-multi-tenant-saas","Why it matters for multi-tenant SaaS",[11,439,440],{},"Application-level checks fail the moment someone adds an endpoint and forgets the guard. RLS makes data leakage a database-level impossibility, not a code-review hope. BoiledPlate ships policies for users, subscriptions, and audit logs, with JWT claims from Supabase auth feeding the policies directly.",[314,442,444],{"id":443},"the-gotchas-nobody-mentions","The gotchas nobody mentions",[11,446,447,448,452],{},"RLS interacts with JWT custom claims, foreign-key constraints, and query performance in ways that surprise people. Correct policies can still block valid queries or slow them down under load. These aren't reasons to skip RLS — they're reasons to start from patterns that have already hit those walls. The ",[18,449,451],{"href":113,"rel":450},[22],"Supabase docs on RLS"," are the canonical reference worth bookmarking.",[26,454,456],{"id":455},"deterministic-patches-how-ai-agents-customize-your-codebase","Deterministic Patches: How AI Agents Customize Your Codebase",[11,458,459,460,463],{},"Templating scatters ",[390,461,462],{},"{{variables}}"," across your entire tree and leaves you to clean up. BoiledPlate uses deterministic patches instead: the agent interviews you once — pricing tiers, email provider, theme, domain, languages — then applies surgical, idempotent edits to known code.",[314,465,467],{"id":466},"agentsmd-the-contract-for-consistent-output","AGENTS.md: the contract for consistent output",[11,469,470,471,473,474,478],{},"The reason patches stay coherent is a shipped ",[390,472,129],{}," contract that documents one correct way to do data access and secrets. Writing ",[18,475,477],{"href":133,"rel":476},[22],"conventions for the agent, not the next hire"," is what keeps AI output from drifting into three different patterns for the same task. Adding a subscription tier becomes one flow: interview → migration → Stripe product → webhook handler → email template, all consistent.",[26,480,482],{"id":481},"multi-currency-and-eu-consent-billing-complexity-you-cant-ignore","Multi-Currency and EU Consent: Billing Complexity You Can't Ignore",[11,484,485,486,490,491,494],{},"Currency handling breaks late — tax rates, rounding, Stripe's integer-cents precision. And regulation is worse. EU law grants a 14-day withdrawal right (Widerrufsrecht) that affects how you handle digital-goods subscriptions. Encoding that correctly means ",[18,487,489],{"href":87,"rel":488},[22],"wiring a withdrawal waiver into the checkout button"," via Stripe's ",[390,492,493],{},"consent_collection"," — not a hardcoded checkbox you bolt on later.",[11,496,497],{},"The rule: don't hardcode policy. Make consent flows, retention, and pricing display configurable from day one, tied to user locale via the built-in i18n.",[26,499,501],{"id":500},"seo-and-metadata-without-the-crashes","SEO and Metadata Without the Crashes",[11,503,504,505,509,510,514],{},"The subtle bugs that kill SEO aren't glamorous. A JSON-LD hydration mismatch can make ",[18,506,508],{"href":168,"rel":507},[22],"a page return 200 from curl and 500 in the browser",". A misconfigured canonical can tell Google ",[18,511,513],{"href":162,"rel":512},[22],"your site lives at localhost:3000",". BoiledPlate ships a prerendered Markdown blog, JSON-LD product and organization schema, and og:url canonicals that point at the right domain — because these were debugged in production, not assumed.",[26,516,518],{"id":517},"instant-github-delivery-the-product-isnt-code-its-provisioned-services","Instant GitHub Delivery: The Product Isn't Code, It's Provisioned Services",[11,520,521],{},"Sending a zip file is a 2010 delivery model. You don't just need the repo — you need Stripe products created, a Supabase database initialized with policies, and Google OAuth configured. BoiledPlate Pro delivers via webhook: you pay, GitHub access is granted automatically, and you get a repo ready to be provisioned by your agent. Instant, auditable, and repeatable if you need a fresh copy.",[26,523,525],{"id":524},"lite-vs-pro-fork-the-template-or-buy-instant-setup","Lite vs. Pro: Fork the Template or Buy Instant Setup",[11,527,528,531,532,152],{},[53,529,530],{},"BoiledPlate Lite"," is free and MIT-licensed. Clone it from GitHub, wire the services yourself, keep full control — ",[18,533,535],{"href":211,"rel":534},[22],"everything a paid product needs, minus the automation",[11,537,538,541],{},[53,539,540],{},"BoiledPlate Pro"," is €159 one-time, with lifetime updates and instant GitHub delivery. You get the agent-driven interview, deterministic patches, provisioned services, and update paths that don't devolve into merge hell.",[11,543,544],{},"The calculation is simple: if the paid tier saves you two weeks of plumbing, €159 is not the expensive part of your launch. Your time is.",[26,546,548],{"id":547},"comparing-to-shipfast-and-other-boilerplates-honest-trade-offs","Comparing to ShipFast and Other Boilerplates: Honest Trade-Offs",[11,550,551],{},"ShipFast is a Next.js boilerplate with a large community and a proven track record. If your whole world is React and Next, that ecosystem depth is real value. Nuxt vs Next is a framework preference, not a capability gap.",[11,553,554],{},"The honest trade-offs cut both ways:",[234,556,557,563,569],{},[237,558,559,562],{},[53,560,561],{},"Open-source forks"," are free but often unmaintained — you're not saving time if you're debugging someone's two-year-old code.",[237,564,565,568],{},[53,566,567],{},"Building from scratch"," gives maximum flexibility and zero velocity; most indie builders shouldn't.",[237,570,571,574,575,152],{},[53,572,573],{},"A Nuxt-based starter"," means a smaller community than Next and fewer niche libraries — but a stack where ",[18,576,578],{"href":149,"rel":577},[22],"every piece's demands are already handled",[11,580,581,582,152],{},"The real difference isn't framework. It's that most boilerplates ship the stack and leave the plumbing to you, while ",[18,583,585],{"href":59,"rel":584},[22],"that was never the hard part",[26,587,589],{"id":588},"getting-started-a-practical-walkthrough","Getting Started: A Practical Walkthrough",[591,592,593,599,605,611,617],"ol",{},[237,594,595,598],{},[53,596,597],{},"Decide Lite or Pro."," Fork the free MIT version, or pay €159 for the provisioned setup.",[237,600,601,604],{},[53,602,603],{},"Interview."," Your agent asks about pricing, languages, branding, and email provider.",[237,606,607,610],{},[53,608,609],{},"Infrastructure lives."," Stripe products exist, the Supabase database is initialized with RLS, Google sign-in works.",[237,612,613,616],{},[53,614,615],{},"Customize and ship."," Add your business logic, deploy, collect customers.",[237,618,619,622],{},[53,620,621],{},"Iterate with agent help."," The agent reads AGENTS.md, applies patches, you review and merge.",[11,624,625,626,152],{},"The stack was always the easy decision. The plumbing was the project. That's the part worth automating — and the reason to look past the framework debate entirely. Read more on the ",[18,627,629],{"href":261,"rel":628},[22],"BoiledPlate blog",{"title":266,"searchDepth":267,"depth":267,"links":631},[632,638,643,647,652,655,656,657,658,659,660],{"id":311,"depth":270,"text":312,"children":633},[634,635,636,637],{"id":316,"depth":267,"text":317},{"id":323,"depth":267,"text":324},{"id":335,"depth":267,"text":336},{"id":342,"depth":267,"text":343},{"id":352,"depth":270,"text":353,"children":639},[640,641,642],{"id":356,"depth":267,"text":357},{"id":363,"depth":267,"text":364},{"id":370,"depth":267,"text":371},{"id":377,"depth":270,"text":378,"children":644},[645,646],{"id":384,"depth":267,"text":385},{"id":396,"depth":267,"text":397},{"id":421,"depth":270,"text":422,"children":648},[649,650,651],{"id":425,"depth":267,"text":426},{"id":436,"depth":267,"text":437},{"id":443,"depth":267,"text":444},{"id":455,"depth":270,"text":456,"children":653},[654],{"id":466,"depth":267,"text":467},{"id":481,"depth":270,"text":482},{"id":500,"depth":270,"text":501},{"id":517,"depth":270,"text":518},{"id":524,"depth":270,"text":525},{"id":547,"depth":270,"text":548},{"id":588,"depth":270,"text":589},"2026-07-29","Discover why ShipFast's promise of fast SaaS launches misses the real bottleneck: not the framework, but the hidden plumbing between pieces.",{},"\u002Fblog\u002Fshipfast-docs-beyond-framework",{"title":300,"description":662},"blog\u002Fshipfast-docs-beyond-framework",[668,669,670,671],"saas","shipfast","startup-tools","next.js","6Nz32RaquyM1jOlKYNp-MNjFqXiiMjaz2KWngkrty_c",{"id":674,"title":675,"author":6,"body":676,"category":6,"date":1166,"description":1167,"draft":285,"extension":286,"image":6,"meta":1168,"navigation":288,"path":1169,"seo":1170,"stem":1171,"tags":1172,"__hash__":1173},"blog\u002Fblog\u002Fshipfast-reddit-comparison.md","ShipFast vs AI Alternatives: What Reddit Gets Wrong",{"type":8,"value":677,"toc":1141},[678,697,701,704,708,711,737,740,744,751,754,771,782,786,789,792,796,799,807,813,817,825,828,853,857,860,863,867,874,885,889,897,901,919,923,926,930,942,946,953,957,960,974,977,981,984,1004,1008,1015,1019,1022,1059,1063,1066,1070,1073,1077,1085,1089,1092,1096,1107,1111,1117,1123,1129,1135],[11,679,680,681,684,685,688,689,692,693,696],{},"ShipFast sells a promise every founder wants to hear: launch in days, not weeks. It's a genuinely good product with a large Next.js community behind it. But if you've spent time in the ",[390,682,683],{},"r\u002FSaaS"," or ",[390,686,687],{},"r\u002Findiehackers"," threads, you've probably noticed the same gap the marketing glosses over — shipping the ",[690,691,390],"em",{}," is not the same as shipping a ",[690,694,695],{},"provisioned system",". This is a comparison for developers weighing ShipFast against an AI-native alternative, written by someone who actually cares which one you pick.",[26,698,700],{"id":699},"the-shipfast-problem-speed-isnt-setup","The ShipFast Problem: Speed Isn't Setup",[11,702,703],{},"Speed marketing answers a question most builders aren't stuck on. Choosing Next.js over Nuxt, or Stripe over Paddle, takes an afternoon. The bottleneck is what happens after you clone the repo: wiring four services into something that survives real users. ShipFast hands you a well-organized codebase. You still do the plumbing yourself.",[26,705,707],{"id":706},"what-shipfast-gets-right","What ShipFast Gets Right",[11,709,710],{},"Let's be fair, because a strawman helps nobody.",[234,712,713,719,725,731],{},[237,714,715,718],{},[53,716,717],{},"Battle-tested UI components."," The landing-page pieces and dashboard scaffolding genuinely save weeks of pixel-pushing.",[237,720,721,724],{},[53,722,723],{},"Pre-wired auth and payments."," The integrations exist and work out of the box for the common path.",[237,726,727,730],{},[53,728,729],{},"Clear structure."," For a solo founder, reduced decision fatigue is real value.",[237,732,733,736],{},[53,734,735],{},"A big Next.js community."," More tutorials, more forks, more Stack Overflow answers.",[11,738,739],{},"If your goal is to buy a proven Next.js starter and walk away, ShipFast delivers on that.",[26,741,743],{"id":742},"where-shipfast-stops-the-plumbing-cliff","Where ShipFast Stops: The Plumbing Cliff",[11,745,746,747,750],{},"These aren't criticisms. They're honest constraints of ",[690,748,749],{},"any"," code-only boilerplate.",[11,752,753],{},"You're inheriting a codebase, not a running system. That means:",[234,755,756,759,762,765,768],{},[237,757,758],{},"Stripe webhooks still require careful, idempotent handling you write and verify.",[237,760,761],{},"Database schema and row-level security decisions are yours.",[237,763,764],{},"Google OAuth setup remains a manual console dance.",[237,766,767],{},"Multi-plan billing logic needs real customization.",[237,769,770],{},"Email flows aren't automated.",[11,772,773,774,777,778,781],{},"As we've argued at length, ",[18,775,40],{"href":38,"rel":776},[22],". None of this work is ",[690,779,780],{},"clever",". It's endless and slightly different every time — which is exactly why it eats launches.",[26,783,785],{"id":784},"the-199-question-what-are-you-paying-for","The $199 Question: What Are You Paying For?",[11,787,788],{},"Code is one thing. Provisioned services are another. ShipFast is code. BoiledPlate provisions your stack.",[11,790,791],{},"That's why \"the same stack\" can cost wildly different amounts. A €159 tool that configures Supabase, Stripe, and Google sign-in for you in one session is priced against a different scope than a $199 repo you wire by hand. Price comparisons only mean something once you've matched the scope.",[26,793,795],{"id":794},"boiledplates-actual-difference-agent-driven-provisioning","BoiledPlate's Actual Difference: Agent-Driven Provisioning",[11,797,798],{},"Here's the gap the Reddit threads miss entirely: nobody else automates the provisioning.",[11,800,801,802,806],{},"BoiledPlate is an AI-native Nuxt + Supabase starter whose setup runs itself. Your coding agent interviews you — name, languages, theme, billing model — then ",[18,803,805],{"href":59,"rel":804},[22],"reshapes the codebase with deterministic patches"," and provisions the actual services: Stripe products and webhooks, a Supabase database with RLS, Google sign-in. The plumbing nobody enjoys, done in a session.",[11,808,809,810,812],{},"A shipped ",[390,811,129],{}," contract keeps that agent consistent across future sessions, so your codebase doesn't drift every time you ask for a change.",[26,814,816],{"id":815},"billing-you-can-actually-trust","Billing You Can Actually Trust",[11,818,819,820,824],{},"Most boilerplates fail in production at the billing layer, because they treat the checkout success page as the truth. It isn't. ",[18,821,823],{"href":78,"rel":822},[22],"Your billing state should live in Stripe webhooks, not a UI click"," a user might never reach.",[11,826,827],{},"BoiledPlate ships:",[234,829,830,836,847],{},[237,831,832,835],{},[53,833,834],{},"Idempotent webhook handling"," — safe retries, no double charges when Stripe redelivers.",[237,837,838,841,842,846],{},[53,839,840],{},"EU consent flows"," — including the ",[18,843,845],{"href":87,"rel":844},[22],"German withdrawal-waiver checkbox encoded into the pay button"," and GDPR-aware defaults.",[237,848,849,852],{},[53,850,851],{},"Refund logic"," that doesn't collapse under edge cases.",[26,854,856],{"id":855},"code-you-can-update-without-merge-hell","Code You Can Update Without Merge Hell",[11,858,859],{},"The real cost shows up six months in, when you want to upgrade. A forked ShipFast repo has drifted from upstream, and pulling improvements becomes a merge fight.",[11,861,862],{},"BoiledPlate uses semantic, agent-readable release notes and opt-in updates. Patches target divergence instead of obliterating your customizations. Your agent can read what changed and apply it deliberately.",[26,864,866],{"id":865},"built-for-coding-agents","Built for Coding Agents",[11,868,869,870,873],{},"This is the unstated assumption of 2025. ShipFast assumes a human developer at the keyboard. BoiledPlate assumes you work ",[690,871,872],{},"with"," Claude.",[11,875,876,877,879,880,884],{},"The difference is ",[390,878,129],{}," — a contract file documenting one right way to do data access, secrets, and API calls. ",[18,881,883],{"href":133,"rel":882},[22],"Conventions written for the agent, not the next hire",", are what stop agents drifting between sessions. Two interviews, same output structure. That consistency is BoiledPlate's single most defensible edge.",[26,886,888],{"id":887},"the-anti-plumbing-stack-why-nuxt-supabase-stripe","The Anti-Plumbing Stack: Why Nuxt + Supabase + Stripe",[11,890,891,892,896],{},"This trio isn't a checklist; it's deliberate. Nuxt is the glue with SSR that handles hydration edge cases. Supabase gives you Postgres, auth, and RLS in one place. Stripe owns billing truth. Each demands something — ",[18,893,895],{"href":149,"rel":894},[22],"Supabase's RLS is the part you forget, Stripe's webhook is the actual product"," — and cutting corners on any of them is where other combinations leak.",[26,898,900],{"id":899},"webhook-architecture-that-survives-reality","Webhook Architecture That Survives Reality",[11,902,903,904,907,908,912,913,918],{},"Reddit rarely gets into this depth. Stripe ",[690,905,906],{},"will"," redeliver events, so your handler must be idempotent or you'll charge twice and grant access twice. BoiledPlate signature-verifies every webhook and separates failures that should throw from failures that never should — the subject of a whole write-up on ",[18,909,911],{"href":93,"rel":910},[22],"why the GitHub invite is the product and delivery must not silently fail",". Stripe's own ",[18,914,917],{"href":915,"rel":916},"https:\u002F\u002Fdocs.stripe.com\u002Fwebhooks#best-practices",[22],"webhook best practices"," say the same thing: return 200 fast, handle retries safely.",[26,920,922],{"id":921},"four-languages-from-day-one","Four Languages From Day One",[11,924,925],{},"ShipFast is English-first. BoiledPlate ships i18n prebuilt in four languages. It's a small feature that signals maturity — real SaaS reaches non-English markets, and retrofitting locale strings across a codebase later is exactly the endless work you bought a starter to avoid.",[26,927,929],{"id":928},"blog-and-seo-out-of-the-box","Blog and SEO Out of the Box",[11,931,932,933,936,937,941],{},"Launch is not the finish line. BoiledPlate ships prerendered Markdown for the blog, real JSON-LD structured data, and ",[390,934,935],{},"og:url"," canonicals so you don't collect duplicate-content penalties. We learned the canonical lesson the hard way — ",[18,938,940],{"href":162,"rel":939},[22],"our blog once told Google its canonical URL was localhost:3000",". These aren't afterthoughts bolted on; they're wired to grow.",[26,943,945],{"id":944},"the-pricing-reflects-a-philosophy","The Pricing Reflects a Philosophy",[11,947,948,949,952],{},"€159 one-time versus $199 one-time looks similar. The mindset differs. Lifetime updates signal a permanent relationship, not a sale-and-forget. Instant GitHub delivery means no onboarding queue. Pricing tells you what the creator believes about the years ",[690,950,951],{},"after"," you buy.",[26,954,956],{"id":955},"when-shipfast-is-the-right-choice","When ShipFast Is the Right Choice",[11,958,959],{},"Honesty over salesmanship — ShipFast wins when:",[234,961,962,965,968,971],{},[237,963,964],{},"You want the larger, proven Next.js community.",[237,966,967],{},"You prefer buying and walking away.",[237,969,970],{},"Your team is already all-in on Next.js.",[237,972,973],{},"You don't work with a coding agent.",[11,975,976],{},"If that's you, buy ShipFast without regret.",[26,978,980],{"id":979},"when-boiledplate-is-the-right-choice","When BoiledPlate Is the Right Choice",[11,982,983],{},"BoiledPlate fits a specific builder:",[234,985,986,989,992,995,998,1001],{},[237,987,988],{},"You use Nuxt (or are willing to learn it).",[237,990,991],{},"Your workflow includes a coding agent like Claude.",[237,993,994],{},"You plan to update code over time instead of fork-and-forget.",[237,996,997],{},"You care about billing edge cases and RLS.",[237,999,1000],{},"You want your agent to help maintain the codebase.",[237,1002,1003],{},"You ship to EU markets where GDPR and consent laws are baked in.",[26,1005,1007],{"id":1006},"the-real-cost-of-saas-setup","The Real Cost of SaaS Setup",[11,1009,1010,1011,1014],{},"Redo your math with a lifecycle view. Framework choice is free; wiring services is expensive. ShipFast saves you roughly two weeks at launch. BoiledPlate saves those two weeks ",[690,1012,1013],{},"and"," keeps handling updates as you grow. The cost compounds. Launch-day savings are the smallest number in the equation.",[26,1016,1018],{"id":1017},"production-horror-stories-avoided-by-design","Production Horror Stories, Avoided by Design",[11,1020,1021],{},"These are real deployments, not hypotheticals:",[234,1023,1024,1035,1041,1047,1053],{},[237,1025,1026,1029,1030,1034],{},[53,1027,1028],{},"JSON-LD hydration crashes."," We hit ",[18,1031,1033],{"href":168,"rel":1032},[22],"a page that returned 200 on the server and 500 in the browser"," — fixed, and shipped fixed.",[237,1036,1037,1040],{},[53,1038,1039],{},"Canonical URL duplication."," Prebuilt and semantic now.",[237,1042,1043,1046],{},[53,1044,1045],{},"Stripe webhook race conditions."," Idempotent by design.",[237,1048,1049,1052],{},[53,1050,1051],{},"Refund flows that leak money."," Signature verification plus disciplined state management.",[237,1054,1055,1058],{},[53,1056,1057],{},"RLS misconfiguration."," Shipped with working examples so a user never sees another user's data.",[26,1060,1062],{"id":1061},"transactional-email-done-right","Transactional Email Done Right",[11,1064,1065],{},"Email is neglected in most starters. BoiledPlate uses Resend for order confirmations, refund notices, and consent flows, with deliverability and reputation handled. Email state syncs with billing state, so what a customer receives matches what actually happened in Stripe.",[26,1067,1069],{"id":1068},"deployment-typescript-and-theming","Deployment, TypeScript, and Theming",[11,1071,1072],{},"Deployment is minutes: Nuxt on Vercel, hosted Supabase, Stripe webhooks configured. ShipFast is comparable here — no oversell. TypeScript strict mode is the tax you pay upfront for fewer production bugs, easier onboarding, and — critically — types your agent can reason about reliably. And dashboard theming lets you pick a preset or describe a custom theme your agent maps onto the codebase, so branding ships on day one.",[26,1074,1076],{"id":1075},"lite-vs-pro-theres-a-free-option","Lite vs. Pro: There's a Free Option",[11,1078,1079,1080,1084],{},"You don't have to pay to try the paradigm. ",[18,1081,1083],{"href":211,"rel":1082},[22],"BoiledPlate Lite is a free, MIT-licensed Nuxt + Supabase starter"," with auth, Stripe billing, email, a blog, and i18n — clone it and wire it yourself. Lite makes sense when you have time and want to learn. Pro (€159, instant GitHub delivery, lifetime updates) makes sense when you're building revenue-generating SaaS and want the agent-driven provisioning and update path.",[26,1086,1088],{"id":1087},"reddits-missing-conversations","Reddit's Missing Conversations",[11,1090,1091],{},"Frame this as insight, not a dunk. The ShipFast threads rarely discuss webhook idempotency, almost never mention EU billing compliance, don't register agent consistency as a feature, and overlook update drift. All four are exactly the pain that arrives after launch.",[26,1093,1095],{"id":1094},"the-verdict","The Verdict",[11,1097,1098,1099,1102,1103,1106],{},"Speed is one dimension; maintainability is another. ShipFast is faster to ",[690,1100,1101],{},"launch",". BoiledPlate is faster to ",[690,1104,1105],{},"scale"," — provisioned services, trustworthy billing, and a codebase your agent can keep coherent. Choose based on your timeline, your stack, and your risk tolerance. There's no winner-take-all here, just two honest philosophies.",[26,1108,1110],{"id":1109},"faq","FAQ",[11,1112,1113,1116],{},[53,1114,1115],{},"Can I migrate from ShipFast to BoiledPlate?"," Not recommended. Different framework, different paradigm — a rewrite, not a port.",[11,1118,1119,1122],{},[53,1120,1121],{},"Does BoiledPlate work with other frameworks?"," No. It's Nuxt-specific by design, and that focus is why the plumbing is tight.",[11,1124,1125,1128],{},[53,1126,1127],{},"Can I use my own Stripe account?"," Yes. The agent provisions products and webhooks against your account.",[11,1130,1131,1134],{},[53,1132,1133],{},"Is the agent required?"," Pro's provisioning flow assumes a coding agent. Lite is fully self-serve.",[11,1136,1137,1140],{},[53,1138,1139],{},"What if I don't use Nuxt?"," Then ShipFast (or another Next.js starter) is the better fit. Pick the tool that matches your stack.",{"title":266,"searchDepth":267,"depth":267,"links":1142},[1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165],{"id":699,"depth":270,"text":700},{"id":706,"depth":270,"text":707},{"id":742,"depth":270,"text":743},{"id":784,"depth":270,"text":785},{"id":794,"depth":270,"text":795},{"id":815,"depth":270,"text":816},{"id":855,"depth":270,"text":856},{"id":865,"depth":270,"text":866},{"id":887,"depth":270,"text":888},{"id":899,"depth":270,"text":900},{"id":921,"depth":270,"text":922},{"id":928,"depth":270,"text":929},{"id":944,"depth":270,"text":945},{"id":955,"depth":270,"text":956},{"id":979,"depth":270,"text":980},{"id":1006,"depth":270,"text":1007},{"id":1017,"depth":270,"text":1018},{"id":1061,"depth":270,"text":1062},{"id":1068,"depth":270,"text":1069},{"id":1075,"depth":270,"text":1076},{"id":1087,"depth":270,"text":1088},{"id":1094,"depth":270,"text":1095},{"id":1109,"depth":270,"text":1110},"2026-07-28","ShipFast ships code fast, but not provisioned systems. See how it compares to AI-native alternatives on Reddit's SaaS community.",{},"\u002Fblog\u002Fshipfast-reddit-comparison",{"title":675,"description":1167},"blog\u002Fshipfast-reddit-comparison",[669,668,671,670],"y3_7GzwqTaX2V4WIr0zSPCtbf-0C_4oQfZJgIg2URfE",{"id":1175,"title":1176,"author":6,"body":1177,"category":6,"date":1439,"description":1440,"draft":285,"extension":286,"image":6,"meta":1441,"navigation":288,"path":1442,"seo":1443,"stem":1444,"tags":1445,"__hash__":1449},"blog\u002Fblog\u002Fshipfast-llc-nextjs-boilerplate-review.md","ShipFast LLC Next.js Boilerplate: Honest Review & Comparison",{"type":8,"value":1178,"toc":1423},[1179,1182,1185,1189,1192,1195,1199,1206,1209,1213,1221,1224,1228,1231,1239,1243,1251,1259,1263,1270,1278,1282,1290,1297,1301,1304,1308,1321,1325,1328,1335,1339,1347,1351,1354,1358,1364,1378,1382,1393,1396,1400,1407,1410],[11,1180,1181],{},"Search \"shipfast llc\" and you get a tangle of results: Marc Lou's popular Next.js boilerplate, an AI website builder at ShipFast.ai, a low-code agency, an express shipping company in Oviedo, Florida, and a handful of registered LLCs on Sunbiz and in Alabama. The brand is crowded. But if you landed here because you're a developer evaluating boilerplates to ship a SaaS faster, the shipping company and the corporate registry entries aren't your concern. The real question is which starter kit gets you to a production-ready product — not just a landing page.",[11,1183,1184],{},"This is an honest comparison between ShipFast, the Next.js boilerplate, and BoiledPlate, an AI-native Nuxt + Supabase starter. The short version: speed of setup is not the bottleneck you think it is.",[26,1186,1188],{"id":1187},"the-shipfast-landscape","The ShipFast Landscape",[11,1190,1191],{},"ShipFast is Marc Lou's boilerplate — Next.js, Prisma, Stripe, battle-tested UI components, and a strong community of indie makers. It dominates search because it markets a clear promise: launch in days, not weeks. That promise resonates, and the product delivers a real head start on UI and scaffolding.",[11,1193,1194],{},"The confusion comes from everything else wearing the same name. \"Shipfast llc\" surfaces a BBB-rated express courier in Florida, an AI site generator, and multiple unrelated corporate filings. None of those solve the developer's actual problem, which is turning a stack into a system.",[26,1196,1198],{"id":1197},"the-real-cost-of-fast-setup","The Real Cost of \"Fast\" Setup",[11,1200,1201,1202,152],{},"Here's the uncomfortable truth every boilerplate downplays: the stack is easy. Ask ten founders how to ship fast and you get ten stack arguments — Next vs Nuxt, Postgres vs hosted, Stripe vs Paddle. Pick what you know and that debate ends in an afternoon. ",[18,1203,1205],{"href":38,"rel":1204},[22],"The framework is not what slows you down",[11,1207,1208],{},"What slows you down is the plumbing between the pieces. A Stripe webhook that has to agree with your database. An RLS policy you forgot until a user saw someone else's data. The five places a new locale string has to land before the build stops complaining. \"Launch in days\" usually means a UI slapped together fast — not a billing system that survives its first refund.",[26,1210,1212],{"id":1211},"stack-choice-vs-integration-the-actual-bottleneck","Stack Choice vs. Integration: The Actual Bottleneck",[11,1214,1215,1216,1220],{},"ShipFast bets on Next.js and Prisma. BoiledPlate bets on Nuxt and Supabase. Both are good bets. But the framework choice cascades far less than the integration work that follows it. ",[18,1217,1219],{"href":149,"rel":1218},[22],"Wiring four services into something coherent"," — auth, database, payments, email — is where weeks disappear, regardless of which router you picked.",[11,1222,1223],{},"The difference between these two products is not \"Next vs Nuxt.\" It's whether the wiring is your job or the product's job.",[26,1225,1227],{"id":1226},"the-agent-native-difference","The Agent-Native Difference",[11,1229,1230],{},"ShipFast is human-centric: you read the docs, you edit the config, you do the plumbing. BoiledPlate is agent-native. Your coding agent runs a setup interview — name, languages, theme, billing model — then reshapes the codebase with deterministic patches and provisions Stripe products, a Supabase database with RLS, and Google sign-in in one session.",[11,1232,1233,1234,1238],{},"That distinction matters because agents drift without rules. BoiledPlate ships an ",[18,1235,1237],{"href":133,"rel":1236},[22],"AGENTS.md contract"," — one documented way to do data access and secrets — so Claude produces consistent output across interviews, patches, and later customizations. Conventions written for the agent, not the next hire.",[26,1240,1242],{"id":1241},"webhook-architecture-that-survives-production","Webhook Architecture That Survives Production",[11,1244,1245,1246,1250],{},"This is where \"fast\" boilerplates quietly fail. Your checkout success page is not your billing state. The ",[18,1247,1249],{"href":78,"rel":1248},[22],"source of truth is the Stripe webhook",", not the client-side redirect a user may never reach.",[11,1252,1253,1254,1258],{},"BoiledPlate's webhooks are signature-verified and idempotent, so Stripe's retries don't duplicate side effects and a refund doesn't corrupt subscription state. There's a real subtlety here that most tutorials skip: ",[18,1255,1257],{"href":93,"rel":1256},[22],"some webhook failures must throw so Stripe retries, and some must never throw"," or you'll retry a duplicate forever. Getting that boundary right is the difference between a billing system and a time bomb.",[26,1260,1262],{"id":1261},"row-level-security-and-data-privacy","Row-Level Security and Data Privacy",[11,1264,1265,1266,1269],{},"Application-level access checks are easy to forget and easy to bypass. Supabase ",[18,1267,106],{"href":113,"rel":1268},[22]," enforces access at query time, in the database, where a missed check can't leak another user's data.",[11,1271,1272,1273,1277],{},"Compliance lives in the same territory. EU withdrawal law, for example, requires encoding a German consumer's waiver directly into the checkout — BoiledPlate handles this via ",[18,1274,1276],{"href":87,"rel":1275},[22],"Stripe's consent_collection",". These are the edge cases that don't show up in a demo but do show up in a lawsuit.",[26,1279,1281],{"id":1280},"billing-edge-cases-nobody-talks-about","Billing Edge Cases Nobody Talks About",[11,1283,1284,1285,1289],{},"Multi-plan subscriptions, free tiers, upgrades, trials, refunds, failed charges — ",[18,1286,1288],{"href":416,"rel":1287},[22],"each of these is a decision, not a checkbox",". The hard part is keeping your database's idea of a subscription in sync with Stripe's when webhooks arrive out of order, arrive twice, or arrive late.",[11,1291,1292,1293,1296],{},"Idempotency isn't a nice-to-have. It's the property that lets delivery guarantees actually hold when Stripe retries a ",[390,1294,1295],{},"checkout.session.completed"," event three times.",[26,1298,1300],{"id":1299},"deterministic-patches-vs-manual-wiring","Deterministic Patches vs. Manual Wiring",[11,1302,1303],{},"\"Agent-driven interviews reshape the codebase\" means your answers become repeatable, idempotent code changes — applied the same way every run. The alternative is hand-editing dozens of config files, one per decision, and hoping you didn't miss the fifth place a locale string had to land. Deterministic patches remove the \"hoping.\"",[26,1305,1307],{"id":1306},"technical-debugging-real-bugs-from-the-field","Technical Debugging: Real Bugs from the Field",[11,1309,1310,1311,1315,1316,1320],{},"BoiledPlate exists because someone kept a running log of every edge case it took to make this stack trustworthy. Two examples from that log: a page that ",[18,1312,1314],{"href":168,"rel":1313},[22],"returned 200 from curl but 500 in Chrome because of JSON-LD source order",", and a blog that ",[18,1317,1319],{"href":162,"rel":1318},[22],"told Google its canonical URL was localhost:3000",". There's also a Nuxt 4 typecheck breaking because of a Vercel analytics package — documented, not hidden. These are the bugs that \"launch in days\" marketing never mentions.",[26,1322,1324],{"id":1323},"instant-delivery-and-the-pricing-question","Instant Delivery and the Pricing Question",[11,1326,1327],{},"BoiledPlate's product is literally a webhook-triggered GitHub invite: pay, and delivery happens instantly and idempotently. That mechanism ties directly to pricing — €159 one-time with lifetime updates and instant GitHub delivery, versus ShipFast's model. A one-time purchase changes the incentive structure: the product has to keep working after the sale, not just renew.",[11,1329,1330,1331,1334],{},"BoiledPlate also ships a free, MIT-licensed tier — ",[18,1332,530],{"href":211,"rel":1333},[22]," — if you'd rather clone it and wire it manually. The Pro tier is for when €159 is cheaper than the hours the plumbing would cost you.",[26,1336,1338],{"id":1337},"auth-email-and-multilingual-from-day-one","Auth, Email, and Multilingual From Day One",[11,1340,1341,1342,1346],{},"Auth is Supabase with Google sign-in and RLS as the enforcement layer, not a pile of application-level checks. Transactional email runs through Resend — simple to send, ",[18,1343,1345],{"href":149,"rel":1344},[22],"annoying to send exactly once",", which is a plumbing problem, not a feature. And i18n is built in: four languages from day one, because bolting localization on later means touching your dashboard architecture and every consent string, including that German withdrawal waiver in four languages.",[26,1348,1350],{"id":1349},"the-no-merge-hell-philosophy","The \"No Merge Hell\" Philosophy",[11,1352,1353],{},"Most boilerplates fail after setup. You customize the code, a new version drops, and merging it becomes a nightmare of cryptic diffs. BoiledPlate ships semantic, agent-readable release notes and opt-in updates to customized code — so your agent can apply improvements without forcing you to re-do your own work. This is the real problem generic boilerplates leave unsolved.",[26,1355,1357],{"id":1356},"when-to-pick-boiledplate-over-shipfast-and-vice-versa","When to Pick BoiledPlate Over ShipFast (and Vice Versa)",[11,1359,1360,1361,1363],{},"Pick ",[53,1362,23],{}," if:",[234,1365,1366,1369,1372,1375],{},[237,1367,1368],{},"You're on Nuxt and Supabase.",[237,1370,1371],{},"You're building with Claude or another coding agent and want the AGENTS.md contract keeping it consistent.",[237,1373,1374],{},"You want interview-driven, deterministic customization instead of manual config surgery.",[237,1376,1377],{},"You prefer a one-time purchase with lifetime updates.",[11,1379,1360,1380,1363],{},[53,1381,294],{},[234,1383,1384,1387,1390],{},[237,1385,1386],{},"You want Next.js and Prisma specifically.",[237,1388,1389],{},"You prefer a large, established indie-maker community.",[237,1391,1392],{},"You're comfortable doing the integration wiring yourself.",[11,1394,1395],{},"There's no universal winner. There's a stack you already know and a way you prefer to work.",[26,1397,1399],{"id":1398},"the-unsexy-truth-plumbing-never-ships-itself","The Unsexy Truth: Plumbing Never Ships Itself",[11,1401,1402,1403,152],{},"\"Launch in days\" means nothing if you then spend twelve weeks fixing webhook edge cases, billing state corruption, and RLS gaps you didn't know existed. Both products give you a head start. Only one is designed around the assumption that ",[18,1404,1406],{"href":59,"rel":1405},[22],"the plumbing is the actual project",[11,1408,1409],{},"Be honest with yourself about what's left after setup: performance tuning, database indexing, rate limiting, and the compliance trails regulated industries demand — no boilerplate ships those for free. What BoiledPlate does is remove the endless, slightly-different-every-time wiring so you spend your weeks on the product, not the pipes.",[11,1411,1412,1413,1417,1418,1422],{},"If you're building on Nuxt and Supabase and working with a coding agent, that trade is worth making. ",[18,1414,1416],{"href":20,"rel":1415},[22],"See how the setup actually runs itself",", or read ",[18,1419,1421],{"href":261,"rel":1420},[22],"the rest of the field notes"," before you decide.",{"title":266,"searchDepth":267,"depth":267,"links":1424},[1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438],{"id":1187,"depth":270,"text":1188},{"id":1197,"depth":270,"text":1198},{"id":1211,"depth":270,"text":1212},{"id":1226,"depth":270,"text":1227},{"id":1241,"depth":270,"text":1242},{"id":1261,"depth":270,"text":1262},{"id":1280,"depth":270,"text":1281},{"id":1299,"depth":270,"text":1300},{"id":1306,"depth":270,"text":1307},{"id":1323,"depth":270,"text":1324},{"id":1337,"depth":270,"text":1338},{"id":1349,"depth":270,"text":1350},{"id":1356,"depth":270,"text":1357},{"id":1398,"depth":270,"text":1399},"2026-07-27","Compare ShipFast Next.js boilerplate vs BoiledPlate. Honest review of setup speed, stack choices, and production-ready SaaS development.",{},"\u002Fblog\u002Fshipfast-llc-nextjs-boilerplate-review",{"title":1176,"description":1440},"blog\u002Fshipfast-llc-nextjs-boilerplate-review",[1446,1447,294,1448],"SaaS development","Next.js boilerplate","web development","ilIsWsfUeHT32NWAeCzlUhuydPgMN9Llu5JnmH3u5U8",1785372690541]