一个连接摄影师与模特的撮合平台,支持发布约拍需求、找搭子、机位分享、作品展示、实时聊天等功能。
| 功能模块 |
说明 |
| 用户系统 |
注册/登录、微信登录、忘记密码、实名认证、升级摄影师 |
| 约拍需求 |
发布需求、浏览列表、摄影师接单、确认合作、完成订单 |
| 实时聊天 |
Socket.IO 实时消息、文字/图片发送、已读标记、聊天列表 |
| 作品展示 |
发布作品集、浏览/点赞/收藏、用户作品列表 |
| 找搭子 |
发布交友帖子、标签筛选、联系搭子 |
| 机位分享 |
分享拍摄地点、地图展示、距离计算 |
| 关注系统 |
关注/取消关注、粉丝/关注列表 |
| 拉黑系统 |
拉黑用户、取消拉黑、拉黑列表 |
| 通知系统 |
实时通知推送、未读数统计 |
| 搜索功能 |
搜索用户/需求/作品/搭子 |
| 推荐算法 |
个性化推荐、同城推荐、热度排序 |
- 模特 (model):发布约拍需求、选择摄影师
- 摄影师 (photographer):接单、展示作品集
- Node.js + Express
- TypeScript
- MongoDB + Mongoose
- JWT 认证
- Socket.IO 实时通信
- React 18 + TypeScript
- Vite 构建工具
- Tailwind CSS
- Socket.IO Client
- Zustand 状态管理
- 微信小程序原生开发(代码在 miniprogram 目录)
yuepai-platform/
├── backend/ # 后端服务
│ ├── src/
│ │ ├── routes/ # API 路由 (21个模块)
│ │ │ ├── user.route.ts # 用户相关
│ │ │ ├── demand.route.ts # 约拍需求
│ │ │ ├── chat.route.ts # 实时聊天
│ │ │ ├── partner.route.ts # 找搭子
│ │ │ ├── location.route.ts # 机位分享
│ │ │ ├── work.route.ts # 作品集
│ │ │ ├── follow.route.ts # 关注系统
│ │ │ ├── block.route.ts # 拉黑系统
│ │ │ ├── notification.route.ts # 通知
│ │ │ └── ... # 其他路由
│ │ ├── models/ # 数据模型 (17个)
│ │ ├── middleware/ # 中间件 (认证等)
│ │ ├── utils/ # 工具函数
│ │ ├── jobs/ # 定时任务
│ │ └── app.ts # 应用入口
│ └── package.json
│
├── frontend/ # 前端应用 (网页版)
│ ├── src/
│ │ ├── pages/ # 页面组件 (38个)
│ │ │ ├── NewHomePage.tsx # 主页
│ │ │ ├── LoginPage.tsx # 登录
│ │ │ ├── RegisterPage.tsx # 注册
│ │ │ ├── ChatPage.tsx # 聊天
│ │ │ ├── DemandDetailPage.tsx # 需求详情
│ │ │ ├── DemandForm.tsx # 发布需求
│ │ │ ├── PartnerPage.tsx # 找搭子
│ │ │ ├── LocationPage.tsx # 机位分享
│ │ │ ├── WorksPage.tsx # 作品列表
│ │ │ ├── MinePage.tsx # 个人中心
│ │ │ ├── PublicProfilePage.tsx # 公开资料
│ │ │ ├── SearchPage.tsx # 搜索
│ │ │ └── ... # 其他页面
│ │ ├── components/ # 通用组件
│ │ ├── services/ # API 服务
│ │ ├── utils/ # 工具函数
│ │ ├── stores/ # Zustand 状态
│ │ └── App.tsx
│ └── package.json
│
├── miniprogram/ # 微信小程序
│
└── docs/ # 文档和日志
├── PROJECT_DOCUMENTATION.md # 详细文档
├── SERVER_MANAGEMENT_GUIDE.md # 服务器部署指南
└── LOCAL_DEVELOPMENT_GUIDE.md # 本地开发指南
| 接口 |
方法 |
说明 |
/register |
POST |
用户注册 |
/login |
POST |
用户登录 |
/forgot-password |
POST |
忘记密码 |
/reset-password |
POST |
重置密码 |
/profile |
GET/PUT |
获取/更新资料 |
/verify-name |
POST |
实名认证 |
/upgrade-to-photographer |
POST |
升级摄影师 |
/wechat-login |
POST |
微信登录 |
/public/:id |
GET |
公开用户信息 |
| 接口 |
方法 |
说明 |
/ |
GET/POST |
获取列表/发布需求 |
/my |
GET |
我的需求 |
/:id |
GET/PUT/DELETE |
需求详情/更新/删除 |
/:id/take |
PUT |
摄影师接单 |
/:id/confirm-cooperation |
PUT |
确认合作 |
/:id/complete |
PUT |
完成订单 |
/:id/cancel-interest |
PUT |
取消接单意向 |
| 接口 |
方法 |
说明 |
/ |
GET |
获取聊天列表 |
/direct |
POST |
创建私聊 |
/:id |
GET |
获取聊天详情 |
/:id/messages |
GET/POST |
获取/发送消息 |
/:id/read |
POST |
标记已读 |
| 接口 |
方法 |
说明 |
/ |
GET/POST |
作品列表/发布作品 |
/my |
GET |
我的作品 |
/user/:id |
GET |
用户作品 |
/:id |
GET/DELETE |
作品详情/删除 |
| 接口 |
方法 |
说明 |
/ |
GET/POST |
搭子列表/发布帖子 |
/my |
GET |
我的帖子 |
/:id |
GET/PUT/DELETE |
详情/更新/删除 |
/:id/contact |
POST |
联系搭子 |
/api/follow - 关注系统
/api/block - 拉黑系统
/api/notification - 通知系统
/api/location - 机位分享
/api/like - 点赞
/api/collection - 收藏
/api/search - 搜索
/api/upload - 文件上传
# 启动 MongoDB
brew services start mongodb/brew/mongodb-community
# 后端
cd backend && npm install && npm run dev
# 前端
cd frontend && npm install && npm run dev
前端访问地址:http://localhost:5173
详见 SERVER_MANAGEMENT_GUIDE.md
线上地址:https://paiyipai.xyz
JWT_SECRET=your_jwt_secret
MONGODB_URI=mongodb://localhost:27017/yuepai-platform
PORT=5001
VITE_API_URL=https://paiyipai.xyz/api
VITE_SOCKET_URL=https://paiyipai.xyz