Development

Why use a boilerplate to start your next project?

Starting from scratch takes weeks. A good boilerplate gets you to production in hours, with authentication, payments, and essential features already working
Matthias Ragus profile photo

Matthias Ragus

@mateeyas

You're ready to build your SaaS idea, marketing site, or web application. You open your code editor and immediately face the same question everyone does: where do I start?

The answer used to be building everything from scratch. Set up authentication, integrate a database, configure email services, add payment processing, connect AI providers. Do it all before you write a single line of code for your actual product.

But there's a better way: start with a boilerplate.

What exactly is a boilerplate?

A boilerplate is a pre-configured starter template that includes the fundamental infrastructure every modern web application needs. Think of it as a foundation with all the utilities already installed - authentication, database connections, email services, payment processing, and more.

Instead of spending weeks on setup, you start with working code and focus immediately on what makes your project unique.

How much time does a boilerplate actually save?

Let's be realistic about the setup phase:

Building from scratch:

  • Authentication system: 3-4 days implementing user registration, login, password reset, session management, and security
  • Database setup: 1-2 days configuring ORM, connection pooling, migrations, and basic CRUD operations
  • Email service: 1 day integrating a provider, creating templates, and handling delivery
  • Payment processing: 2-3 days setting up Stripe or similar, webhooks, subscription management, and error handling
  • AI integration: 2-3 days connecting providers, implementing streaming, managing API keys
  • UI components: 3-5 days building forms, buttons, modals, navigation, and making everything responsive

That's 2-3 weeks minimum before you write any actual business logic.

Starting with a boilerplate:

  • Add your API keys: 10 minutes
  • Configure your preferences: 30 minutes
  • Start building your product: immediately

The math is simple. Those 2-3 weeks are yours to spend on features that matter.

Won't I just spend time learning someone else's code?

This is the right concern, but it depends on the boilerplate. A well-designed boilerplate should be intuitive, not cryptic.

Good boilerplates follow standard patterns you'd implement yourself anyway. Authentication uses established libraries, database models follow conventions, API routes are organized logically. You're not learning a proprietary system - you're using industry standards that happen to be pre-configured.

The documentation should be clear, and the code should be clean. If you find yourself puzzled by every file, you've picked the wrong boilerplate.

Is the code actually clean, or am I inheriting technical debt?

This is where quality matters. Bad boilerplates are worse than starting from scratch - you inherit messy code, outdated dependencies, and questionable architecture decisions.

A good boilerplate should be indistinguishable from code you'd write yourself after learning best practices. Clean file structure, sensible naming conventions, proper separation of concerns, and modern tooling.

Look for boilerplates that:

  • Follow framework conventions rather than inventing their own
  • Use current versions of dependencies
  • Include linting and formatting tools
  • Have clear, organized directory structures
  • Show evidence of maintenance and updates
Check the boilerplate's commit history. Regular updates and active maintenance are strong signals of quality and long-term viability.

What makes a boilerplate "good" vs. "bad"?

The difference comes down to one word: opinionation.

Bad boilerplates are overly customized. They wrap everything in custom abstractions, create their own patterns, and deviate significantly from official documentation. When you need to reference Stripe's docs, Prisma's guides, or authentication library tutorials, you'll find the boilerplate's implementation is completely different. You're trapped in someone else's architectural decisions.

Good boilerplates are minimally opinionated. They integrate tools with light configuration - enough to make things work smoothly, but not so much that you can't follow the official docs anymore. The authentication setup should look like the auth library's examples. The database code should match Prisma's patterns. The payment processing should align with Stripe's guides.

This minimal approach means:

  • You can reference native documentation alongside boilerplate docs
  • Debugging is straightforward because the implementation is standard
  • Updates and new features from the underlying tools are easy to adopt
  • You're learning transferable patterns, not proprietary systems

Do I lose flexibility by starting with a template?

Not if the boilerplate is designed correctly. A good boilerplate is a starting point, not a cage.

Everything should be customizable because the code is yours. Don't like how authentication is styled? Change it. Want to add new database models? Follow the existing patterns. Need to switch email providers? The integration should be clean enough to swap out.

The goal isn't to lock you into specific choices - it's to eliminate the tedious setup work so you can focus on building and customizing your actual product.

What should be included in a modern boilerplate?

At minimum, a production-ready boilerplate should handle:

Authentication - User registration, login, password reset, session management, and security best practices. This is table stakes.

Database integration - A working ORM setup with migrations, connection pooling, and examples of common queries. You shouldn't be configuring database drivers from scratch.

Email service - Connected and working, with template examples. Sending transactional emails should be a function call, not a project.

Payment processing - If you're building a SaaS or any monetized product, Stripe integration with webhooks and subscription management saves enormous time.

UI components - A component library that's already styled and responsive. Buttons, forms, modals, navigation - the building blocks should exist.

Modern tooling - TypeScript support, linting, formatting, and development tools configured. You want to write good code, not spend days setting up ESLint.

Beyond the basics, nice-to-haves include AI integrations, content management systems, admin panels, and pre-built landing pages. The more complete the boilerplate, the faster you ship.

Is this just for beginners, or do experienced developers use boilerplates?

Experienced developers use boilerplates constantly. Not because they can't build these systems - they absolutely can - but because they've built them dozens of times before and know it's not valuable work.

There's no glory in being the hundredth person to implement OAuth. The interesting work is in your product's unique features, not in configuring database connections.

Senior developers value their time differently. A boilerplate that saves three weeks of setup is worth far more than the cost, even if they could build everything themselves.

Rapidstack: a boilerplate built for Nuxt

If you're building with Nuxt 4, Rapidstack includes everything mentioned above - authentication with Better Auth, Prisma database setup, email integration, Stripe payments, AI chat templates, and a complete UI component library built on shadcn-vue.

What sets it apart is minimal customization. Each integration follows native patterns, so when you reference Better Auth docs, Prisma guides, or Stripe documentation, the implementations match. You're not learning a custom wrapper system - you're using industry-standard tools that happen to work together out of the box.

The goal is to get you building immediately while keeping your code maintainable and your learning transferable. Check the templates, explore the documentation, and see how quickly you can go from setup to shipping.


Starting from scratch is a choice, but it shouldn't be the default. Your time is valuable. A good boilerplate respects that.