本文件只用來討論 Adventure Table 的基礎技術棧,不是全專案架構規格,也不是任何 Phase 的實作設計。
討論完成後,正式採用的基礎技術選型會寫入對應的
開發設計方針.md;各 Phase 的資料模型、API、權限、事件、Snapshot、Combat、Tactical 等實作細節,等該 Phase 開工時再設計。若本文件與
規格企劃.md衝突,以產品規格為準。
最後更新:2026-08-29
現在只先決定:
現在不提前決定:
這些會在對應 Phase 的 開發設計方針.md 再決定。
| 領域 | 目前推薦 | 備註 |
|---|---|---|
| Frontend | React + TypeScript + Vite | 高互動 SPA;不需要 SEO / SSR |
| Routing | React Router 或同級方案 | 實作時再定 |
| UI Styling | Tailwind CSS | 可替換 |
| Server State | TanStack Query | 可替換 |
| Local UI State | React state / context;必要時 Zustand | Zustand 非必需 |
| Backend | Python + FastAPI | 適合規則邏輯、API、WebSocket |
| Validation | Pydantic | 適合 structured rules / action / content data |
| Database | PostgreSQL | 關聯資料與 transaction 需求明顯 |
| ORM | SQLAlchemy | 可替換,但目前優先 |
| Migration | Alembic | 與 SQLAlchemy 搭配 |
| AI Integration | MCP Python SDK | 外部 AI 透過 MCP / Site Tools 接入;網站本身不接 LLM API |
| Python Tests | pytest | Rules / backend 主測試工具 |
| Frontend Tests | Vitest | Component / utility |
| E2E | Playwright | 真實 UI workflow |
| Deployment | Docker Compose | 第一版朋友私用,避免過度架構 |
版本號不在本文件鎖死;真正開工時使用當下受支援的 stable / LTS line。
Adventure Table 是高度互動的 Web Application,主要畫面會包含:
React 適合大量重複、互動式 UI component;TypeScript 可以降低欄位與 API contract 的錯誤。
目前選 Vite 而不是 Next.js,主要因為:
如果之後真的出現 Next.js 才能明顯解決的需求,再重新評估即可。
P0 / P1 會有大量 D&D 5e 規則與結構驗證,例如:
Python 可讀性高、測試方便,也符合現有技能。
FastAPI 提供:
Pydantic 則適合大量結構化資料驗證。
MCP 並不是 Python 獨有優勢;選 Python 的主要原因仍是 Rules / validation / data processing 與維護性。
Adventure Table 後續會有大量彼此有關聯的持久資料,例如 Character、Campaign、Session、Seat、Combat、Timeline 等。
需要的能力包括:
因此目前 PostgreSQL 比 MongoDB 更適合作為主要 DB。
實際 table、JSONB 邊界、ID strategy 等全部留到各 Phase 的開發設計再決定。
產品規格已確定:
因此目前只先選擇 MCP Python SDK 作為 AI adapter 的候選實作工具。
MCP Tool 的具體拆法、Join Token、Seat scope、reconnect、visibility 等,等 P2 / P3 開發設計時再定。
這些不是某個 library choice,而是產品規格直接要求的開發原則:
至於這些原則在某個 Phase 具體怎麼落地,由該 Phase 的 開發設計方針.md 決定。
以下沒有必要在 P0 前決定:
如果現在開始 P0,基礎開發環境暫定:
Frontend
React + TypeScript + Vite
Backend
Python + FastAPI + Pydantic
Database
PostgreSQL + SQLAlchemy + Alembic
AI
MCP Python SDK
External AI only
Testing
pytest + Vitest + Playwright
Deployment
Docker Compose
這份文件到這裡就足夠。
下一步不是繼續設計全專案架構,而是進入 P0 的實作規格與開發設計。