How ray910408/fairbite works
今天吃什麼是多人餐廳決策應用:成員加入房間、設定並準備個人條件,房主搜尋候選,成員投票後由伺服器加權抽選;之後可評分並查看個人足跡。瀏覽器以 Supabase 直接處理文件所述的個人資料與即時讀取,改變房間狀態的操作則交由 Go API。圖中保留自製轉盤、地點調整及天氣等主要能力。Go 與 React 的部分內部連線依 README 架構說明呈現;未取樣的細節不作推定。
Main entry points: handlers.go API 路由與交易 · supabase.ts Supabase 用戶端 · App.tsx 路由與登入狀態 · RoomPage.tsx 房間操作介面
Components 24
瀏覽器應用
房間決策
- 條件與準備
web/src/components/ConditionsForm.tsx - 房間資料與即時更新
web/src/hooks/useRoom.ts - 房間狀態 API
web/src/lib/api.ts - Supabase 用戶端
web/src/lib/supabase.ts - 改地點表決
server/relocation.go
決策服務
用餐足跡
Other components
- 使用者
- Google Places
- Open-Meteo
- Supabase Postgres
Connections 30
- 使用者 → 路由與登入狀態: 使用
- 路由與登入狀態 → 登入註冊: 導向登入
- 路由與登入狀態 → 首頁與自製轉盤: 顯示首頁
- 路由與登入狀態 → 加入房間: 開啟邀請
- 路由與登入狀態 → 房間操作介面: 開啟房間
- 登入註冊 → Supabase 用戶端: 驗證帳號
- 首頁與自製轉盤 → Supabase 用戶端: 建房讀寫
- 加入房間 → Supabase 用戶端: 加入房間
- 房間操作介面 → 條件與準備: 編輯條件
- 房間操作介面 → 房間資料與即時更新: 載入與同步
- 房間操作介面 → 房間狀態 API: 呼叫房間操作
- 條件與準備 → Supabase 用戶端: 寫入條件與準備
- 房間資料與即時更新 → Supabase 用戶端: 讀取與訂閱
- 房間狀態 API → API 路由與交易: 送出狀態操作
- API 路由與交易 → Token 驗證: 驗證請求
- Token 驗證 → API 路由與交易: 傳遞使用者身分
- API 路由與交易 → Supabase Postgres: 交易讀寫房間狀態
- API 路由與交易 → 餐廳搜尋提供者: 搜尋候選餐廳
- 餐廳搜尋提供者 → Google Places: 搜尋(選用)
- 餐廳搜尋提供者 → Mock 餐廳資料: 未設定金鑰時取用
- API 路由與交易 → 天氣資料: 取得天氣因素
- 天氣資料 → Open-Meteo: 查詢天氣
- API 路由與交易 → 篩選與機率引擎: 評估候選
- API 路由與交易 → 可重播加權抽選: 執行抽選
- 可重播加權抽選 → Supabase Postgres: 保存抽選結果
- API 路由與交易 → 同席紀錄: 寫入紀錄與讀取重算資料
- 足跡時間軸 → Supabase 用戶端: 讀取個人足跡
- 餐後評分 → Supabase 用戶端: 寫回評分
- 房間操作介面 → 改地點表決: 發起改地點
- 改地點表決 → Supabase Postgres: 更新房間地點