運用・デプロイ
仕様サマリー(1枚・社内配布)
v0.1 系の要約。PDF 印刷向け。
Swipe LP 仕様サマリー(社内配布・1枚)
版: v0.1 系仕様の要約 日付: 2026-04-16 正本: リポジトリ docs/spec/*.md(条文・数値は必ず各ファイルを参照)
プロダクト
スマホ向けスワイプ型LPを管理画面で作成し、埋め込みJSまたはZIP(相対パス完結)で配信。単一のLP定義JSONをプレビュー・埋め込み・ZIPが共有。計測はステップ単位・匿名 sessionId。Workspace 配下に LP・資産・計測キーを紐づけ。課金フローはMVPでは未実装(フィールドのみ)。AIは方針のみ(ai-features.md)。
技術スタック(要点)
| 領域 | 内容 |
|---|---|
| 構成 | npm workspaces:apps/web(Next 14)· apps/api(FastAPI)· packages/viewer |
| データ | PostgreSQL 16 · S3互換(開発 MinIO) |
| 通信 | ブラウザ→Next 同一オリジン、/api/* は rewrite で API。公開 /v1/public/* は FastAPI |
LP定義 JSON(v0.1)
ルート: schemaVersion · id(公開LP ID)· revision · meta(title 必須)· swipe(direction vertical/horizontal · viewport default/fullscreen)· steps[](1件以上)
ステップ: id(公開後も不変)· type image/video · media(src 相対)· cta(ステップごと)· hotspots[](正規化矩形 0–1)
詳細: lp-definition-v0.1.md
配信
| 方式 | 要点 |
|---|---|
| 埋め込み | runtime.js · コンテナに data-swipe-lp-id · data-swipe-lp-api-base · 計測時 data-swipe-lp-public-key · GET {apiBase}/v1/public/lp/{lpId} |
| ホスト型公開URL | 当サーバが直接返す閲覧専用ページ。https://{site-origin}/p/{publicId} · 200/404/410 · SSR で OG/Twitter メタ生成 · live 計測キーがあれば計測可 |
| ZIP | ルートに index.html · lp.json · swipe-lp.runtime.v0.js · assets/ · 任意 swipe-lp.config.json(surface: zip・apiBase・キー) |
| プレビュー | surface: preview(管理画面。詳細は embed 仕様) |
PC 表示の既定: LP 定義 swipe.desktopFrame の既定は letterbox(中央寄せ+左右帯、コンテンツ最大幅 desktopMaxWidth 既定 420px)。広い画面でも縦長 LP のレイアウト崩れを防ぐ。none を指定すると全幅。
詳細: embed-and-zip-v0.1.md
公開 HTTP API(閲覧者・ランタイム)
| メソッド | パス | 備考 |
|---|---|---|
GET | /v1/public/lp/{lpId} | 公開定義。404/410 等。認証不要 |
GET | /v1/public/lp-preview/{token} | 仮公開(preview-share で発行したトークン) |
POST | /v1/analytics/events | バッチ計測。X-SwipeLP-Key 必須。events 1〜100件 |
計測キー: pk_live_* / pk_test_* 形式(opaque)· クライアント平文 · サーバはハッシュ保存 · LPと events[].lpId 一致検証
詳細: api-v0.1.md
分析イベント(抜粋・v0.1)
lp_view · step_view(表示率≥0.5 が 連続100ms 等)· step_dwell · cta_click · hotspot_click · swipe_next / swipe_prev · 動画 video_*
MVP指標(例): LP別ユニーク sessionId(lp_view)· ステップ別 step_view / step_dwell · cta_click+hotspot_click
詳細: analytics-events-v0.1.md
管理 API(/v1/manage/*)
認証: X-Admin-Token または Authorization: Bearer(ADMIN_TOKEN / Compose SWIPE_LP_ADMIN_TOKEN)
| メソッド | パス(抜粋) |
|---|---|
POST/GET | /v1/manage/workspaces |
POST/GET | /v1/manage/workspaces/{ws}/landing-pages |
POST | .../landing-pages/{lp}/assets(メディア multipart file) |
PATCH | .../landing-pages/{lp}(definition · definition.id 変更不可) |
POST | .../preview-share(仮公開トークン) · .../publish · .../keys |
GET | .../landing-pages/{lp}/analytics/summary |
詳細: manage-api-v0.1.md
仕様書インデックス(正本パス)
| ファイル | 内容 |
|---|---|
spec/mvp.md | MVP範囲・目的 |
spec/lp-definition-v0.1.md | LP JSON 確定 |
spec/embed-and-zip-v0.1.md | 埋め込み・ZIP 確定 |
spec/api-v0.1.md | 公開API・キー 確定 |
spec/analytics-events-v0.1.md | イベント 確定 |
spec/manage-api-v0.1.md | 管理API 確定 |
spec/stack.md | スタック・デプロイ前提 |
spec/product-ui-parity.md | 競合型UI対応・バックログ |
spec/creative-sp-pipeline-v0.md | SP・クリエイティブギャップ |
spec/ai-features.md | AI方針 |
decisions/log.md | 意思決定ログ |
PDF化の目安: 本ファイルを Markdown ビューアまたは HTML 変換後、印刷 → 1ページに収まるようスケール調整(例: 90–95%)· 余白ナシ/A4 縦。長文化した場合は spec/README.md を併用。