replica-backend
replica/architecture.md を読み込みます。マイグレーションとサーバーコードを作成し、replica/backend.md(以下のチェックリスト)を最新の状態に保ちます。
ルール
- 公式の公開APIのみ、ユーザー自身のキーを使用すること。 元のアプリのプライベートエンドポイントを呼び出したり、そのOAuthクライアントを再利用したり、プロキシを介してアクセスしたりしてはいけません。
- ユーザーがアカウントとキーを作成します。 エージェントはサービスにサインアップしたり、パスワード、カード番号、ライブキーを入力したりしません。ユーザーはStripe、Supabase、Resend、またはGoogle Cloudプロジェクトを作成し、
.env.localにキーを配置します。エージェントはすべての変数名と空の値を持つ.env.exampleを作成します。 - 最初はテストモード。 replica-deploy まではStripeのテストキーとテストカードを使用します。
認証
- 確認付きメールサインアップ、パスワードリセット、マジックリンク(元のアプリにあれば)。OAuth(Google、Apple)はユーザー自身の開発者アプリを使用。
- セッション:http-onlyのセキュアクッキー。全端末からサインアウト。
- reconマップにロールとチームがあれば:owner、admin、member。「このユーザーはこのレコードにこの操作ができるか」に答える関数を1つ用意。
- 実際に削除するアカウント削除機能。Appleはサインアップのあるアプリにこれを要求します。
データベース
architecture.mdからのマイグレーション。バージョン管理にチェックインされ、スクリプトで実行。- すべてのテーブルにアクセスルール:Supabaseでは行レベルセキュリティポリシー、またはすべてのクエリで呼び出される認可関数。テスト:2番目のユーザーは何も取得できないこと。
- 現実的なダミーデータ(実際の人物は含まない)を投入するシードスクリプト。
- バックアップ(ホストの日次バックアップ回数、有効になっているか確認)。
決済
- Stripe Checkout:プランへのサインアップ用。Customer Portal:変更とキャンセル用。カードフォームは作成しない。
- Webhook:署名を検証、イベントIDを保存、すべてのハンドラーをべき等にする(Stripeはリトライする)。
checkout.session.completed、customer.subscription.updated、customer.subscription.deleted、invoice.payment_failedを処理。 - サブスクリプションのステータスはデータベースに保持し、Webhookで更新され、アプリで読み取ります。クライアントを信頼してはいけません。
- キャンセルはワンクリック。解約が難しい請求はほとんどのアプリに対するトップの苦情であり、多くの地域で違法です。
メールとジョブ
- トランザクションメール:ResendまたはPostmark経由で、自身のドメインから送信。テンプレートは新規作成。
- 時間ベースの処理(リマインダー、ダイジェスト、同期、クリーンアップ)用のジョブ:リトライとデッドレターログ付き。時刻はUTCで保存し、ユーザーのタイムゾーンで表示。
連携
機能マトリックスにある各連携について:公式API、必要なOAuthスコープ(最小限)、プロバイダーのレビュープロセス、レート制限。CalendarのようなGoogleスコープは、公開前にGoogleのOAuth検証が必要で、これには数週間かかります。早めに開始し、backend.md にその旨を記載してください。
セキュリティチェックリスト
- シークレットは環境変数のみに保存、
.env*は.gitignoreに追加、クライアントバンドルには含めない - すべてのルートでサーバーサイドの入力検証(zodなど)
- すべての読み取りと書き込みで認可をチェック、2番目のユーザーでテスト
- 認証、サインアップ、メールやSMSを送信するすべての処理にレート制限
- Webhookは署名を検証
- アップロード:サイズとタイプの制限、別のドメインまたはバケットから配信
- URLやログにユーザーデータを含めない
- 依存関係の監査(
npm audit) - プライバシーポリシーにすべての処理事業者(Stripe、Resend、ホスト、分析)を記載
出力
動作する認証、データベース、テストモードの決済、メールと連携、.env.example、チェックリストにチェックが入った replica/backend.md、更新された機能マトリックス行。次:/replica-test。