Next.jsReactStarter

next-web-boilerplate — Next.js Starter Template

By jrittelmeyer

A Next.js-based monorepo starter with built-in authentication, payments, i18n, background jobs, and observability modules; it boots with just two environment variables.

Explore the design

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

1 previews
Author preview
Author-provided preview

Preview provided in the project README.

One original preview is available. Open the full image to inspect the design.

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-05View source

What stands out

A quick read of the recorded project description.

01

Monorepo structure with Turborepo + pnpm workspaces, separating the app from shared packages (db, auth, calendar, email, jobs, ui, validators)

02

Built-in authentication: email/password, OAuth, 2FA, passkeys, and organization management

03

Integrated Stripe hosted checkout and webhooks, Resend email, Uploadthing uploads, and Meilisearch search

04

Includes a calendar and recurrence rule engine supporting events, invitations, and reminders

05

Includes Vitest unit tests and Playwright end-to-end tests, plus Biome and ESLint code checks

06

Provides Docker multi-stage builds and a local docker-compose development environment

Template Details

next-web-boilerplate is a Next.js monorepo starter for complex web applications, organized with Turborepo and pnpm workspaces. The repository separates the application from shared packages: apps/web is the Next.js application, while packages contains the database (Drizzle + PostgreSQL), authentication (Better Auth), a calendar and recurrence rule engine, email templates, background jobs, observability configuration, UI components (shadcn/ui), and Zod validation schemas shared between client and server.

Functionally, it covers authentication (email/password, OAuth, 2FA, passkeys, organizations), Stripe payments (hosted checkout and webhooks), email (Resend + React Email), file uploads (Uploadthing), search (Meilisearch), background jobs (pg-boss), internationalization, calendar (events, invitations, reminders, recurrence rules), and observability integrations with Sentry, BetterStack, and PostHog. The API uses tRPC for reads and Server Actions for writes, with Zustand and TanStack Query for state and data fetching, and React Hook Form with Zod for forms.

Usage limitations: the README states that all integrations degrade gracefully when unconfigured, and only two environment variables are needed to boot, but full functionality requires setting up PostgreSQL, authentication secrets, and accounts and keys for each third-party service. Local development depends on Node.js 24+, pnpm 11+, and Docker (to run Postgres and Meilisearch). The repository provides a cross-platform pnpm init-app helper script to generate .env and rename the root package; this step is optional and does not overwrite an existing .env. The code is MIT licensed, but third-party assets such as demo images, fonts, and icons require separate license verification, and external services such as domains, hosting, databases, payments, or AI may incur additional charges.

Next.jsStarter

Is it right for your project?

Use Cases

  • Quickly scaffolding a complex Next.js application skeleton with authentication, payments, and background jobs
  • Managing a web application together with shared packages, validation schemas, and UI components in a monorepo
  • Starting a project that needs built-in internationalization, calendar, and recurring event capabilities
  • Referencing an engineering organization approach with tRPC reads + Server Actions writes, Drizzle ORM, and shared Zod validation

Suitable For

  • Developers or teams familiar with Next.js, TypeScript, and pnpm
  • Projects ready to start from a template and connect third-party service keys themselves
  • Medium-to-large web applications needing prebuilt common modules such as authentication, payments, email, uploads, and search
  • Teams willing to trim unneeded modules according to the documentation and accept a monorepo structure

Getting started & customization

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

  1. 1

    Requires Node.js 24+, pnpm 11+, and Docker (for local PostgreSQL and Meilisearch)

  2. 2

    Copy .env.example to .env and fill in database and authentication-related secrets

  3. 3

    Start local Postgres and Meilisearch via docker compose, then run pnpm install and database migrations

  4. 4

    Optionally run pnpm init-app --name <app-name> to generate .env and rename the root package; this script does not overwrite an existing .env

  5. 5

    Full functionality requires preparing accounts and keys for each third-party service; when unconfigured, the corresponding integrations degrade

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

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

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • 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

  • 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 additional charges.
  • Only two environment variables are needed to boot; unconfigured third-party integrations degrade gracefully, but full functionality still requires configuring each service's keys.
  • Local development requires Node.js 24+, pnpm 11+, and Docker (for local Postgres).
  • Local development requires starting PostgreSQL and Meilisearch services via docker compose.
  • The init-app script is optional and incremental; it only generates .env and does not overwrite existing files.
  • Using Claude Code for assisted development requires installing and invoking the ai-dev-kit /project-init skill.
  • The project accepts voluntary donations via PayPal; this is optional support and does not affect code usage.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

It boots with **two env vars** (every > integration degrades gracefully when unconfigured)

Original README

**Prerequisites:** Node.js **24+** (see [`.nvmrc`](.nvmrc)), pnpm **11+** (`corepack enable`), and Docker (for local Postgres).

Original README

docker compose -f docker/docker-compose.yml up -d # start Postgres + Meilisearch

Original README

`pnpm init-app` is **optional and additive** — it only seeds `.env` (never overwriting an existing one)

Original README

Developing with **Claude Code**? After `pnpm install`, hand **`/project-init`** your idea or your plan documents

Original README

you can [say thanks via PayPal](https://paypal.me/JohnRittelmeyerDev) (also behind the repo's Sponsor button)

Original README
https://github.com/jrittelmeyer/next-web-boilerplate/blob/main/LICENSEhttps://github.com/jrittelmeyer/next-web-boilerplate/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-05. 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
Partly documented · 71 / 100
Technologies
Next.js · React
Website type
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-10-05
Screenshot last checked
2026-10-05

No demo link is recorded. Use the repository instructions to evaluate the project locally; the screenshot alone cannot establish interactive behavior.

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.

Review declaration: [email protected] · 2026-10-06

Inspect the recorded source material

SHA-256: ebb144d2041a4e1e0fd8d562906758048119ef6bf3f100711c314b80401d91b6

2026-10-05T13:44:45.642Z

Source file / repository
# next-web-boilerplate

[![CI](https://github.com/jrittelmeyer/next-web-boilerplate/actions/workflows/ci.yml/badge.svg)](https://github.com/jrittelmeyer/next-web-boilerplate/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

A production-ready **Next.js 16** monorepo starter for complex web applications.
Every architectural decision is deliberate and documented — clone it, and skip the
first month of wiring up a serious app.

> **Status:** feature-complete and maintained. It boots with **two env vars** (every
> integration degrades gracefully when unconfigured), and every feature — auth with
> 2FA/passkeys/orgs, Stripe, email, uploads, search, jobs, i18n, observability, a full
> calendar with recurrence and invitations — has
> been **verified end-to-end against real services**, deploy included. What's inside
> and why: [`docs/FEATURES.md`](docs/FEATURES.md). The dated proof:
> [`docs/VERIFICATION.md`](docs/VERIFICATION.md).

## Screenshots

What you get on `git clone` — a themed public landing (light **and** dark) and the
gated app shell — captured from a real keyless run (just the two required env vars,
**no third-party keys**). Dark mode is class-based (`next-themes`, no flash).

<table>
  <tr>
    <td width="50%"><img src="docs/assets/landing-light.png" alt="Landing page in light mode"><br><sub>Landing · light</sub></td>
    <td width="50%"><img src="docs/assets/landing-dark.png" alt="Landing page in dark mode"><br><sub>Landing · dark</sub></td>
  </tr>
  <tr>
    <td width="50%"><img src="docs/assets/dashboard.png" alt="Signed-in dashboard shell"><br><sub>Signed-in dashboard shell</sub></td>
    <td width="50%"><img src="docs/assets/account.png" alt="Account profile and security settings"><br><sub>Account · profile &amp; security</sub></td>
  </tr>
</table>

> Browse the shared UI primitives live in the
> [hosted Storybook gallery](https://jrittelmeyer.github.io/next-web-boilerplate/).

## Stack

| Layer | Choice |
| --- | --- |
| Framework / Runtime | Next.js 16 (App Router, React 19) · Node.js 24 LTS |
| Language | TypeScript 6 (`strict`) |
| Monorepo | Turborepo + pnpm workspaces |
| Styling / UI | Tailwind CSS v4 · shadcn/ui (`@repo/ui`) |
| Database | PostgreSQL · Drizzle ORM |
| Auth | Better Auth (email/password + OAuth) |
| API | tRPC (reads) + Server Actions (writes) |
| State / Data | Zustand · TanStack Query v5 |
| Forms / Validation | React Hook Form · Zod (shared via `@repo/validators`) |
| Email | Resend · React Email (`@repo/email`) |
| Payments | Stripe (hosted Checkout + webhooks) |
| Observability | Sentry · BetterStack · PostHog |
| Uploads / Search | Uploadthing · Meilisearch |
| Scheduling | `@repo/calendar` — zero-dependency civil-time + RRULE recurrence engine; calendars, events, invitations, reminders |
| Tooling | Biome + ESLint (Next plugin) · Vitest · Playwright |
| Deployment | Docker (multi-stage, platform-agnostic) |

Full rationale for every choice in [`docs/context/STACK.md`](docs/context/STACK.md).

## Quickstart

**Prerequisites:** Node.js **24+** (see [`.nvmrc`](.nvmrc)), pnpm **11+** (`corepack enable`),
and Docker (for local Postgres).

```bash
cp .env.example .env                                # fill in secrets (DB + auth)
docker compose -f docker/docker-compose.yml up -d   # start Postgres + Meilisearch
pnpm install
pnpm --filter @repo/db db:migrate                   # apply migrations
pnpm dev                                            # http://localhost:3000
```

> On Windows, `cp` isn't a builtin — use `pnpm init-app` (below) or
> `Copy-Item .env.example .env`.

## Use this template

Start a new app from this boilerplate, then run the cross-platform init helper:

```bash
# GitHub: click "Use this template" → clone your new repo, OR grab a history-less copy:
npx degit jrittelmeyer/next-web-boilerplate my-app
cd my-app

pnpm install
pnpm init-app --name my-app   # seeds .env from .env.example, renames the root package
```

`pnpm init-app` is **optional and additive** — it only seeds `.env` (never overwriting
an existing one) and, with `--name`, renames the root `package.json` + README title.
Everything it does you can do by hand; nothing needs to be ripped out. After it runs,
follow the [Quickstart](#quickstart) from `docker compose … up` onward.

Developing with **Claude Code**? After `pnpm install`, hand **`/project-init`** your
idea or your plan documents — the preinstalled
[ai-dev-kit](https://github.com/jrittelmeyer/ai-dev-kit) inception skill runs
discovery (clarifying questions, gap analysis, a competitive
scan, a map of which shipped integrations your product actually needs), writes your
product brief, regenerates the status/backlog docs around *your* app (running
`init-app` for you along the way), and starts the build pipeline.

## Scripts

```bash
pnpm dev          # run all apps in dev
pnpm build        # build everything (Turbo-cached)
pnpm lint         # Biome + ESLint
pnpm type-check   # TypeScript across all packages
pnpm test         # Vitest
pnpm test:e2e     # Playwright
pnpm format       # Biome formatter
pnpm storybook    # @repo/ui component gallery → http://localhost:6006
pnpm clean        # per-package build artifacts (dist/.next) — NOT the Turbo cache
pnpm cache:prune  # evict oldest Turbo-cache entries to the size cap (default 20 GB)
```

> Browse the shared UI primitives online — the
> **[hosted Storybook gallery](https://jrittelmeyer.github.io/next-web-boilerplate/)**,
> republished from `@repo/ui` on every change (no clone or server needed).

## Layout

```text
apps/web/            — the Next.js application (src/ layout)
packages/db/         — Drizzle schema, migrations, client (@repo/db)
packages/auth/       — Better Auth config + session helpers (@repo/auth)
packages/calendar/   — calendar civil-time + recurrence engine (@repo/calendar)
packages/email/      — React Email templates + Resend client (@repo/email)
packages/jobs/       — pg-boss background-jobs worker + enqueue helper (@repo/jobs)
packages/observability/ — BetterStack dashboards-as-code, dev/CI-only (@repo/observability)
packages/ui/         — shadcn/ui shared components (@repo/ui)
packages/validators/ — Zod schemas shared client + server (@repo/validators)
tooling/             — shared eslint / typescript / tailwind configs
docs/                — PROJECT_STATUS + on-demand context docs
docker/              — Dockerfile + docker-compose for local dev
```

## Documentation

| Read this | For |
| --- | --- |
| [`docs/FEATURES.md`](docs/FEATURES.md) | **What's included — and why.** The full inventory with per-choice rationale. |
| [`docs/GETTING_STARTED.md`](docs/GETTING_STARTED.md) | **Using this template.** Clone → run → rename → remove what you don't need → production. |
| [`docs/plain-english-guide/`](docs/plain-english-guide/) | **The zero-jargon tour.** A 13-chapter plain-English explainer (no technical background needed) + a pitch deck — what this is, why each piece was chosen, and how it was built with AI agents. |
| [`AGENTS.md`](AGENTS.md) | **Agent-assisted development.** Onboarding for coding agents (and a great human overview): working agreements + the per-task context-doc index. |
| [`docs/MAINTENANCE.md`](docs/MAINTENANCE.md) | **Keeping it current.** Dependency policy, Renovate, upgrade runbook, watch items. |
| [`docs/context/`](docs/context/) | **Deep dives**, loaded on demand: `STACK`, `ARCHITECTURE`, `CONVENTIONS`, `DATABASE`, `AUTH`, `API`, `STATE`, `UI`, `I18N`, `TESTING`, `SERVICES`, `SECURITY`, `DEPLOYMENT`, `DECISIONS`, plus the `auth/`, `services/` and `calendar/` topic directories. |
| [`docs/PROJECT_STATUS.md`](docs/PROJECT_STATUS.md) · [`CHANGELOG.md`](CHANGELOG.md) | What's built + verified, and the release record. |

## Support this project

If this boilerplate saved you time, a ⭐ on the repo helps others find it, and you
can [say thanks via PayPal](https://paypal.me/JohnRittelmeyerDev) (also behind the
repo's Sponsor button). Issues and PRs are just as valuable — see below.

## Contributing

Issues and pull requests are welcome — see [`CONTRIBUTING.md`](CONTRIBUTING.md) for
setup, the quality gate, and conventions, and the [`Code of Conduct`](CODE_OF_CONDUCT.md).
Report security issues privately via the [security policy](.github/SECURITY.md).

## License

[MIT](LICENSE) — use it freely as a starting point for your own projects.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.