feedsystem_video_go

基于 Go + Vue 3 的短视频 Feed 系统含账号、视频、点赞、评论、关注、Feed 流,支持 Redis 缓存与 RabbitMQ 异步 WorkerAPI 与 Worker 可拆分部署)。

更完整的视频 Feed 流系统项目

LeoninCS/GCFeed 是更为全面完整的视频 Feed 流系统项目,覆盖更丰富的业务能力与工程实践。

功能

模块 功能
账号 注册/登录/改名/改密/登出头像上传个人简介Refresh Token 双 Token 鉴权
视频 上传/发布/删除,按作者查看,详情(三级缓存),#话题标签
点赞 点赞/取消/是否已赞/已赞列表SSE 实时通知
评论 发布/删除/列表,@提及 通知
关注 关注/取关/粉丝列表/关注列表/粉丝计数SSE 实时通知
Feed 最新/点赞榜/热度榜/关注流/话题标签流,冷热分离+游标分页,虚拟滚动
私信 发送/对话列表
通知 SSE 实时推送,未读计数,已读标记

Docker Compose 一键启动

docker compose up -d --build

访问:

  • 前端:http://localhost:5173
  • 后端 APIhttp://localhost:8080
  • RabbitMQ 管理台:http://localhost:15672admin / password123

默认 .env 自动生成 JWT 密钥。生产环境请修改 JWT_SECRET

测试数据

启动后内置 100 个测试用户(user001 ~ user100,密码均为 123456user001 已发布视频并拥有粉丝/点赞数据。

本地开发

# 启动依赖
docker compose up -d mysql redis rabbitmq

# 后端
cd backend
CONFIG_PATH=configs/config.compose-local.yaml go run ./cmd

# Worker
CONFIG_PATH=configs/config.compose-local.yaml go run ./cmd/worker

# 前端
cd frontend
npm install && npm run dev

接口清单

账号 /account

方法 路径 鉴权 说明
POST /register 注册(限流 5次/时/IP
POST /login 登录,返回 access_token + refresh_token
POST /refresh 刷新 access_token用 refresh_token
POST /changePassword 改密码(需旧密码)
POST /findByID 按 ID 查用户
POST /findByUsername 按用户名查
POST /getProfile 用户主页(视频数/获赞/粉丝数)
POST /logout JWT 登出(同时失效双 token
POST /rename JWT 改名
POST /uploadAvatar JWT 上传头像jpg/png/webp≤10MB
POST /updateProfile JWT 更新简介/头像

视频 /video

方法 路径 鉴权 说明
POST /publish JWT 发布视频(自动提取 #话题)
POST /uploadVideo JWT 上传视频文件mp4≤200MB
POST /uploadCover JWT 上传封面jpg/png/webp≤10MB
POST /listByAuthorID 按作者查视频
POST /getDetail 视频详情(三级缓存)

点赞 /like

方法 路径 鉴权 说明
POST /like JWT 点赞
POST /unlike JWT 取消点赞
POST /isLiked JWT 是否已赞
POST /listMyLikedVideos JWT 我赞过的视频

评论 /comment

方法 路径 鉴权 说明
POST /listAll 评论列表分页200按时间升序
POST /publish JWT 发布评论(支持 @username 提及)
POST /delete JWT 删除评论

关注 /social

方法 路径 鉴权 说明
POST /follow JWT 关注
POST /unfollow JWT 取关
POST /getAllFollowers JWT 粉丝列表(含粉丝数)
POST /getAllVloggers JWT 关注列表(含关注数)
POST /getCounts JWT 粉丝/关注计数

Feed /feed

方法 路径 鉴权 说明
POST /listLatest 软鉴权 最新视频(游标分页)
POST /listLikesCount 软鉴权 点赞排行(复合游标)
POST /listByPopularity 软鉴权 热度榜(快照分页)
POST /listByFollowing JWT 关注流
POST /listByTag 软鉴权 按 #话题 浏览

通知 /notification

方法 路径 鉴权 说明
GET /stream?token= SSE 实时推送
POST /list 通知列表
POST /markRead 标记已读(传 id 单条,不传全标)
POST /unreadCount 未读计数

私信 /message

方法 路径 鉴权 说明
POST /send JWT 发送私信
POST /list JWT 对话列表

环境变量

变量 默认值 说明
JWT_SECRET feedsystem-dev-secret-key JWT 签名密钥,生产须改
MYSQL_ROOT_PASSWORD 123456 MySQL root 密码
REDIS_PASSWORD 123456 Redis 密码
RABBITMQ_USER / RABBITMQ_PASS admin / password123 RabbitMQ 账号

详见 .env.example

Description
No description provided
Readme 2.1 MiB
Languages
Go 81.8%
TypeScript 12.9%
Shell 2.7%
CSS 1.7%
Dockerfile 0.8%
Other 0.1%