type: feature-spec
status: draft
created: 2026-03-02
tags:
- spec
- phase2
機能仕様書
- ユーザーストーリー
- ストーリー1
- SNSクリエイターとして、プロフィールに貼る1つのリンクから自分の全商品・サービスを見せたい。なぜならフォロワーを複数のURLに誘導すると離脱率が上がり、販売機会を損失するから。
- ストーリー2
- デジタル商品販売者として、PDFや動画ファイルをアップロードして即座に販売・自動配信を開始したい。なぜならエンジニアに頼まず当日中に収益を得たいから。
- ストーリー3
- 個人コーチとして、カレンダーを公開してコーチングセッションの予約と決済を同時に受け付けたい。なぜならCalendly+Stripeの二重管理を排除してセッション準備に集中したいから。
- ストーリー1
- 機能一覧
- 必須(MVP)
- 機能1: リンクインバイオ公開ストアページ(/[username])
- 対応ストーリー: 1
- 機能2: デジタル商品登録・ファイルアップロード(PDF/ZIP/MP4・最大100MB)
- 対応ストーリー: 2
- 機能3: Stripe Checkoutによる商品購入・ダウンロードURL自動メール配信
- 対応ストーリー: 2
- 機能4: クリエイター認証(メール登録・ログイン)とダッシュボード
- 対応ストーリー: 1, 2, 3
- 機能1: リンクインバイオ公開ストアページ(/[username])
- 重要
- 機能5: 売上・注文履歴ダッシュボード(累計売上・注文件数・直近10件)
- 対応ストーリー: 2
- 機能6: ストアページのテーマカラー・プロフィールカスタマイズ(6色プリセット・アバター画像・bio)
- 対応ストーリー: 1
- 機能7: サービス自体の月額サブスクリプション課金(スタータープラン¥2,980/月)
- 対応ストーリー: 1, 2
- 機能5: 売上・注文履歴ダッシュボード(累計売上・注文件数・直近10件)
- あれば良い
- 機能8: コーチング予約カレンダー(日時選択+Stripe決済一体型)
- 対応ストーリー: 3
- 機能9: メールアドレス収集フォーム・リードマグネット(無料PDF配布と引き換えにメール取得)
- 対応ストーリー: 1
- 機能8: コーチング予約カレンダー(日時選択+Stripe決済一体型)
- 必須(MVP)
- 機能詳細
- 機能1: リンクインバイオ公開ストアページ
- 画面
- 公開ストアURL: /[username](SSRレンダリング・OGP対応)
- ダッシュボード内ストアエディタ: /dashboard/store
- 操作
- プロフィール画像・表示名・bio文(最大160文字)の編集と即時プレビュー
- 商品ブロックの表示/非表示切替(トグルスイッチ)
- テーマカラー選択(6色プリセット: ブラック・ホワイト・パープル・ピンク・グリーン・ブルー)
- ストアURLのワンクリックコピーボタン
- データ
- usersテーブル: id(uuid), username(text・unique), display_name(text), bio(text・max160), avatar_url(text), theme_color(text・default '#000000'), stripe_account_id(text・nullable), created_at(timestamptz)
- productsテーブル: id(uuid), user_id(uuid・FK), title(text), description(text), price_jpy(int), file_url(text), file_name(text), file_size_mb(numeric), is_published(bool・default false), created_at(timestamptz)
- 画面
- 機能2: デジタル商品登録・ファイルアップロード
- 画面
- 商品追加モーダル: タイトル・説明・価格(円)入力フォーム+ファイルドロップゾーン
- 商品管理一覧: /dashboard/products(公開状態・価格・タイトル一覧)
- 操作
- PDF/ZIP/MP4をドラッグ&ドロップ or クリックでSupabase Storageにアップロード(進捗バー表示)
- 価格を日本円(¥100〜¥1,000,000)で設定
- 公開/非公開トグルで即座にストアへの表示を切替
- 商品の削除(確認ダイアログ表示後に実行)
- データ
- Supabase Storage バケット名: digital-products(プライベート設定・署名付きURL経由でのみアクセス可)
- ファイルパス形式: {user_id}/{product_id}/{filename}
- 画面
- 機能3: Stripe Checkout購入・ダウンロードURL配信
- 画面
- 商品詳細モーダル(公開ストアから「購入する」ボタン押下で表示)
- Stripe Checkoutページ(Stripeホスト型・カード決済対応)
- 購入完了サンクスページ: /thank-you
- ダウンロードページ: /download/[token]
- 操作
- 「購入する」→Stripe Checkoutにリダイレクト→決済完了→Webhookでorders更新→ダウンロードURLをResendでメール送信→/download/[token]でファイルDL
- /download/[token]: 有効期限72時間・DL上限3回・超過時に「リンクが無効です。購入者サポートへご連絡ください」を表示
- データ
- ordersテーブル: id(uuid), product_id(uuid・FK), buyer_email(text), stripe_payment_intent_id(text・unique), download_token(uuid・unique), download_count(int・default 0), expires_at(timestamptz), created_at(timestamptz)
- Stripe Webhookイベント: checkout.session.completed
- 画面
- 機能1: リンクインバイオ公開ストアページ