Comparison

SvelteKit Starter Comparison: VerdantStack vs CMSaasStarter

Two popular SvelteKit starters for B2B SaaS. Different approaches, different strengths. Here's an honest comparison to help you choose.

At a glance

VerdantStack

  • • SQLite (zero dependencies)
  • • Full RBAC (owner > admin > member)
  • • Seat-based billing adapter
  • • Append-only audit log
  • • 77 tests
  • • $79–$129

CMSaasStarter

  • • PostgreSQL (via Supabase)
  • • Basic organizations
  • • No RBAC
  • • No billing integration
  • • No audit log
  • • Free (MIT)

Feature comparison

Authentication

VerdantStack:Custom scrypt + hashed sessions (DB-backed, revocable)
CMSaasStarter:Supabase Auth

Different approaches — we use SQLite + custom auth; they use Supabase managed auth

Multi-tenancy

VerdantStack:Organizations with memberships, invite links, role hierarchy
CMSaasStarter:Basic organizations (no RBAC)

Our kit has full RBAC (owner > admin > member); theirs is simpler

RBAC

VerdantStack:Full role hierarchy with capability matrix, server-side enforcement
CMSaasStarter:Not included

We include RBAC; theirs does not

Seat billing

VerdantStack:Pluggable BillingAdapter with seat limits
CMSaasStarter:Not included

We include billing integration; theirs does not

Audit log

VerdantStack:Append-only by construction (no UPDATE/DELETE path)
CMSaasStarter:Not included

We include audit logging; theirs does not

Rate limiting

VerdantStack:Sliding-window failed-attempt limiter
CMSaasStarter:Not included

We include rate limiting; theirs does not

Database

VerdantStack:SQLite (better-sqlite3 + Drizzle ORM)
CMSaasStarter:PostgreSQL (via Supabase)

SQLite for zero-dependency; Supabase for managed infrastructure

Realtime

VerdantStack:Not included
CMSaasStarter:Supabase Realtime

Supabase has realtime built-in; we focus on the SaaS foundation

Tests

VerdantStack:77 tests (Vitest)
CMSaasStarter:Limited test coverage

We have comprehensive test coverage

Price

VerdantStack:$79 early-bird → $129 standard
CMSaasStarter:Free (MIT)

We charge for production-ready features; theirs is free

When to choose which

Choose VerdantStack if you need:

  • • Multi-tenancy with role-based access control
  • • Seat-based billing integration
  • • Audit logging for compliance
  • • Zero external dependencies (SQLite)
  • • Comprehensive test coverage
  • • Production-ready foundation, not just a demo

Choose CMSaasStarter if you need:

  • • Free, open-source starting point
  • • Supabase managed infrastructure
  • • Realtime features out of the box
  • • Simple organization model (no RBAC needed)
  • • Quick prototype, not production deployment
  • • Supabase Auth integration

Architecture differences

VerdantStack uses a layered architecture: Routes → Services → RBAC/Billing → Database. Services are framework-free (no SvelteKit imports), making them testable with in-memory SQLite. The BillingAdapter seam lets you plug in any merchant-of-record (Lemon Squeezy, Paddle, Stripe) without changing domain logic.

CMSaasStarter uses Supabase as the backend: Auth, database, and realtime are all managed by Supabase. This simplifies infrastructure but couples you to Supabase's ecosystem. RLS policies scope data per user, though CMSaasStarter does not ship a tenants abstraction — that's yours to build.

Key difference: VerdantStack is a self-contained starter you can deploy anywhere Node runs (Vercel, your own server) — it needs a writable filesystem for its SQLite database. CMSaasStarter requires Supabase infrastructure.

The honest truth

  • CMSaasStarter is free and has 2,357 stars — it's popular for a reason.
  • VerdantStack costs money because it includes features CMSaasStarter doesn't.
  • If you need RBAC, billing, and audit logging, you'll build them yourself on CMSaasStarter.
  • If you don't need those features, CMSaasStarter is a great starting point.
  • Both are SvelteKit. Both are TypeScript. Both are well-maintained.

Get in touch

Questions about the product, team licenses, or anything else? We'll respond within 48 hours.

Max 2000 characters

Stored in our own database — no third party. Deleted on request.

Related reading