Это начальный шаблон для создания приложения SaaS с использованием Next.js с поддержкой аутентификации, интеграцией Stripe для платежей и панелью мониторинга для вошедших в систему пользователей.
Демо: https://next-saas-start.vercel.app/
В 2020 году я прочитал курс «React 2025», в котором показано, как создать SaaS-приложение с помощью Next.js, Stripe и других инструментов.
Что ж, уже почти 2025 год, и React 19 принес столько потрясающих новых функций, которые я даже не ожидал! Этот репозиторий представляет собой демонстрацию последних шаблонов React и Next.js. Эти шаблоны могут значительно упростить некоторые распространенные задачи при создании SaaS, такие как создание форм, взаимодействие с базой данных и многое другое.
Например, в React теперь есть встроенные перехватчики, такие как useActionState
для обработки ошибок встроенной формы и состояний ожидания. Действия сервера React могут заменить множество шаблонного кода, необходимого для вызова маршрута API со стороны клиента. И, наконец, хук use
React в сочетании с Next.js позволяет невероятно легко создать мощный хук useUser()
.
Мы можем получить пользователя из нашей базы данных Postgres в корневом макете, но не дожидаемся Promise
. Вместо этого мы пересылаем Promise
поставщику контекста React, где мы можем «развернуть» его и ожидать потоковых данных. Это означает, что мы можем получить лучшее из обоих миров: простой код для извлечения данных из нашей базы данных (например, getUser()
) и перехватчик React, который мы можем использовать в клиентских компонентах (например, useUser()
).
Интересный факт: большая часть пользовательского интерфейса этого приложения была создана с использованием v0? Более подробную информацию можно найти здесь, если вы хотите узнать об этом репо.
/
) с анимированным элементом терминала/pricing
), которая подключается к Stripe Checkout.git clone https://github.com/leerob/next-saas-starter
cd next-saas-starter
pnpm install
Используйте прилагаемый сценарий установки для создания файла .env
:
pnpm db:setup
Затем запустите миграцию базы данных и заполните базу данных пользователем и командой по умолчанию:
pnpm db:migrate
pnpm db:seed
Это создаст следующего пользователя и команду:
[email protected]
admin123
Конечно, вы также можете создавать новых пользователей через /sign-up
.
Наконец, запустите сервер разработки Next.js:
pnpm dev
Откройте http://localhost:3000 в своем браузере, чтобы увидеть приложение в действии.
При желании вы можете прослушивать веб-перехватчики Stripe локально через интерфейс командной строки для обработки событий изменения подписки:
stripe listen --forward-to localhost:3000/api/stripe/webhook
Чтобы протестировать платежи Stripe, используйте следующие данные тестовой карты:
4242 4242 4242 4242
Когда вы будете готовы развернуть свое SaaS-приложение в рабочей среде, выполните следующие действия:
https://yourdomain.com/api/stripe/webhook
).checkout.session.completed
, customer.subscription.updated
).В настройках проекта Vercel (или во время развертывания) добавьте все необходимые переменные среды. Обязательно обновите значения для производственной среды, в том числе:
BASE_URL
: установите это для своего производственного домена.STRIPE_SECRET_KEY
: используйте секретный ключ Stripe для производственной среды.STRIPE_WEBHOOK_SECRET
: используйте секрет веб-перехватчика из производственного веб-перехватчика, созданного на шаге 1.POSTGRES_URL
: установите URL-адрес вашей производственной базы данных.AUTH_SECRET
: установите случайную строку. openssl rand -base64 32
сгенерирует его. Хотя этот шаблон намеренно минимален и предназначен для использования в качестве учебного ресурса, в сообществе есть и другие платные версии, которые более полнофункциональны: