我开源了一个短视频应用(Go+React)|DouTok2.0 项目介绍

前言

大家好,这里是白泽,拖更了一段时间,抱歉。在 DouTok2.0 可以初步允许大家接入开发之后,这篇文章才得以出炉。

DouTok:一个开源的 web 端的短视频应用,采用微服务架构,包含前后端(React & Go),DouTok 正处在开发初期,目前已经完成了 基础的用户注册、登录、用户信息管理、视频上传、视频列表展示、评论、点赞、收藏等功能。

为什么要有 V2 版本:

例如:DouTok 是字节跳动青训营的参赛作品,但 DouTok1.0 版本的微服务划分不够合理,拆的过于零碎,也许看起来很"微服务",但与实际工作生产环境上的服务划分却背道而驰,微服务的划分不应过分追求"微",而是适应项目发展,在完善基本设计的前提下进行拆分。

DouTok 继续扩张的另一个卡点是其本身没有前端,只能依赖青训营中提供的"抖声"APP。为了让 DouTok 顺利扩张,所以我们决定开发一个全新的V2版本。在V2版本中,DouTok 减少了服务的划分,增加了前端项目,虽然现阶段依然不够完整,但是已经具备了继续扩张的土壤。

对参与过 DouTok1.0 维护的所有同学表示感谢!

后续规划

  • 前端:

    • 功能:页面布局协调,以及事件跳转完善等
    • 性能:React 组件优化与提炼等
  • 后端:

    • 功能:聊天系统(IM)、视频推荐、消息推送、私信等功能
    • 性能:可观测性、压力测试,缓存 or 消息队列接入等

参与贡献

无论你是前端开发者 还是后端开发者 ,都可以参与到 DouTok 的开发中来,我们欢迎你的加入!

🌟 仓库地址https://github.com/cloudzenith/DouTok

🔥 如何参与贡献:https://cloudzenith.github.io/DouTok/community

🐧 QQ群: 622383022

📺 B站讲解:白泽talk

🔑 开源学习仓库:go-learning

快速开始

本教程将带领你从零开始,循序渐进搭建并启动 DouTok 项目,若读者已具备相关知识,可选择性阅读。

所有信息参考文档站(非常详细): https://cloudzenith.github.io/DouTok/docs/quickstart/

项目架构

主要目录

这是一个巨仓项目,所有的服务都在这个仓库中,目录结构如下:

  • backend: 后端服务
  • frontend: 前端服务
  • test: 测试
  • deploy: 部署
  • docs-site: 文档站
  • env: 依赖环境部署
  • sql: 数据库脚本

页面展示

  • 上传视频
  • 视频
  • 评论 & 点赞 & 关注

环境准备

  1. Golang 1.22+

  2. Node 14.17+

  3. React.js + Next.js

  4. JetBrains GoLand/WebStorem

  5. VSCode

  6. Docker

必要组件配置及启动

  • Consul: 通过backend/gopkgs/launcher提供能力,所有后端服务均自动注册到Consul中
  • Redis: 缓存
  • MySQL: 持久化存储
  • MinIO: 对象存储
  • RocketMQ: 消息队列(不是必须)
  1. 找到env/basic.yml文件,通过命令docker-compose -f ./env/basic.yml up -d启动Consul, Redis, MySQL, MinIO
    (2、3步不是必须)
  2. 找到env/rocketmq/broker.conf文件,将brokerIP1修改为本地局域网IP
  3. 找到env/rocketmq.yml文件,通过命令docker-compose -f ./env/rocketmq.yml up -d启动RocketMQ

MySQL库表结构同步

  1. 进入sql目录
  2. 检查sql/Makefile文件,其中涉及的MySQL连接需注意应与本地环境一致
  3. 安装 goose 工具,执行go install github.com/pressly/goose/v3/cmd/goose@latest
  4. 执行make up命令,MySQL库表结构会同步到本地

启动后端服务

编译运行

  1. 进入backend目录下除gopkgs外的所有服务目录,依次 go run cmd/main.go 启动服务

镜像运行

  1. 进入backend目录下除gopkgs外的所有服务目录,执行make build以编译Docker镜像
  2. 进入env目录,检查configs下各个配置文件,应与本地环境保持一致,特别是 ./baseservice/config.yaml 中,minio.default.host 需要改成本机局域网IP
  3. 进入env目录,执行docker-compose -f backend.yml up -d启动所有后端服务

启动前端服务

  1. 进入frontend/doutok目录,执行pnpm install安装依赖
  2. 执行pnpm dev启动前端服务,通过 http://localhost:23000 访问

小结

持续更新中,欢迎关注。

相关推荐
a1117767 小时前
ROS2动力学控制器项目
人工智能·开源
夏天拐跑了西瓜8 小时前
Spring Cloud 微服务实战(八):Hystrix熔断降级——从服务雪崩到断路器模式
spring cloud·hystrix·微服务
2601_962069538 小时前
2026年医学数字人做科普视频的技术路线:从开源工具链到半自动化的工程复盘
开源·音视频
X54先生(人文科技)8 小时前
《元创力》卷宗 3.5《退场不是退出——碳硅协同驾驶原则的深层推导》
人工智能·深度学习·开源·ai写作·零知识证明
m4Rk_8 小时前
【论文阅读】Agent 记忆机制(61):CFGM——用粗到细的记忆落地贯通经验采集、知识蒸馏与在线纠错
论文阅读·人工智能·学习·开源·github
Casbin开源社区9 小时前
一个面板管住 29 个 AI 编程 Agent:Casbin Gateway 的配置统一、协议互转、用量统计与权限管控
人工智能·golang·开源·gateway·casbin
MeetTanG11 小时前
Go 实战锦囊|errgroup:优雅地管理并发任务组
后端·go
vHelios11 小时前
【电商项目】短信测试遇到的问题与解决方案:InaccessibleObjectException报错、单元测试通过但未接收到验证码
java·微服务
名字还没想好☜11 小时前
Go 标准库 flag 包实战:参数解析、子命令、自定义 Value 类型与默认值
开发语言·后端·golang·go
星哥说事11 小时前
自建一个智能知识库和知识图谱 Agent 开发平台-开源Yuxi
人工智能·开源·知识图谱