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

小结

持续更新中,欢迎关注。

相关推荐
一颗甜苞谷35 分钟前
开源一款前后端分离的企业级网站内容管理系统,支持站群管理、多平台静态化,多语言、全文检索的源码
java·开发语言·开源
FastCAE202239 分钟前
第二届开放原子大赛-开源工业软件算法集成大赛即将启动!
开源
放逐者-保持本心,方可放逐1 小时前
react 框架应用+总结+参考
前端·前端框架·react
梓羽玩Python1 小时前
推荐6款效果逼真的AI 3D建模工具!
开源·github·产品
0x派大星2 小时前
Golang 并发编程入门:Goroutine 简介与基础用法
开发语言·后端·golang·go·goroutine
白总Server4 小时前
孤岛架构与微服务架构区别
java·开发语言·后端·微服务·云原生·架构·scala
techdashen4 小时前
标准库中的模糊测试
go
蚂蚁RichLab前端团队4 小时前
走进高校:互动引擎 Galacean Engine 的成长历程
前端·开源·webgl
一颗甜苞谷5 小时前
开源一个开发的聊天应用与AI开发框架,集成 ChatGPT,支持私有部署的源码
人工智能·chatgpt·开源