曾煥軒 B12705002、陳泊華 B12705014、張佑丞 B12705055
近年來,人們對各類活動需求不斷提升,活動參與者和主辦方對於輕量化、便捷、高擴展性的票務管理需求有逐漸上漲的趨勢。目前市面上有多個票務系統可供選擇,並根據活動種類的不同,主辦方和參與者對平台會有不同的要求與偏好。例如:在台灣,一部分的大型演唱會使用拓元訂票系統(e.g. 周杰倫巡迴演出),確保平台具備高流量乘載的穩定性;而展覽、演講則會使用 KKTIX / Accupass 等平台,在方便調整的同時,也較能夠節省平台中介費。 目前大多數的訂票平台,都會有「舉辦」向活動主辦方收取一部分的費用,並 針對「小型活動舉辦方」的族群。
OpenTicket 是一個致力於簡化活動管理和票務操作的線上平台,主打開源及客製化,讓用戶可以瀏覽、預訂及管理演唱會、講座、比賽等活動票券。平台的核心價值在於透過易於使用的功能接口,讓主辦方更有效地管理活動資訊、票務銷售和場地設置,同時讓用戶便捷地查詢、選購票券、並且盡量確保選位流程的正確性。
詳細細節可參考 report.pdf。
🔗 展示影片連結
- 註冊帳號,填寫基本資訊(使用者名稱、密碼、電子郵件)。
- 登入系統後可查看歷史訂單與活動記錄。
- 按照活動類型、地點或日期篩選活動列表,查看活動詳細資訊(例如演出者、票價、時間與地點)。
- 選擇活動與座位後下訂單,系統會自動生成訂單並記錄交易。
- 查看所有訂單,若符合條件可取消訂票,並自動退款或補償。
- 瀏覽參加過的活動資訊,便於未來偏好分析。
- 查看活動的票務情況,包括可用座位與票價資訊。
- 提供活動名稱、表演者、日期、場地與票價等詳細資訊。
- 更新或刪除活動資訊(例如更改活動日期或描述)。
- 查看票券銷售情況,包括售出票券數量與總收入。
- 查看參與活動的用戶名單及聯絡方式,便於進行活動統計或管理。
- 管理場地座位,查詢已售出或可預訂的座位狀態。
- 分析活動的座位利用率、參與人數及總收入,進行活動評估。
- 查看所有活動,包括主辦方、場地與狀態等詳細資訊。
- 查看全平台票券銷售記錄,分析售出票券數量與未售票數量。
- 使用我們的Supabase Token 連線到我們的資料庫或是使用data資料夾下的csv檔案匯入本機端(若有需求可至最下方「聯繫方式」)
- 在本機端輸入
python3 -m venv .venv
創建虛擬環境(推薦做法) - 在本機端執行
pip install -r requirements.txt
安裝後端相關套件 - 進入frontend資料夾,在本機端執行
npm install
安裝前端相關套件 - 在專案目錄底下輸入
uvicorn app.main:app --reload
啟動fastAPI後端伺服器 - 進入frontend資料夾,輸入
sudo npm run dev
啟動前端伺服器 - 進入瀏覽器輸入預設連線通道
http://localhost:3000
即可使用 - 若想執行多個client測試,進入frontend資料夾後輸入
sudo npm run dev:3001
啟動第二台前端伺服器(可參考/frontend/package.json
設定)
- 後端技術
- Supabase:
- 作為後端資料庫服務,基於 PostgreSQL,提供即時資料庫和身份驗證功能。
- 使用 Supabase 的 API 接口與資料庫進行交互,實現資料操作(CRUD)功能。
- 支援即時訂票狀態更新,確保多用戶同時操作時的數據一致性。
- FastAPI:
- 使用 FastAPI 開發後端 API,提供高效且易擴展的 RESTful 接口。
- 支援非同步請求處理,提升高併發下的系統性能。
- 整合 Supabase 驅動,用於處理活動管理、票務查詢、座位預訂和訂單管理等業務邏輯。
- JSON Schema 驗證:
- 透過 FastAPI 提供的 Pydantic 模組,對 API 的請求與響應數據進行結構驗證,確保資料完整性與正確性。
- Supabase:
- 前端技術
- 使用 Next.js 開發用戶端界面:
- 提供直觀的活動瀏覽、票務查詢與座位選擇介面。
- 與 FastAPI 提供的 API 進行連接,實現資料即時更新。
- Tailwind CSS:用於設計響應式、現代化的 UI。
- 使用 Next.js 開發用戶端界面:
- 併行控制
- 使用 Supabase 的資料庫加鎖機制:
- 防止多用戶同時預訂相同座位的情況。
- 使用座位狀態標記(如 Available、Reserved、Sold)來管理座位流轉。
- 例如:
- 當用戶確認座位後,該座位立即更新為 Reserved,並限制其他用戶選擇該座位。
- 若用戶取消或超時未完成付款,座位自動釋放並設為 Available。
- 使用 Supabase 的資料庫加鎖機制:
- 作業系統
- MacOS
- 語言與框架:
- 後端:Python 3.10 + FastAPI
- 前端:Next.js + Tailwind CSS
- 資料庫:
- Supabase(基於 PostgreSQL)
若有任何問題,請聯繫 [email protected]