概要
Next.js 15、React 19、Supabase、Drizzle ORM、および Dodo Payments を使用した、プロダクション対応のサブスクリプションボイラープレートです。Google OAuth、サブスクリプションチェックアウト、Webhook ハンドリング、データベーススキーマ、および基本的なダッシュボードが付属しています。既存のアプリのルートハンドラーのみが必要な場合は、専用のアダプターを参照してください: Next.js アダプター と Express アダプター。
前提条件
- Node.js 18+ (または Bun 1.0+)
- Supabase プロジェクト (URL、Anon キー、サービスロールキー、データベース URL)
- Dodo Payments アカウント (API キー、Webhook シークレット)
- Google Cloud OAuth クライアント (クライアント ID とシークレット)
クイックスタート
Supabase プロジェクトを作成
Supabase プロジェクトを作成し、以下をコピーします:
- NEXT_PUBLIC_SUPABASE_URL
- NEXT_PUBLIC_SUPABASE_ANON_KEY
- SUPABASE_SERVICE_ROLE_KEY
- DATABASE_URL (接続文字列)
Google OAuthの設定
リダイレクトURIをGoogle Cloudで
https://[your-project-ref].supabase.co/auth/v1/callbackに設定し、次にSupabase AuthでクライアントIDとシークレットを使用してGoogleプロバイダーを有効にします。開発サーバーを実行
含まれているもの
- Supabaseによる認証(Google OAuth設定済み)
- Dodo Paymentsによるサブスクリプションチェックアウト
- Webhook用のSupabase Edge Function (
dodo-webhook) - Drizzle ORMスキーマとマイグレーション
- 請求書、サブスクリプションステータス、プラン機能を含むダッシュボード
主要なファイルとパス
- エッジ関数
- Next.js ルート
- データベース (Drizzle)
環境変数
Supabase
Supabase
Dodo Payments
Dodo Payments
Google OAuth
Google OAuth
検証とトラブルシューティング
Webhook署名無効 (401)
Webhook署名無効 (401)
DODO_WEBHOOK_SECRETがDodoダッシュボードの値と一致していることを確認してください- 最新の
dodo-webhook関数をデプロイしたことを確認してください - 関数内のヘッダー名が正しいことを確認してください(Dodo-Signature)
データベースプッシュ失敗
データベースプッシュ失敗
DATABASE_URLの構文とSupabaseネットワークの出口を確認してください- プロジェクト作成後、最初のプッシュまでに約2〜3分待ってください
OAuthリダイレクト不一致
OAuthリダイレクト不一致
- リダイレクトURIは
https://[ref].supabase.co/auth/v1/callbackである必要があります - Google CloudとSupabase Authプロバイダーで同じであることを確認してください
Supabase と Dodo Payments で構築された動作するサブスクリプション SaaS ができました。
元のリポジトリと詳細な手順: dodo-supabase-subscription-starter。