ExCourt 是一个基于 FastAPI + MongoDB 的现代化场地资源交换系统,旨在解决校园内场地资源错配问题。通过智能匹配、积分激励和严格的审核机制,实现场地使用权的安全、高效流转。
- 发布场地:用户提交闲置场地,需经过管理员审核。
- 发布需求:用户发布想要的场地时间段。
- 审核机制:管理员后台审核场地凭证(序列号),防止虚假信息。
- 智能搜索:支持按时间、ID 组合查询,利用 MongoDB 复合索引实现毫秒级响应。
- 申请制交换:用户 A 申请用户 B 的场地,B 同意后系统自动转移所有权。
- 直接交换 (Direct Exchange):基于“双向需求匹配”的一键秒换(A有B想要的,B有A想要的)。
- 积分系统:
- 交换成功双方获赠积分。
- 支持“积分+场地”的混合出价模式。
- 支持纯积分转账。
- 赠予功能:支持将场地直接赠送给好友。
- 发布即匹配:发布需求时,系统自动检测并提示广场上已存在的匹配场地。
- 审核后推送:场地审核通过后,自动通知所有寻找该场地的用户。
- 双向完美匹配:主页自动检测并推荐“双向奔赴”的交换机会。
- 好友系统:添加、删除好友,好友列表管理。
- 即时通讯:支持用户间私信聊天。
- 全局通知:审核结果、交易状态变更、积分变动等系统消息实时推送。
- 后端:Python 3.11 + FastAPI
- 数据库:MongoDB (Motor 异步驱动)
- 容器化:Docker
- 前端:原生 HTML/JS/CSS (无框架,轻量级)
建议使用 Conda 管理环境:
conda create --name excourt python=3.11
conda activate excourt
pip install -r requirements.txt确保 Docker 已安装并运行,然后执行:
# 拉取 mongo 最新的镜像(若已拉取则不用执行)
docker pull mongo:latest
# 运行容器,启动数据库
docker run -d -p 27017:27017 --name mongodb mongo:latest# 必须在项目根目录下运行
python backend/main.pyAPI 文档地址: http://127.0.0.1:8000/docs
backend/
├── model/ # Pydantic 数据模型 (Schema)
├── routers/ # API 路由处理逻辑
├── database.py # 数据库连接与索引初始化
├── main.py # 程序入口
└── ...
frontend/
├── pages/ # HTML 页面
├── assets/ # 静态资源 (CSS/JS)
└── ...