Justin

Command Palette

Search for a command to run...

返回作品典藏庫
開發中2026information-system

Discord Clone 即時通訊平台

FastAPI + WebSocket 打造的全棧即時聊天系統

以 FastAPI 與 SQLModel 為核心、原生 JavaScript ES Modules 前端構成的 Discord 仿作。後端採分層架構(routers / services / schemas),透過 WebSocket 實現即時聊天與在線狀態,並支援伺服器、頻道、私訊、表情回應、檔案上傳、角色權限、審核、稽核日誌與語音會話等 20 餘組 API。涵蓋 JWT 驗證、bcrypt 雜湊、CORS 與速率限制等安全實務。

已驗證 Demo 錄影 1

由 portfolio quality pass 從既有專案 demo 素材複製。

11 張截圖2 支 Demo 影片

媒體總覽

快速瀏覽這個專案的截圖與錄影展示。

專案連結與 Demo 狀態

專案概覽

## 專案概述 Discord Clone 是一套全棧即時通訊平台,重現 Discord 的核心體驗:多伺服器(Guild)、頻道與分類、即時聊天、私訊、表情回應、檔案分享、在線狀態與語音會話。後端以 **FastAPI + SQLModel/SQLAlchemy 2.0** 為核心,前端則以**原生 JavaScript ES Modules** 元件化構成單頁應用,刻意不依賴前端框架。 ## 架構設計 後端採清晰的分層架構:routers 負責 API 端點、services 封裝業務邏輯、schemas 以 Pydantic v2 做輸入驗證與序列化,三者解耦以利維護與測試。即時功能由自製的 **WebSocket ConnectionManager** 驅動,負責房間連線管理、在線狀態廣播,以及每連線每 10 秒 10 則訊息的速率限制。資料層使用 SQLModel 定義 20 餘張資料表(Guild、Channel、Role、Message、DirectMessage、Reaction、Thread、Ban/Mute/Timeout、AuditLog、VoiceSession 等),並為高頻查詢欄位建立索引。 ## 功能範圍 專案掛載超過 20 組路由,涵蓋驗證、伺服器、頻道、機器人、私訊、反應、檔案、在線狀態、討論串、角色權限、審核、釘選/星標、分類、搜尋、通知設定、伺服器範本、稽核日誌與語音聊天,並提供 /api/health 健康檢查與 Swagger 文件。 ## 安全與效能 身分驗證採 **JWT(python-jose)** 搭配 **passlib/bcrypt** 密碼雜湊;機密改由環境變數載入,CORS 由寬鬆改為來源白名單,並加入輸入清理與速率限制。效能面則導入 SQLAlchemy QueuePool 連線池、索引與訊息歷史的時間分頁。 ## 現況 後端原型已可運行,涵蓋完整領域模型與安全強化;前後端完整接線、PostgreSQL 遷移與 WebRTC 語音串流為後續工作。

我的角色

全端開發者(獨立開發前後端、資料模型與架構設計)

問題背景

想完整實作一套類 Discord 的即時社群通訊系統,需同時處理即時雙向訊息、複雜的權限與審核模型,以及可維護的後端架構,並兼顧安全性與效能。

解決方案

後端以 FastAPI + SQLModel/SQLAlchemy 建立分層架構,將 API 路由、業務邏輯 Service 層與 Pydantic schema 解耦;以 WebSocket ConnectionManager 管理房間連線、在線狀態與速率限制;用 JWT + passlib(bcrypt) 處理驗證,並為高頻查詢欄位加索引、設定連線池與時間分頁。前端採原生 ES Modules 元件化渲染,免框架構成 SPA。

目前成果

完成涵蓋伺服器/頻道/私訊/反應/檔案/在線/角色/審核/搜尋/通知/範本/稽核/語音等 20 餘組 REST 與 WebSocket API 的可運行原型,並落實環境變數化機密、CORS 收斂、輸入驗證與速率限制等安全強化。

作品亮點

  • WebSocket ConnectionManager:房間連線追蹤、在線狀態廣播、每連線 10 秒 10 則的速率限制
  • 清楚的後端分層:routers(API)→ services(業務邏輯)→ schemas(Pydantic 驗證),便於維護與測試
  • 完整 Discord 領域模型:Guild、Channel、Role、Message、DM、Reaction、Thread、Ban/Mute/Timeout、AuditLog、VoiceSession 等 20+ 資料表
  • 安全實務:JWT(python-jose)、bcrypt 密碼雜湊、機密改用環境變數、CORS 來源白名單、輸入清理
  • 效能優化:SQLAlchemy QueuePool 連線池、高頻欄位索引、訊息歷史時間分頁
  • 免框架前端:原生 ES Modules 元件化 SPA,啟動時自動探測可用 port

技術挑戰

  • 即時雙向通訊的連線生命週期管理與斷線清理,並避免訊息洪水(速率限制)
  • 在單一資料模型中同時支撐頻道訊息與私訊的反應/檔案關聯,並維持查詢效能
  • 將早期硬編碼機密與寬鬆 CORS 重構為環境變數化與白名單的安全設定

目標使用者

  • 作品集審閱者與面試官
  • 需要快速理解專案目的、技術棧與成熟度的技術讀者

技術亮點

  • 偵測到的主要技術線索:Python, FastAPI, SQLModel, SQLAlchemy 2.0, Pydantic v2, SQLite, Uvicorn, WebSockets, JWT (python-jose), passlib/bcrypt, JavaScript (ES Modules), HTML5, CSS3, Docker, Nginx
  • 已有 README 作為後續補齊案例研究的依據
  • 尚未確認公開 GitHub repository,作品集會先標示 GitHub 待補

系統架構

此專案目前由 portfolio catalog pipeline 依 README、Git metadata、package/build 設定與素材線索建立案例頁。正式架構說明仍需依實際 source code 補齊;目前可確認的技術線索包含:Python, FastAPI, SQLModel, SQLAlchemy 2.0, Pydantic v2, SQLite, Uvicorn, WebSockets, JWT (python-jose), passlib/bcrypt, JavaScript (ES Modules), HTML5, CSS3, Docker, Nginx。

資料流程

目前尚未完成可公開的資料流程說明。若此專案含資料處理、AI pipeline 或後端 API,後續應補上 input、processing、storage、UI/output 的端到端流程。

專案結構

discord-clone/
  README.md              # project documentation, when available
  source files           # implementation reviewed by local audit
  package/build config   # detected capability signals

安裝與執行

This project does not expose a verified runnable web command yet. Review the README/source tree and add exact install, run, test, and build commands before interview use.
No verified build command was detected. Treat the current portfolio page as a case-study placeholder until build steps are reviewed.

後續改進

  • 補齊正式 README、截圖與 demo recording
  • 補上架構圖、資料流程與關鍵技術決策
  • 確認 build/test 狀態並更新 portfolio release report

面試說明重點

  • 先說明此專案目前的成熟度與可展示範圍
  • 聚焦在可驗證的技術棧、程式結構與已完成部分
  • 不要宣稱尚未部署、尚未錄影或尚未測試的能力已完成

後續規劃

  • 將前後端完整接線並補上 WebSocket 前端初始化
  • 由 SQLite 遷移至 PostgreSQL 並導入 Alembic 資料庫遷移
  • 補上自動化測試與 CI,並整合語音聊天的實際 WebRTC 串流

相關作品