posimai-root/docs/master-architecture.md

233 lines
13 KiB
Markdown
Raw Normal View History

# Posimai Project — マスターアーキテクチャドキュメント
最終更新: 2026-03-28
対象: Claude Code / Cursor / Antigravity / Gemini / 全 AI エージェント
**このドキュメントはプロジェクトの現状を一元管理します。実装の前に必ず読んでください。**
> メモ: このファイルは変更が発生するたびに更新するCLAUDE.md のルールに明記済み)。
> 「最終更新」日付と内容を常に一致させること。
---
## 1. 全体構成図2026-03-28 確定)
```
╔══════════════════════════════════════════════════════════╗
║ maita の開発環境Windows 11 PC
║ VS Code / Cursor / Claude Code CLI / Termius ║
╚══════════════════════════════════════════════════════════╝
│ git pushgitea + github の2リモート同時
╔══════════════════════════════════════════════════════════╗
║ コード管理2リモート並行
║ GiteaSynology 内) ←→ GitHubposimai/ org
║ ローカルバックアップ Vercel 自動デプロイトリガー ║
╚══════════════════════════════════════════════════════════╝
│ GitHub push → Vercel 自動デプロイ
╔══════════════════════════════════════════════════════════╗
║ フロントエンドVercel / CDN
║ ║
║ posimai.soar-enrich.com → posimai-dashboard確定
║ ║
║ 全アプリ URL*.vercel.app で稼働中・全 23 本 PWA: ║
║ brain / habit / pulse / feed / reader / journal ║
║ brief / daily / ambient / veil / together / lens ║
║ diff / clean / timer / digest / think / site ║
║ events / maps / tech-events / analytics / roadmap ║
║ ║
║ 【計画中】*.posimai.soar-enrich.com ワイルドカード DNS ║
║ → Passkey の rpID 問題を解決・Eiji に依頼予定 ║
╚══════════════════════════════════════════════════════════╝
│ https://api.soar-enrich.com/brain/api/...
2026-03-26 移行完了)
╔══════════════════════════════════════════════════════════╗
║ バックエンド本番VPS— 2026-03-25 移行完了 ║
║ Ubuntu 25.04 / AMD EPYC 4コア / 5.8GB / 85.131.245.239 ║
║ 共同開発者 Eiji 提供 ║
║ ║
║ Nginx: api.soar-enrich.com → :8090 ║
║ ║
║ posimai-apiNode.js / Express / :8090
║ 稼働中のエンドポイント: ║
║ ・記事 /articles /save ・Journal /journal/* ║
║ ・RSS /feeds ・Gemini AI /gemini/* ║
║ ・TTS /tts/* ← VOICEVOX 連携(コンテナ追加で即有効) ║
║ ║
║ PostgreSQL 16 ║
║ articles / journal_posts / users ║
║ site_config / reading_history ║
║ ※ auth テーブルは Supabase Auth 採用確定につき将来削除 ║
╚══════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════╗
║ バックアップSynology NAS・停止しない
║ 100.76.7.3 / posimai-lab.tail72e846.ts.net ║
║ Tailscale VPN 経由のみアクセス可 ║
║ ║
║ ・Giteagit バックアップサーバー) ║
║ ・posimai_api旧 API・待機中
║ ・PostgreSQL 15旧 DB・待機中
║ ・Uptime Kuma死活監視
║ ・Ubuntu PC バックアップ受け先(毎日 3:00 rsync
╚══════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════╗
║ 外部サービス ║
║ ║
║ 【認証・確定】Supabase Auth ║
║ Magic Linkメール+ Passkey指紋・顔
║ → Resend をカスタム SMTP として設定 ║
║ → 各アプリは Supabase JWT で認証 ║
║ → VPS は JWT を検証するだけ(認証ロジックは Supabase
║ ║
║ 【稼働中】Supabase DB ║
║ togetherリアルタイム同期・稼働中
║ habit / pulse将来移行予定・現在は localStorage
║ ║
║ Gemini API → VPS 経由journal/pulse 等) ║
║ Gemini API → フロント直接think アプリのみ) ║
║ Resendメール→ noreply@soar-enrich.com ║
║ Google FontsInter/ unpkgLucide @0.344.0 固定) ║
║ ║
║ 【将来】 ║
║ Stripe課金・アカウント済み・Eiji と共有済み) ║
║ Google Play ConsoleAndroid 配信) ║
╚══════════════════════════════════════════════════════════╝
```
---
## 2. アプリ一覧(全 23 本・2026-03-28 時点)
| アプリ | URL | 種別 | バックエンド | 備考 |
|--------|-----|------|-------------|------|
| posimai-dashboard | posimai.soar-enrich.com | Next.js | — | メインダッシュボード |
| posimai-analytics | analytics.vercel.app | Next.js | — | RFM 分析 |
| posimai-brain | brain.vercel.app | 静的 | VPS API | 記事管理 |
| posimai-feed | feed.vercel.app | 静的 | VPS API | RSS フィード |
| posimai-reader | reader.vercel.app | 静的 | VPS API | 記事リーダー |
| posimai-journal | journal.vercel.app | 静的 | VPS API | CMS エディタ |
| posimai-site | site.vercel.app | 静的 | VPS API | 公開ホームページ |
| posimai-together | together.vercel.app | 静的 | Supabase | リアルタイム共有 |
| posimai-daily | daily.vercel.app | 静的 | VPS API | ブリーフィング |
| posimai-brief | brief.vercel.app | 静的 | VPS TTS | 音声ブリーフィング |
| posimai-habit | habit.vercel.app | 静的 | localStorage | 習慣管理Supabase 移行予定) |
| posimai-pulse | pulse.vercel.app | 静的 | localStorage | 気分記録Supabase 移行予定) |
| posimai-think | think.vercel.app | 静的 | Gemini 直接 | AI 思考整理 |
| posimai-digest | digest.vercel.app | 静的 | Gemini 直接 | テキスト要約 |
| posimai-ambient | ambient.vercel.app | 静的 | open-meteo | 常時表示 |
| posimai-veil | veil.vercel.app | 静的 | — | アプリランチャー |
| posimai-roadmap | roadmap.vercel.app | 静的 | — | ロードマップ管理 |
| posimai-timer | timer.vercel.app | 静的 | — | タイマー |
| posimai-lens | lens.vercel.app | 静的 | — | EXIF 表示 |
| posimai-diff | diff.vercel.app | 静的 | — | テキスト差分 |
| posimai-clean | clean.vercel.app | 静的 | — | テキストクリーナー |
| posimai-events | events.vercel.app | 静的 | — | イベント情報 |
| posimai-maps | maps.vercel.app | 静的 | — | マップ |
| posimai-hotels | hotels.vercel.app | 静的 | — | ホテル価格 |
| posimai-tech-events | tech-events.vercel.app | 静的 | RSS | IT イベント |
| posimai-ui | ui.vercel.app | 静的 | — | 共有デザインシステム |
---
## 3. 認証フロー(確定・未実装)
```
現行(稼働中):
フロント → X-API-Key: pk_maita_xxx → VPS が検証
?init_key= URL → localStorage に保存
3ユーザーmaita / partner / musumeのみ対応
移行先(確定・実装待ち):
フロント → Supabase Auth → Magic Link or Passkey
→ Supabase JWT 発行
→ VPS が JWT を検証
メール送信: Resendnoreply@soar-enrich.com
課題: Passkey は登録ドメイン固有
→ *.posimai.soar-enrich.com ワイルドカード DNS が必要
→ Eiji への依頼待ち
```
**実装完了まで `X-API-Key`・`?init_key=`・localStorage 認証ロジックは変更禁止。**
---
## 4. データ保存先まとめ
| 保存先 | アプリ | 状態 |
|--------|--------|------|
| VPS PostgreSQL | brain・journal・site・reading_history | 稼働中 |
| Supabase DB | together | 稼働中 |
| Supabase DB | habit・pulse | 将来移行予定商用化フェーズ3 |
| localStorage永続・移行しない | veil 設定・timer 設定 | 確定 |
| データなし(都度処理) | diff・clean・lens・digest・think・timer 本体 | — |
---
## 5. デプロイパイプライン(確立済み)
```bash
git add .
git commit -m "feat/fix/chore: 変更内容"
npm run deploy # = git push gitea main && git push github main
```
- `gitea``http://100.76.7.3:3000/mai/[app-name].git`(ローカルバックアップ)
- `github``https://github.com/posimai/[app-name].git`Vercel 自動デプロイトリガー)
- `vercel --prod` 直接実行: **禁止**
- VPS バックエンド: `bash deploy-server.sh`SSH 鍵認証・完全無人)
---
## 6. AI エージェント役割分担
| 担当 | 内容 |
|------|------|
| インフラ担当チャット | 認証実装・VPS デプロイ・DNS・server.js 変更 |
| UI 担当チャット | UX・デザイン・CLAUDE.md 適合・プライバシー表記・バグ修正 |
**UI 担当が触ってはいけないもの:**
`api.soar-enrich.com` URL / `X-API-Key` ヘッダー / `?init_key=` パラメータ / localStorage 認証ロジック / server.js・VPS・Docker 関連
---
## 7. 直近の確定事項(設計判断ログ)
| 日付 | 決定事項 |
|------|---------|
| 2026-03-25 | バックエンドを Synology → VPSEiji 提供)に移行完了 |
| 2026-03-26 | API URL を `posimai.soar-enrich.com``api.soar-enrich.com` に分離完了 |
| 2026-03-27 | 認証方式を Supabase AuthMagic Link + Passkeyに確定 |
| 2026-03-28 | 現行 auth テーブルmagic_link_tokens 等)は将来削除予定・今は放置 |
| 保留中 | *.posimai.soar-enrich.com ワイルドカード DNSEiji 依頼待ち) |
| 保留中 | VPS に VOICEVOX コンテナ追加Eiji 作業中) |
---
## 8. 絶対に守るルール(全 AI 共通)
1. **デプロイは `npm run deploy` のみ**`vercel --prod` 禁止)
2. **絵文字禁止**コード・UI・コメントすべて
3. **アイコンは Lucide のみ**`@0.344.0` 固定)
4. **デザイントークン変更禁止**`--accent` 1行のみ例外
5. **`git push origin` 禁止**gitea と github の2リモートのみ
6. **`api.soar-enrich.com` / 認証ロジックは UI 担当チャットが触らない**
7. **このファイルを変更したらすぐ「最終更新」日付を更新する**
---
## 参照ファイル一覧
| ファイル | 内容 |
|---------|------|
| `CLAUDE.md` | AI 向けプロジェクトルール(最優先) |
| `AGENTS.md` | CLAUDE.md の Cursor/Windsurf 向けコピー |
| `docs/master-architecture.md` | **このファイル**(インフラ・確定事項の一元管理) |
| `posimai-dashboard/src/data/projects.json` | 全アプリの一覧・ステータス・技術スタック |
| `_template/` | フル機能テンプレート |
| `_template-minimal/` | 単機能ツール用テンプレート |