Ini adalah templat awal untuk membangun aplikasi SaaS menggunakan Next.js dengan dukungan untuk autentikasi, integrasi Stripe untuk pembayaran, dan dasbor untuk pengguna yang masuk.
Demo: https://next-saas-start.vercel.app/
Pada tahun 2020, saya membuat kursus bernama "React 2025" yang menunjukkan cara membangun aplikasi SaaS dengan Next.js, Stripe, dan alat lainnya.
Ya, ini hampir tahun 2025 dan React 19 telah menghadirkan begitu banyak fitur baru yang menakjubkan yang tidak saya duga! Repo ini adalah demonstrasi pola React dan Next.js terbaru. Pola ini dapat secara drastis menyederhanakan beberapa tugas umum dalam membangun SaaS Anda, seperti membuat formulir, berkomunikasi dengan database Anda, dan banyak lagi.
Misalnya, React sekarang memiliki hook bawaan seperti useActionState
untuk menangani kesalahan formulir inline dan status tertunda. React Server Actions dapat menggantikan banyak kode boilerplate yang diperlukan untuk memanggil Rute API dari sisi klien. Dan terakhir, use
hook React yang dikombinasikan dengan Next.js membuatnya sangat mudah untuk membuat useUser()
hook yang kuat.
Kami dapat mengambil pengguna dari database Postgres kami di tata letak root, tetapi tidak dapat menunggu Promise
. Sebagai gantinya, kami meneruskan Promise
tersebut ke penyedia konteks React, di mana kami dapat "membukanya" dan menunggu data dialirkan. Ini berarti kita bisa mendapatkan yang terbaik dari kedua dunia: kode mudah untuk mengambil data dari database kita (misalnya getUser()
) dan React hook yang dapat kita gunakan di Komponen Klien (misalnya useUser()
).
Fakta menarik: sebagian besar UI untuk aplikasi ini dibuat dengan v0? Detail lebih lanjut di sini jika Anda ingin mempelajari tentang repo ini.
/
) dengan elemen Terminal animasi/pricing
) yang terhubung ke Stripe Checkoutgit clone https://github.com/leerob/next-saas-starter
cd next-saas-starter
pnpm install
Gunakan skrip pengaturan yang disertakan untuk membuat file .env
Anda:
pnpm db:setup
Kemudian, jalankan migrasi database dan masukkan database dengan pengguna dan tim default:
pnpm db:migrate
pnpm db:seed
Ini akan membuat pengguna dan tim berikut:
[email protected]
admin123
Anda tentu saja dapat membuat pengguna baru juga melalui /sign-up
.
Terakhir, jalankan server pengembangan Next.js:
pnpm dev
Buka http://localhost:3000 di browser Anda untuk melihat aplikasi beraksi.
Secara opsional, Anda dapat mendengarkan webhook Stripe secara lokal melalui CLI mereka untuk menangani peristiwa perubahan langganan:
stripe listen --forward-to localhost:3000/api/stripe/webhook
Untuk menguji pembayaran Stripe, gunakan detail kartu tes berikut:
4242 4242 4242 4242
Saat Anda siap untuk menyebarkan aplikasi SaaS ke produksi, ikuti langkah-langkah berikut:
https://yourdomain.com/api/stripe/webhook
).checkout.session.completed
, customer.subscription.updated
).Dalam pengaturan proyek Vercel Anda (atau selama penerapan), tambahkan semua variabel lingkungan yang diperlukan. Pastikan untuk memperbarui nilai lingkungan produksi, termasuk:
BASE_URL
: Setel ini ke domain produksi Anda.STRIPE_SECRET_KEY
: Gunakan kunci rahasia Stripe Anda untuk lingkungan produksi.STRIPE_WEBHOOK_SECRET
: Gunakan rahasia webhook dari webhook produksi yang Anda buat pada langkah 1.POSTGRES_URL
: Setel ini ke URL database produksi Anda.AUTH_SECRET
: Setel ini ke string acak. openssl rand -base64 32
akan menghasilkan satu. Meskipun templat ini sengaja dibuat minimal dan untuk digunakan sebagai sumber belajar, ada versi berbayar lain di komunitas yang memiliki fitur lebih lengkap: