DEV Community

Utkarsh Singh
Utkarsh Singh

Posted on

I got tired of rebuilding auth and Stripe for every SaaS. So I packaged my own starter.

Originally published at https://zerodrag.cloud/blog

Every time I started a new SaaS project, I spent the
first week doing the exact same things.

Wiring up auth. Integrating Stripe. Setting up a
database. Configuring transactional email.

35+ hours of setup before writing a single line of
actual product logic.

The worst part? None of it was my product. It was
just infrastructure. The same infrastructure every
SaaS needs. Built from scratch. Again.


The breaking point

When I built zerodrag.cloud, I realized something.

The entire backend - auth, payments, database, and
email - was running in production before I'd written
a single line of product code.

The only "setup" was filling in a .env file.

That's it.

No wiring NextAuth. No debugging Stripe webhooks for
four hours. No figuring out why Prisma migrations
weren't running in production.

Just credentials in a .env file. Done.


What I built

I packaged that entire foundation into ZeroDrag - a
production-ready Next.js SaaS starter.

Here's what comes pre-wired:

Auth

  • Google OAuth + magic links
  • NextAuth v5 + App Router
  • Protected routes via middleware
  • Server-side session helpers

Payments

  • Stripe AND Razorpay (switch via env var)
  • Subscription lifecycle handled
  • Webhooks pre-configured
  • Entitlement sync built in

Database

  • PostgreSQL + Prisma ORM
  • Works with Supabase, Neon, Railway
  • Seed scripts included
  • Production-safe migrations

Email

  • Resend integration
  • React email templates
  • HTML + plain text support

AI (Pro)

  • OpenAI, Claude, Gemini - unified API
  • Keys never exposed to client
  • Per-user rate limiting
  • Token usage tracking

Error tracking (Pro)

  • Sentry pre-configured
  • API and webhook error capture

The Razorpay thing

One thing that makes ZeroDrag different from every
other Next.js starter: it supports both Stripe AND
Razorpay out of the box.

If you're building for Indian customers, you already
know the problem. Stripe has poor card acceptance
rates in India. Razorpay doesn't support international
payments well.

ZeroDrag solves this with a unified payment API.
Switch between providers by changing one env var:
PAYMENT_PROVIDER=stripe
PAYMENT_PROVIDER=razorpay
No rewrites. No refactoring. Just change the variable
and deploy.


Who it's for

  • Indie hackers shipping real SaaS products
  • Solo founders going from idea to paid users fast
  • Engineers tired of wiring the same infrastructure again and again

It's not for beginners or no-code builders. It assumes
you know how to build apps — it just removes the
boring, repetitive parts.


Pricing

One-time payment. No subscription.

https://zerodrag.cloud

Would love honest feedback from other developers —
especially on what's missing or what you'd do
differently.

Top comments (0)