diff --git a/docs/strategic-roadmap.md b/docs/strategic-roadmap.md index 68940f09..0a1e1dc4 100644 --- a/docs/strategic-roadmap.md +++ b/docs/strategic-roadmap.md @@ -1,47 +1,132 @@ -# Posimai Project 2026 戦略ロードマップ(Claude Code 共有事項) +# Posimai Project 2026 戦略ロードマップ -本書は、Antigravity(アーキテクト AI)との協議によって決定した、2026年3月以降の Posimai プロジェクトにおける **「3つの重要な戦略・構想」** をまとめています。Claude Code は以降の開発において、必ずこの方針を前提としてコード生成や提案を行ってください。 +本書は Posimai プロジェクトの技術的決定事項・中長期構想をまとめます。 +Claude Code / Cursor / Antigravity 等すべての AI は本書を前提として開発を進めてください。 + +最終更新: 2026-03-31 --- -## 1. 【確定】AI 開発基盤の安定化(`server.js` の現状維持) +## 0. コアポジショニング(不変) -膨大なトークン消費とデグレリスクを防ぐため、以下の決定が下されました。 +**Posimai = 個人 AI 開発者のための OS** -- **ルールのスリム化**: `CLAUDE.md` と `AGENTS.md` を純粋な「掟」のみ(約100行)にスリム化しました。アプリ作成手順などは `docs/new-app-guide.md`、デザインは `docs/design-system.md` に分割されています。今後はこれらを辞書的に参照してください。 -- **`server.js` は分割しない**: 当初予定していた `server.js` の複数ファイルへの解体(`routes/` 等へのモジュール化)は**無期限に中止(WONTFIX)**となりました。 - - **理由**: 現在の `server.js`(2300行超)は `buildRouter()` という巨大なクロージャの中でデータベース `pool` や `KEY_MAP` などの状態を暗黙的に共有しており、物理分割すると VPS の Docker 環境を含めて全滅するリスクが高いためです。 - - **Claude Code への指示**: 今後 `server.js` を改修する際は全体を書き直そうとせず、ファイル内に整然と敷き詰められている `// ──` の見出しコメントを頼りに、ピンポイントでの検索・追記のみを行ってください(壊れていないものを直さない方針)。 +| コンポーネント | 役割 | +|---------------|------| +| posimai-station | 目(Ubuntu PC キオスク監視盤) | +| posimai-dev | 手(ブラウザ内ターミナル + AI 対話) | +| posimai-atlas | 脳(インフラ・依存関係の可視化) | +| posimai-dashboard | 統合ハブ(全アプリ管理 + 外部への窓口) | + +これら4つのセットは競合不在のポジションです。設計・UI・機能追加はこの世界観を強化する方向で行ってください。 --- -## 2. 【構想待機】自動コンテンツジェネレーター(Posimai Chronicle 構想) +## 1. 【確定】AI 開発基盤の安定化 -非エンジニアであるユーザーの「AI 駆動開発の奮闘記(すったもんだ)」を、外部サービスへの過度な依存なしに完全自動化してブログ化する構想です。 +### CLAUDE.md / AGENTS.md のスリム化 +純粋な「掟」のみ(約100行)に維持します。詳細仕様は以下の辞書ドキュメントを参照してください: +- `docs/new-app-guide.md` — 新規アプリ作成手順 +- `docs/design-system.md` — デザインシステム・カラートークン +- `docs/master-architecture.md` — インフラ構成・全アプリ一覧 -- **脱・外部ツール**: n8n や Selenium など、ブラウザ自動操作を用いた脆い仕組みは作成しません。 -- **インビジブル・ロギング**: 以下のアーキテクチャで「何もしなくても下書きが溜まる」ように構築します。 - 1. VPS の `server.js` に定期実行(cron)やトリガー用の小さなスクリプトを追加。 - 2. Gitea の直近コミットログと、ダッシュボードの `posimai-dashboard/src/app/timeline/page.tsx` を読み込む。 - 3. VPS 内蔵の Gemini API に「奮闘記のテイスト」でストーリー化させる。 - 4. 生成された Markdown テキストを、既存の PostgreSQL `journal_posts` テーブルに `status: 'draft'`(下書き)として直接 `INSERT` する。 - 5. ユーザーが `posimai-journal`(CMS)を開き、1行だけ感想を足して公開ボタンを押し、`posimai-site` に載せる。 +### server.js の改修ルール(WONTFIX: ルーター分割) + +`server.js`(2300行超)は `buildRouter()` クロージャ内で `pool`・`KEY_MAP` 等の状態を共有しています。**ルーター構造の物理分割は禁止**です(Docker 環境ごと全滅するリスク)。 + +ただし以下は許可します: +- `// ──` 見出しコメントを頼りにしたピンポイント追記 +- **JWT 生成・メール送信・バリデーション等の純粋関数** → `utils/` や `helpers/` への抽出は可 + +**壊れていないものを直さない。追記で解決できることを優先する。** --- -## 3. 【構想待機】PWA 販売・納品インフラ(Neo-Minimalist E-Commerce) +## 2. 【構想待機】Posimai Chronicle(自動コンテンツ生成) -非エンジニア顧客に対して、サポートコストを「ゼロ」に抑えた状態で PWA 群を販売するプラットフォーム構想です。 +非エンジニアである開発者の「AI 駆動開発の奮闘記」を自動ブログ化する構想です。 -- **販売フロント(ストア)**: 実験的要素(CMS連動)を含む `posimai-site` は使わず、これとは別に完全に新しい静的 PWA **`posimai-store`(仮)** を Vercel に構築します。ここにはカートロジックは置かず、商品説明と「Stripe決済URL(Payment Links)への href リンク」のみを置きます。 -- **決済と納品(完全自動化)**: - 1. お客様が Stripe で決済完了した瞬間、Stripe Webhook が VPS (`server.js`) へ飛びます。 - 2. `server.js` は PostgreSQL の `users` テーブルにお客様のアドレスを登録します。 - 3. `server.js` から Resend API を経由して、顧客に「Magic Link」メールを自動送信します。 - 4. パスワード不要の Magic Link により、非エンジニアでも迷わずに PWA にログインし利用開始できます。 -- **サポートゼロ化**: クレカの変更やサブスクの解約手続きは「Stripe Customer Portal」をお客様自身に操作させることで、こちら側の管理コードをほぼゼロにします。 +### アーキテクチャ + +``` +git log(コミット履歴) ──┐ + ├→ server.js cron → Gemini API → journal_posts(draft) +posimai-journal(手動)──┘ +``` + +1. VPS `server.js` に定期実行(cron)エンドポイントを追加 +2. **Gitea API から直近コミットログを取得**(`feat:`/`fix:` プレフィックスで構造化済み) + - ※ `timeline/page.tsx` を直接読むのは避ける(React コンポーネントのパースは脆弱) +3. Gemini API に「posimai らしいテイスト」でストーリー化させる +4. `journal_posts` テーブルに `status: 'draft'` で INSERT +5. mai が journal を開き1行感想を足して公開 → posimai-site に掲載 + +### 開始条件 +「Chronicle の実装に入る」というトリガーが発動した時点で着手。 --- -> [!NOTE] -> 構想 2 (Chronicle) および 構想 3 (Store) に関しては、まだコードの改変は開始していません。ユーザーから「Chronicle の実装に入る」「販売インフラを作る」といったトリガーが発動した際に、この構想に沿って粛々と `server.js` 等への機能追加を進めてください。 +## 3. 【構想待機】posimai-store(PWA 販売・納品プラットフォーム) + +### 設計思想 + +Zenn 記事で指摘された通り「PWA を広める場所がない」問題は現実に存在します。 +posimai-store は最初は「posimai の PWA を売る場所」ですが、将来的に**他の開発者の PWA も扱える配布プラットフォーム**に育てる可能性があります。 + +### フロー + +``` +posimai-store(静的 Vercel) + └→ Stripe Payment Links(固定価格・単品) + └→ Stripe Webhook → server.js + ├→ PostgreSQL: users テーブルに登録 + └→ Resend: Magic Link メールを自動送信 + └→ 顧客がリンクを開くと即利用開始 +``` + +### 技術決定 + +| 項目 | 選択 | 理由 | +|------|------|------| +| 販売ページ | 純粋な静的 HTML/CSS(Vercel) | CMS 非連動・絶対に落ちない | +| 決済(MVP) | Stripe Payment Links | コードなしで即日開始可能 | +| 決済(将来) | Stripe Checkout Session | 複数プラン・割引コード対応時に移行 | +| 認証 | Magic Link(自前実装済み) | パスワード不要・サポートゼロ | +| 解約・請求変更 | Stripe Customer Portal | 管理コードほぼゼロ | + +### posimai-site との関係 +- `posimai-site` = 個人ポートフォリオ・ブログ実験場(現状維持) +- `posimai-store` = 商用販売の唯一の窓口(新設・完全切り離し) + +### 開始条件 +「販売インフラを作る」というトリガーが発動した時点で着手。 +その前提として **Magic Link 認証の server.js 実装**が完了していること。 + +--- + +## 4. 優先順位(2026-03-31 時点) + +``` +[今すぐ] Magic Link + Passkey 認証実装(server.js) + ↓ 完了後 +[次] posimai-store 新設(静的 LP + Stripe Payment Links) + ↓ 並行して +[随時] Chronicle 実装(git log → Gemini → journal draft) + ↓ 将来 +[長期] posimai-store を他開発者の PWA 配布プラットフォームへ拡張 +``` + +--- + +## 5. 一元管理の方針 + +情報はできる限り以下に集約します: + +| 種別 | 場所 | +|------|------| +| アプリ一覧・リンク・ステータス | `posimai-dashboard/src/data/projects.json` | +| 更新・開発履歴 | `posimai-dashboard/src/app/timeline/page.tsx` | +| インフラ構成 | `posimai-atlas`(atlas.json) | +| 技術的決定事項・戦略 | 本ファイル(`docs/strategic-roadmap.md`) | +| インフラ詳細・URL一覧 | `docs/master-architecture.md` | +| AI の個人記憶 | `memory/MEMORY.md`(claude-memory リポジトリと同期) |