Next.jsReactSaaSStarter

verifiedstack-lite — Next.js SaaS Template

By verifiedstack

MIT-licensed Next.js SaaS authentication and organization starter, including email/password, passkeys, TOTP two-factor, OAuth, multi-tenant organizations with RBAC, transactional email, and demo mode.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-03View source

What stands out

A quick read of the recorded project description.

01

Email/password login, passwordless login via email one-time codes, Google and GitHub OAuth, WebAuthn passkeys, TOTP two-factor with backup codes

02

Multi-tenant organizations with invitations, owner / admin / reviewer / member roles, onboarding flows, and member management

03

react-email transactional email templates, connectable to Resend, any SMTP relay, or console output in development

04

DEMO_MODE=1 provides a public sandbox: pre-seeded accounts, one-click login, frozen shared account credentials, suppressed outbound email, nightly resets

05

Monorepo structure with Next.js App Router and RSC, TypeScript strict, Postgres with Drizzle ORM, Tailwind with shadcn/ui, and pnpm workspaces

Template Details

VerifiedStack Lite is the open-source foundation layer of the paid VerifiedStack suite, released under the MIT license. It provides complete authentication and organization features: email/password login with verification emails, passwordless login via email one-time codes, Google and GitHub OAuth (buttons appear only after keys are configured), WebAuthn passkeys, TOTP two-factor with backup codes, Cloudflare Turnstile bot protection, and rate limiting. The organization layer supports multi-tenancy, invitations, role-based access (owner / admin / reviewer / member), onboarding flows, and member management, with sessions resolving users to their active organization on the server. Transactional email uses react-email templates and can connect to Resend, any SMTP relay, or output to the console in development, so the app runs with zero email configuration. DEMO_MODE=1 turns a deployment into a public sandbox with pre-seeded accounts, one-click login, frozen shared account credentials, suppressed outbound email, and nightly resets. The stack is Next.js App Router with RSC, TypeScript strict, Postgres with Drizzle ORM, Tailwind with shadcn/ui, and pnpm workspaces, provided as a monorepo with package boundaries for auth, db, email, config, and more.

Limitations: Lite intentionally excludes identity verification (KYC) pipelines, manual review queues, append-only audit logs, Stripe billing, data retention and DSAR export, consent capture, and other compliance features; these belong to the paid VerifiedStack Core. The repository is generated from a private monorepo via an exporter, issues are triaged weekly, and the feature scope is deliberately narrow. The free scope covers only this version's code; third-party assets such as demo images, fonts, and icons must be checked against their respective licenses, and external services such as domains, hosting, databases, payments, or AI may incur separate charges.

Next.jsSaaSStarter

Is it right for your project?

Use Cases

  • Quickly setting up a login system with passkeys, two-factor, and OAuth for a Next.js application
  • Building a multi-tenant SaaS that needs organizations, invitations, and role-based permissions
  • Using zero-config transactional email and public sandbox mode in development or demo environments
  • Reading and evaluating the authentication and organization foundation code before deciding to adopt the paid KYC suite

Suitable For

  • Developers building SaaS with Next.js and Postgres
  • Teams needing readable, modifiable MIT-licensed authentication and organization starter code
  • Projects that want to evaluate the authentication layer before deciding whether to adopt the paid KYC suite

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    After cloning the repository, copy .env.example to .env; the default configuration is enough to run

  2. 2

    Use docker compose up to start Postgres, run migrations, and run the app at localhost:3000; for development hot reload, use the docker-compose.dev.yml combination

  3. 3

    Optionally run docker compose run --rm seed to generate demo data with one organization and two accounts

  4. 4

    Local Node approach: pnpm install, point DATABASE_URL to Postgres, then run pnpm db:migrate && pnpm dev

  5. 5

    For production, set BETTER_AUTH_SECRET and APP_URL, enable REQUIRE_EMAIL_VERIFICATION=1 and configure an email transport; the app container binds to localhost, so a front reverse proxy must forward x-real-ip to prevent rate limiting from treating all traffic as the same client

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is this version's code and does not imply that external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercialize, and distribute this version's code for free.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and liability limitations are governed by the original license and applicable law.

Additional costs & items to verify

  • Compliance features such as KYC identity verification pipelines, manual review queues, append-only audit logs, Stripe billing, data retention and DSAR export, and consent capture belong to the paid VerifiedStack Core; the free Lite version does not include them.
  • Updates for the free Lite version are free forever; updates for the paid Core version cover only 12 months and require renewal.
  • Using Google and GitHub OAuth requires configuring the respective client keys; login buttons are not shown when they are not configured.
  • Production deployment requires a reverse proxy in front of the app container that forwards x-real-ip; otherwise rate limiting will treat all traffic as the same client.
  • Production requires enabling REQUIRE_EMAIL_VERIFICATION=1 and configuring an email transport (Resend, SMTP, etc.); otherwise email verification cannot be completed.
  • The repository is generated from a private monorepo via an exporter, and the code stays aligned with the paid version's foundation layer; the feature scope is deliberately narrow, and needs beyond authentication, organizations, email, and demo mode may not be accepted.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

The paid kit, **VerifiedStack Core**, is this codebase plus the identity-verification layer for teams shipping regulated products

Original README

Updates | free forever | 12 months, renewable

Original README

Google & GitHub OAuth (buttons appear only when keys are configured)

Original README

Put a reverse proxy in front of the app container (it binds to localhost) and forward `x-real-ip`, or rate limiting will treat all traffic as one client.

Original README

Turn on `REQUIRE_EMAIL_VERIFICATION=1` and configure an email transport.

Original README

This repo is assembled from our private monorepo by an exporter, so the code here always matches a paid release's foundation.

Original README
https://github.com/verifiedstack/verifiedstack-lite/blob/main/LICENSEhttps://github.com/verifiedstack/verifiedstack-lite/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-03. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 85 / 100
Technologies
Next.js · React
Website type
SaaS · Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-07-20
Screenshot last checked
2026-10-03

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 1fde6913763e26f260f6039a8714b70cd9302ccdb09374eea7125543ea62fb20

2026-10-03T07:22:59.226Z

Source file / repository
<p align="center">
  <img src="apps/web/public/logo.svg" alt="VerifiedStack" width="88" height="88" />
</p>

<h1 align="center">VerifiedStack Lite</h1>

<p align="center">
  Production-grade auth &amp; organizations starter for Next.js —<br />
  passkeys, 2FA, OAuth, multi-tenant orgs with RBAC, transactional email. MIT.
</p>

<p align="center">
  <a href="https://demo.verifiedstack.app">Live demo</a> ·
  <a href="#quickstart">Quickstart</a> ·
  <a href="#lite-vs-core">Lite vs Core</a> ·
  <a href="https://verifiedstack.app/?ref=github&utm_source=github&utm_medium=lite-readme">Full kit</a>
</p>

<p align="center">
  <img src=".github/verification-flow.gif" alt="A user completing identity verification, with the decision landing in the dashboard" width="820" />
</p>

<p align="center">
  <sub>The identity-verification flow from <a href="https://verifiedstack.app/?ref=github&utm_source=github&utm_medium=lite-readme">VerifiedStack Core</a> — running on the auth &amp; organization foundation in this repo.</sub>
</p>

---

Lite is the open-source base of [VerifiedStack](https://verifiedstack.app/?ref=github&utm_source=github&utm_medium=lite-readme),
the KYC-ready SaaS starter. It's the complete auth and organization layer the
paid kit is built on — released whole, under MIT, because you should be able to
read real code before trusting a starter with your sign-in flow. No crippled
features, no login-to-download, no nag screens. What's here is finished.

## What's inside

- **Authentication ([Better-Auth](https://better-auth.com))** — email/password
  with verification emails, **passwordless sign-in** via emailed one-time
  codes, Google & GitHub OAuth (buttons appear only when keys are
  configured), **passkeys** (WebAuthn), **TOTP two-factor** with backup
  codes, Cloudflare Turnstile bot protection, and rate limiting.
- **Organizations** — multi-tenant orgs with invitations, role-based access
  (owner / admin / reviewer / member), an onboarding flow, and member
  management. Sessions land users in their active organization server-side.
- **Transactional email** — react-email templates behind a pluggable
  transport: Resend, any SMTP relay, or console logging in development. The
  app runs with zero email configuration.
- **Demo mode** — `DEMO_MODE=1` turns a deployment into a safe public
  sandbox: seeded accounts, one-click sign-in, frozen credentials on shared
  accounts, suppressed outbound email, nightly reset. It's exactly how
  [demo.verifiedstack.app](https://demo.verifiedstack.app) runs.
- **Stack** — Next.js 16 (App Router, RSC), TypeScript strict, Postgres +
  Drizzle ORM, Tailwind + shadcn/ui, pnpm workspaces. Ships as a monorepo
  with clean package seams (`auth`, `db`, `email`, `config`).

## Quickstart

Everything runs in Docker — no local Node required.

```bash
git clone https://github.com/verifiedstack/verifiedstack-lite
cd verifiedstack-lite
cp .env.example .env   # defaults work out of the box
docker compose up      # postgres → migrations → app on localhost:3000
```

For development with hot reload:

```bash
docker compose -f docker-compose.yml -f docker-compose.dev.yml up
```

Optional demo/dev data (one org, two accounts):

```bash
docker compose run --rm seed
```

Prefer local Node? `pnpm install`, point `DATABASE_URL` at a Postgres, then
`pnpm db:migrate && pnpm dev`.

## Going to production

- Set a real `BETTER_AUTH_SECRET` (`openssl rand -base64 32`) and your public
  `APP_URL`.
- Turn on `REQUIRE_EMAIL_VERIFICATION=1` and configure an email transport.
- Put a reverse proxy in front of the app container (it binds to localhost)
  and forward `x-real-ip`, or rate limiting will treat all traffic as one
  client.
- Vercel works too: import the repo, set the env vars, use a managed
  Postgres.

## Lite vs Core

Lite is a complete auth starter — and deliberately not more. The paid kit,
**VerifiedStack Core**, is this codebase plus the identity-verification layer
for teams shipping regulated products:

| | Lite (this repo) | [Core](https://verifiedstack.app/?ref=github&utm_source=github&utm_medium=lite-readme) |
| --- | :-: | :-: |
| Email/password, OAuth, passkeys, email codes, TOTP 2FA | ✅ | ✅ |
| Organizations, invites, RBAC | ✅ | ✅ |
| Transactional email (Resend / SMTP / console) | ✅ | ✅ |
| Demo mode | ✅ | ✅ |
| KYC pipeline — provider-agnostic, mock provider included, documents never touch your servers | — | ✅ |
| Manual review queue, operable by a compliance analyst | — | ✅ |
| Append-only audit trail | — | ✅ |
| Stripe billing: tiers + metered per-verification usage | — | ✅ |
| Data retention, DSAR export, consent capture | — | ✅ |
| Updates | free forever | 12 months, renewable |

## Contributing & support

This repo is assembled from our private monorepo by an exporter, so the code
here always matches a paid release's foundation. Issues are welcome and
triaged weekly. Bug-fix PRs are appreciated — they're applied upstream and
ship here with the next release, so your commit may land rebased. Feature
scope is deliberately tight: if it isn't auth, orgs, email, or demo mode, it
probably belongs in [a discussion](https://github.com/verifiedstack/verifiedstack-lite/discussions)
first.

## License

[MIT](LICENSE) — use it for anything, including commercial products.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.