Next.jsReactSaaSStarter

nextjs-saas-starter-kit — Next.js SaaS Template

By rizkraf

A SaaS starter template built on the Next.js App Router, with built-in authentication, organization management, dashboard, and Midtrans payment integration.

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-01View source

What stands out

A quick read of the recorded project description.

01

Built with the Next.js App Router and TypeScript, with components organized into directories such as app, components, lib, and hooks

02

Authentication is based on Better Auth, supports email/password and Google OAuth, and protects dashboard routes via middleware

03

Organization management supports creating and switching organizations, managing members and roles, and includes a basic implementation of member invitations

04

The dashboard includes a project CRUD example, with data fetching using TanStack React Query, loading states, and optimistic updates

05

Billing integrates Midtrans, including plan selection, subscription status, transaction history, and a webhook handler

06

Uses Prisma to operate PostgreSQL, React Hook Form and Zod for forms and validation, and Biome for code checking

Template Details

This is an open-source starter template for SaaS products, built with the Next.js App Router and TypeScript, with a UI based on Tailwind CSS and shadcn/ui, and icons from HugeIcons. The README states that its purpose is to accelerate SaaS application development, and it already includes common modules such as authentication, organization management, dashboard, and payments.

At the feature level, authentication is provided by Better Auth, supports email/password login and Google OAuth, and protects dashboard routes via middleware. Organization management supports creating and switching organizations, managing members and roles, and a basic implementation of member invitations. The dashboard provides a responsive sidebar layout and includes a project CRUD example, with data fetching using TanStack React Query, loading states, and optimistic updates. The billing module integrates Midtrans, including plan selection, subscription status, transaction history, and a webhook handler for automatically updating payment status. The data layer uses Prisma, forms and validation use React Hook Form and Zod respectively, and code checking uses Biome.

Usage limitations: the template depends on a PostgreSQL database and requires you to configure keys for Better Auth, Google OAuth, and Midtrans yourself; the webhook requires setting the notification URL in the Midtrans dashboard, and local testing is best done with a tunneling tool. The README does not provide deployment, performance, or production-environment verification instructions, so before actual use you should verify dependency versions and external service terms yourself.

Next.jsSaaSStarter

Is it right for your project?

Use Cases

  • Needing to quickly build a SaaS application skeleton with login, organizations, and subscription billing
  • Wanting to reference how authentication, dashboard, and payment modules are organized under the Next.js App Router
  • Projects targeting the Indonesian market and planning to use Midtrans as the payment channel
  • Needing a starting point for data models and migrations based on PostgreSQL and Prisma

Suitable For

  • Developers familiar with Next.js and TypeScript who want to reduce work on building foundational modules
  • SaaS projects that need email/password and Google OAuth login
  • Teams planning to integrate Midtrans and handle subscriptions and transaction records
  • Projects using PostgreSQL and accepting Prisma as the ORM

Getting started & customization

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

  1. 1

    Requires Node.js 18+ and a PostgreSQL database; Bun is recommended as the package manager, but npm, yarn, or pnpm can also be used

  2. 2

    Copy .env.example to .env and fill in DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and the Midtrans keys

  3. 3

    In the Midtrans dashboard, point the notification URL to /api/billing/webhook; for local testing, a cloudflared tunnel can be used

  4. 4

    Start the database container with bun run db:start, then push the Prisma schema with bun run db:push; optionally run bun run db:seed to populate initial data

  5. 5

    Run bun run dev to start the local development server, accessible by default at http://localhost:3000

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 the code of that version and does not mean external services or third-party assets are free.

Must comply with when using

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

Additional costs & items to verify

  • Using the payment feature requires registering a Midtrans account and obtaining a Server Key and Client Key, which is an external service dependency.
  • Google OAuth login requires applying for and configuring a Google client ID and secret yourself, which is an external service dependency.
  • The template depends on a PostgreSQL database, and you must prepare and configure DATABASE_URL yourself for it to run.
  • Automatic payment status updates require configuring the webhook notification URL in the Midtrans dashboard, and local testing requires a tunneling tool.
  • 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

Daftar akun di [Midtrans Dashboard](https://dashboard.midtrans.com/).

Original README

GOOGLE_CLIENT_ID` & `GOOGLE_CLIENT_SECRET

Original README

Database PostgreSQL

Original README

atur **Notification URL** di dashboard Midtrans

Original README
https://github.com/rizkraf/nextjs-saas-starter-kit/blob/main/LICENSEhttps://github.com/rizkraf/nextjs-saas-starter-kit/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-01. 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 · 92 / 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-05-12
Screenshot last checked
2026-10-01

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: 53832e6546790c25706b0838a5ea03094055d97143916903e47dd49c07555b9d

2026-10-01T01:22:40.820Z

Source file / repository
# Next.js SaaS Starter Kit Indonesia

Boilerplate SaaS lengkap dan siap produksi yang dibangun dengan teknologi modern. Dibuat untuk mempercepat proses development aplikasi SaaS Anda dengan fitur-fitur utama seperti autentikasi, manajemen organisasi, sistem pembayaran, dan tampilan dashboard yang modern.

![Pratinjau Dashboard](/public/dashboard-preview.png)

## 🚀 Tech Stack

- **Framework:** [Next.js 15](https://nextjs.org/) (App Router)
- **Bahasa:** [TypeScript](https://www.typescriptlang.org/)
- **Styling:** [Tailwind CSS](https://tailwindcss.com/)
- **UI Components:** [shadcn/ui](https://ui.shadcn.com/)
- **Icons:** [HugeIcons](https://hugeicons.com/)
- **Autentikasi:** [Better Auth](https://www.better-auth.com/)
- **ORM:** [Prisma](https://www.prisma.io/)
- **Data Fetching:** [TanStack React Query](https://tanstack.com/query/latest)
- **Pembayaran:** [Midtrans](https://midtrans.com/) (Sudah terintegrasi)
- **Validasi:** [Zod](https://zod.dev/)
- **Forms:** [React Hook Form](https://react-hook-form.com/)

## ✨ Fitur Utama

- **🔐 Sistem Autentikasi**

  - Login via Email/Password & Google OAuth
  - Proteksi route dashboard menggunakan Middleware
  - Manajemen sesi pengguna via Better Auth

- **🏢 Manajemen Organisasi**

  - Membuat dan berpindah antar organisasi dengan mudah
  - Kelola anggota tim dan hak akses (role)
  - Sistem undangan member (siap dikembangkan lebih lanjut)

- **📊 Modern Dashboard**

  - Layout Sidebar yang responsif
  - Manajemen proyek dengan fitur CRUD lengkap (Create, Read, Update, Delete)
  - UI interaktif dengan loading state dan optimistic updates menggunakan React Query

- **💳 Billing & Subscription**

  - Integrasi pembayaran menggunakan Midtrans
  - Manajemen langganan (Pilihan Paket, Status Langganan)
  - Riwayat transaksi lengkap
  - Webhook handler untuk update status pembayaran otomatis

- **🛠️ Developer Experience**
  - Full Type-safe
  - Konfigurasi Biome yang rapi untuk linting kode
  - Arsitektur komponen yang modular dan mudah dikembangkan

## 📦 Panduan Awal

### Persyaratan Sistem

- Node.js (v18+)
- Bun (Rekomendasi) atau npm/yarn/pnpm
- Database PostgreSQL

### Instalasi

1. **Clone repository**

   ```bash
   git clone https://github.com/rizkraf/nextjs-saas-starter-kit.git
   cd nextjs-saas-starter-kit
   ```

2. **Install dependencies**

   ```bash
   bun install
   ```

3. **Konfigurasi Environment**
   Salin file contoh environment dan sesuaikan dengan key Anda:

   ```bash
   cp .env.example .env
   ```

   Isi variabel environment berikut:

   - `DATABASE_URL`
   - `BETTER_AUTH_SECRET` & `BETTER_AUTH_URL`
   - `GOOGLE_CLIENT_ID` & `GOOGLE_CLIENT_SECRET`
   - `MIDTRANS_SERVER_KEY`, `MIDTRANS_CLIENT_KEY`

4. **Konfigurasi Midtrans (Pembayaran)**

   - Daftar akun di [Midtrans Dashboard](https://dashboard.midtrans.com/).
   - Ambil **Server Key** dan **Client Key** dari menu `Settings > Access Keys`.
   - Update `.env`:
     ```env
     MIDTRANS_SERVER_KEY=...
     MIDTRANS_CLIENT_KEY=...
     MIDTRANS_IS_PRODUCTION=false # Set true untuk mode produksi
     ```
   - **Setup Webhook (Penting):**
     Agar status pembayaran terupdate otomatis, atur **Notification URL** di dashboard Midtrans ke:
     `https://domain-anda.com/api/billing/webhook`
     _(Gunakan Cloudflare Tunnel untuk testing lokal)_
     ```bash
     npx cloudflared tunnel --url http://localhost:3000
     ```

5. **Setup Database**
   Pastikan Docker sudah berjalan, lalu jalankan perintah berikut untuk memulai container database:

   ```bash
   bun run db:start
   ```

   Setelah database berjalan, push schema Prisma:

   ```bash
   bun run db:push
   ```

   (Opsional) Isi database dengan data awal (seeding):

   ```bash
   bun run db:seed
   ```

6. **Jalankan Project**
   Jalankan server development lokal:

   ```bash
   bun run dev
   ```

   Buka [http://localhost:3000](http://localhost:3000) untuk melihat hasilnya.

## 🗂️ Struktur Folder

```
src/
├── app/              # Halaman Next.js App Router & API Routes
│   ├── (auth)/       # Halaman Autentikasi (Sign in, Sign up)
│   ├── (dashboard)/  # Halaman Dashboard (Perlu login)
│   └── api/          # Backend API Endpoints
├── components/       # UI Components reusable
│   ├── ui/           # Komponen dasar shadcn/ui
│   ├── dashboard/    # Komponen khusus Dashboard
│   └── landing/      # Komponen Landing Page
├── lib/              # Utilities, auth client, query client
├── hooks/            # Custom React Hooks
└── wrapper/          # Providers (QueryProvider, dll.)
```

## 📜 Lisensi

Didistribusikan di bawah Lisensi MIT. Lihat file `LICENSE` untuk informasi lebih lanjut.

## 🤝 Kontribusi

Kontribusi sangat terbuka! Jangan ragu untuk membuat Pull Request.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.