我开源了一个短视频应用(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 访问

小结

持续更新中,欢迎关注。

相关推荐
AAA阿giao5 小时前
从零构建一个现代登录页:深入解析 Tailwind CSS + Vite + Lucide React 的完整技术栈
前端·css·react.js
ursazoo6 小时前
写了一份 7000字指南,让 AI 帮我消化每天的信息流
人工智能·开源·github
昨晚我输给了一辆AE866 小时前
为什么现在不推荐使用 React.FC 了?
前端·react.js·typescript
不会敲代码16 小时前
深入浅出 React 闭包陷阱:从现象到原理
前端·react.js
不会敲代码16 小时前
React性能优化:深入理解useMemo和useCallback
前端·javascript·react.js
不会敲代码113 小时前
从入门到进阶:手写React自定义Hooks,让你的组件更简洁
前端·react.js
冬奇Lab13 小时前
一天一个开源项目(第37篇):awesome-selfhosted - 自托管软件资源集合
开源·自动化运维·资讯
pe7er1 天前
状态提升:前端开发中的状态管理的设计思想
前端·vue.js·react.js
晚风予星1 天前
Ant Design Token Lens 迎来了全面升级!支持在 .tsx 或 .ts 文件中直接使用 Design Token
前端·react.js·visual studio code
冬奇Lab1 天前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯