認証
2 providers
Admin OS / Record OS
認証、決済、クラブ掲載、イベント、監査ログをひとつのRecord OSとして見るための管理画面です。 外部プロバイダ接続前でも、どのレコードがどの部署の責任かを追えます。
Platform readiness
Clubs: 38
Events: 268
Database: 19
Audit log: 4
認証
2 providers
Payment queue
2 sessions
Database
19 tables
Audit log
4 rows
Webhook audit
8 events
Email readiness
5 drafts
Analytics
provider_not_connected
Host draft review
1 blocked
Host draft review
誰でもランクラブを開催できる入口を作りつつ、公開、メール、push、掲載変更は owner/source/safety reviewが終わるまで止めます。
Drafts
1
Blocked
1
Publish
false
Email / push
false / false
Retention loop
参加後の雰囲気、ペース、入りやすさ、次週の好みだけを選択式で見ます。 No health data. No email send. No external DB write.
Mode: read_only_retention_loop
Feedback: 2
Next week: 2
Email: false
External DB: false
post_run_feedback / local_demo_only
Return: would_return. Next: same_vibe.
post_run_feedback / local_demo_only
Return: try_different_run. Next: more_social.
next_week_recommendation / next_week_recommendation_ready
The last run felt socially easy and the pace was comfortable, so keep the same weekly ritual.
next_week_recommendation / next_week_recommendation_ready
The last run was comfortable but too quiet, so try a more social weekend option.
operations
会員登録、認証、設定の親レコード
email_label_only
database_table
operations
email_magic_link / google_oauth / apple_oauth の接続管理
email_label_only
external_provider
commerce
Free Explorer、Social Plus、Host Pro、Brand Partnerの料金/権限定義
none
database_table
commerce
有料会員、ホスト、スポンサーの契約状態
contact_label
database_table
commerce
Checkout作成、成功/キャンセル、入金確認
contact_label
external_provider
commerce
Stripe Checkout/Subscription/Refundイベントの署名検証、冪等性、処理状態
contact_label
external_provider
trust_safety
決済Webhookがmembership/payment状態をどう変えたかの監査証跡
contact_label
database_table
community
クラブ掲載、言語信頼度、参加導線、ソース証跡
none
database_table
community
今週参加できるラン予定、日時、集合場所、初参加文脈
none
database_table
community
Strava風の地図発見に使う緯度経度、日時ラベル、クラブ/イベント導線
none
database_table
community
個人/クラブホストのイベント下書きをowner/source/safety review完了までlocal_draft_onlyで止める内部レビューキュー
contact_label
database_table
community
membership_platformやrace_operatorを通常ランクラブと分けて管理する隣接オペレーター台帳
none
database_table
community
operatorごとの公式ソース確認、evidence status、membership/races分岐ゲート
none
database_table
trust_safety
通報、掲載修正、Owner claim、takedown SLAの内部レビューキュー
contact_label
database_table
commerce
On、Nike、adidas、ASICSなどの公式リンク、比較軸、affiliate-ready状態
none
database_table
commerce
ジョギング、ランニング、本格トレーニングなど用途別のおすすめ文脈
none
database_table
commerce
購入場所、試着、ランステ、スポンサー候補の掲載管理
none
database_table
growth
Weekly Run Decisions、参加CTA、保存、ギア/店舗クリック、ホスト開始、ニュースレター開始の集計
none
external_provider
trust_safety
管理操作、決済状態、掲載更新の監査
contact_label
database_table
P1 / auth_review
Operations / waiting_provider / before beta invite
P0 / payment_queue
Commerce / waiting_provider / before paid beta
P0 / payment_queue
Commerce / in_progress / before any real Stripe Checkout charge
P0 / record_ops
CTO / todo / before public launch
P1 / trust_safety
Trust/Safety / in_progress / before club owner onboarding
P0 / trust_safety
Trust/Safety / in_progress / before public growth and self-serve host posting
auth_session_created
Email Magic link session opened for demo member.
checkout_session_created
stripe_checkout readiness record created. No external charge was attempted.
club_record_updated
Marked as managed record for future afterRunPlan and firstTimerMood fields.
stripe_webhook_received
Webhook contract row added. signature_verification_required and idempotency_key are required before any fulfillment.
Webhook audit
実課金前に、署名検証、idempotency、支払い状態遷移、監査ログをひと続きで確認します。 現在は`provider_not_connected`で、POSTは`write_disabled`です。
checkout.session.completed
stripe_webhook_processed
checkout.session.async_payment_succeeded
stripe_webhook_processed
checkout.session.async_payment_failed
stripe_webhook_failed
checkout.session.expired
stripe_webhook_processed
invoice.paid
stripe_webhook_processed
invoice.payment_failed
stripe_webhook_failed
customer.subscription.deleted
stripe_webhook_processed
charge.refunded
payment_refund_recorded
ready → paid
checkout.session.completed
If fulfillment fails, keep subscription in manual_review and show it in Payment queue.
opened → paid
checkout.session.async_payment_succeeded
If the session cannot be matched, record a failed webhook row and do not unlock paid features.
opened → expired
checkout.session.async_payment_failed
Offer a new Checkout session only after the user explicitly retries.
ready → expired
checkout.session.expired
Keep the plan visible but require a new Checkout session.
trialing → active
invoice.paid
If invoice cannot be matched, leave subscription in manual_review.
active → past_due
invoice.payment_failed
Keep access policy conservative until the payment provider confirms recovery.
active → cancelled
customer.subscription.deleted
Manually review sponsor/host listings that depend on the paid plan.
paid → cancelled
charge.refunded
Send the row to Trust/Safety before hiding historical receipts.
Analytics consent
Recommended provider: Plausible Analytics. Current mode is provider_not_connected; no external analytics script is loaded. Existing `data-analytics-event` markers stay provider-neutral until privacy/legal approval.
docs/2026-06-29_analytics-provider-consent-decision.md
Provider / stance
aggregate_measurement_without_cookies_until_provider_review. provider_not_connected until legal, DPA, domain, and script review are done.
Allowed
Blocked
No cookie, no session replay, no autocapture, no email/name/free_text/full_url in analytics.
Plausible Analytics: recommended_for_beta
PostHog: fallback
Cloudflare Web Analytics: defer
Vercel Web Analytics: defer
Email readiness
Magic link、Weekly Run Guide、Host schedule digestを送信前にレビューします。 現在はprovider_not_connectedで、全テンプレートはdraft_no_sendです。
magic_link_sign_in / ja
Auth.js email provider actionに渡す前の文面レビュー用。provider_not_connectedの間は送信しない。
draft_no_send
weekly_run_guide / ja
consent ledgerでweekly_recommendationが許可された会員だけが対象。現在はテンプレート確認のみ。
draft_no_send
host_schedule_digest / ja
ホスト連絡同意とowner verificationが揃うまで送信しない。
provider_not_connected
host_draft_receipt / ja
Host draft receipt is a review-only template. It mirrors received_locally_pending_review and expectedReviewWindow, but no email send happens until Auth.js + Resend, consent, and human approval are connected.
provider_not_connected
payment_update / ja
Stripe webhook auditと特商法表示が揃うまで送信しない。
provider_not_connected
Notification outbox
host_draft_receipt、host_schedule_digest、weekly_run_guideの通知予定を provider_not_connectedのまま確認します。No provider queue write / No email send / No push send。
Mode: read_only_notification_outbox_preview
canSendEmail: false
canSendPush: false
canWriteProviderQueue: false
host_draft_receipt / email
Review owner/source/safety evidence, consent, and sender domain before any provider queue is connected.
blocked_provider_not_connected / provider_not_connected
host_schedule_digest / email
Keep the row in read_only_notification_outbox_preview and prepare provider review notes.
blocked_consent_or_review_required / provider_not_connected
weekly_run_guide / push
Confirm consent ledger, source freshness, and notification provider policy before any real send path.
queued_preview_only / provider_not_connected
Auth.js / auth / ready_to_configure
Surface: /account
Supabase / database / blocked_external_account
Surface: /admin
Stripe Checkout / payment / blocked_external_account
Surface: /checkout
Resend / email / not_started
Surface: /account
Neon / database / not_started
Surface: /admin
Plausible Analytics / analytics / blocked_external_account
Surface: /admin
users / operations
/account / email_label_only
1
consent_ledger / operations
/account / email_label_only
3
clubs / community
/admin/clubs / none
27
events / community
/admin/events / none
32
host_event_draft_reviews / community
/admin/events / contact_label
1
operators / community
/admin/operators / none
2
trust_safety_cases / trust_safety
/admin/trust-safety / contact_label
4
payment_checkout_sessions / commerce
/checkout / contact_label
2
stripe_webhook_events / commerce
/admin / contact_label
8
Provider decision
Auth.js + Resend、Supabase Postgres、Stripe Checkoutをbetaの第一候補にします。 外部アカウント作成、シークレット保存、実送信、実課金は人間承認まで行いません。
docs/2026-06-29_provider-selection-decision.md
auth / recommended_for_beta
Next.js内でMagic link、Google/Apple OAuth、セッション、DB adapterを制御しやすい。Supabase Authへの全面ロックインを避ける。
database / recommended_for_beta
Postgres、Storage、Row Level Security、管理UIをまとめて扱えるため、club/event/member/payment recordsの初期運用に向く。
payment / recommended_for_beta
Social Plus、Host Pro、Brand Partnerのサブスク/一回払い導線を最小実装しやすい。Webhook監査と特商法表示が接続条件。
email / recommended_for_beta
React Email/開発者体験が強く、Magic link、週次ランガイド、ホスト通知のテンプレートをコード管理しやすい。
analytics / recommended_for_beta
Public betaでは軽量な集計、no_cookie、no_session_replay、no_autocaptureを優先する。既存のdata-analytics-eventをaggregate conversionとして読む方針に合う。
Auth.js: recommended_for_beta
Supabase Auth: fallback
Supabase Postgres: recommended_for_beta
Neon: fallback
Stripe Checkout: recommended_for_beta
Resend: recommended_for_beta
Postmark: fallback
Plausible Analytics: recommended_for_beta
PostHog: fallback
Cloudflare Web Analytics: defer
Vercel Web Analytics: defer
Next provider setup
Stripe Checkout、OAuth、メール送信、DB本番化は外部アカウントとシークレットが必要です。 ここでは送信せず、接続前のレコード設計と運用キューまでを管理します。