<!-- LOGO -->
<div align="center">
<a href="https://github.com/zheng-yi-yi/SimpleDouyin/">
<img src="./asset/images/logo.jpg" alt="Logo" width="550" style="border-radius: 10px;">
</a>
</br>
<!-- shields -->
![GitHub watchers](https://img.shields.io/github/watchers/zheng-yi-yi/SimpleDouyin?style=flat-square&logo=github)
![GitHub Repo stars](https://img.shields.io/github/stars/zheng-yi-yi/SimpleDouyin?style=flat-square&logo=github&logoColor=orangered)
![GitHub forks](https://img.shields.io/github/forks/zheng-yi-yi/SimpleDouyin?style=flat-square&logo=github&logoColor=lightseagreen)
![GitHub contributors](https://img.shields.io/github/contributors/zheng-yi-yi/SimpleDouyin?style=flat-square&logo=github&logoColor=slateblue)
<h3>
<a href="#🚀-feature-module">Feature module</a>
<span> | </span>
<a href="https://github.com/zheng-yi-yi/SimpleDouyin/blob/dev/asset/document/Database_Design.md">Database design</a>
<span> | </span>
<a href="https://github.com/zheng-yi-yi/SimpleDouyin/blob/dev/asset/document/Layered_Architecture.md">Architecture</a>
<span> | </span>
<a href="#⌨️-how-to-use">How to use</a>
</h3>
</div>
# ☁️ Introduction
`SimpleDouyin`,一个基于 `Golang` 编写的短视频分享平台后端服务,以促进用户互动和内容分享,是第六届字节跳动青训营后端大项目的实现,涵盖了用户、视频、喜欢、关系、评论和聊天等功能模块。
<div align="center">
<a href="https://github.com/zheng-yi-yi/SimpleDouyin/">
<img src="./asset/images/show.png" alt="Logo" width="95%" style="border-radius: 10px;">
</a>
</div>
---
## 🌟 Technology
<div align="center">
<table style="text-align: center;">
<tr>
<th>Technology</th>
<th style="text-align: center;">Description</th>
</tr>
<tr>
<td><a href="https://go.dev/doc/" target="_blank">Go</a></td>
<td>静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言</td>
</tr>
<tr>
<td><a href="https://gin-gonic.com/docs/" target="_blank">Gin</a></td>
<td>构建 Web 服务和 API,处理 HTTP 请求和响应</td>
</tr>
<tr>
<td><a href="https://dev.mysql.com/doc/" target="_blank">MySQL</a></td>
<td>存储各数据模块,以支持数据的持久化存储和管理</td>
</tr>
<tr>
<td><a href="https://gorm.io/" target="_blank">GORM</a></td>
<td>用于进行数据库查询、插入、更新和删除操作</td>
</tr>
<tr>
<td><a href="https://pkg.go.dev/github.com/golang-jwt/jwt/v5" target="_blank">golang-jwt</a></td>
<td>实现 JWT 鉴权,用于用户身份验证和授权</td>
</tr>
<tr>
<td><a href="https://pkg.go.dev/golang.org/x/crypto/bcrypt" target="_blank">bcrypt</a></td>
<td>对用户密码进行加密和验证,确保密码存储的安全性</td>
</tr>
<tr>
<td><a href="https://www.ffmpeg.org/" target="_blank">Ffmpeg</a></td>
<td>多媒体处理工具,用于视频文件的截图操作,生成封面</td>
</tr>
<tr>
<td><a href="https://github.com/spf13/viper" target="_blank">viper</a></td>
<td>用于加载数据库连接信息、密钥、服务器端口等配置参数</td>
</tr>
<tr>
<td><a href="https://github.com/gavv/httpexpect/" target="_blank">httpexpect</a></td>
<td>编写 HTTP 请求和响应的测试用例,验证各个 API 端点的正确性和一致性</td>
</tr>
</table>
</div>
---
# 🚀 Feature module
本项目划分为六个模块,功能描述如下:
1. ✅用户模块
- 用户注册:通过提供用户名和密码进行用户注册
- 用户登录:已注册用户可以通过用户名和密码进行登录
- 用户信息:获取登录用户的个人信息,如头像、昵称,关注数和粉丝数等
2. ✅视频模块
- 视频浏览:不限制登录状态,用户可以刷视频
- 视频上传:登录用户可以上传短视频,包括标题和视频文件
- 发布列表:获取用户所有作品
3. ✅喜欢模块
- 赞操作:用户可以对视频进行点赞操作或取消点赞
- 喜欢列表:获取登录用户所有点赞视频
4. ✅关系模块
- 关系操作:登录用户对其他用户进行关注操作或取关
- 关注列表:获取登录用户的关注列表
- 粉丝列表:获取登录用户的粉丝列表
- 好友列表:获取所有关注登录用户的粉丝列表
5. ✅评论模块
- 评论操作:登录用户可以对视频进行评论
- 评论列表:查看视频的所有评论
6. ✅消息模块
- 聊天记录:获取当前登录用户和指定用户的聊天记录
- 发送消息:登录用户将消息发送给好友
---
# 💻 Layered_Architecture
本项目的主体结构如下:
```bash
SimpleDouyin/
├── config/ # 项目配置
├── setup/ # 项目初始化
├── controllers/ # 处理 HTTP 请求的控制器
├── services/ # 存放系统的业务逻辑代码
├── models/ # 存放数据模型以及与数据库交互的操作
├── public/ # 存放静态资源文件,包括视频文件和封面等
├── middlewares/ # 自定义中间件函数,用于在路由处理前后执行操作
├── utils/ # 工具函数:包括 encrypt加密操作和ffmpeg截图服务等
├── main.go # 项目入口:包含 HTTP 服务器初始化和启动代码
└── router.go # 路由层:路由定义,映射 HTTP 请求到相应的处理函数
```
可以看到,`SimpleDouyin` 项目采用分层架构,代码按照路由层、控制层、服务层和持久层来划分,这样可以有效地将不同的功能逻辑分开,利于构建一个结构清晰、模块化、可扩展且易于维护的后端应用程序。
<div align="center">
<img src="./asset/images/architecture.png" alt="architecture.png" width="90%" style="border-radius: 10px;">
</div>
<br/>
具体内容可查看 [分层架构设计思路开发文档](./asset/document/Layered_Architecture.md) 。
# 🔍 Database design
`SimpleDouyin` 项目在数据存储方面需要构建以下实体表:
<div align="center">
<img src="./asset/images/database.png" alt="database.png" style="border-radius: 10px;">
</div>
具体内容可查看 [数据库设计思路开发文档](./asset/document/Database_Design.md) 。
# ⌨️ How to use
下面是一些简单的步骤,帮助你快速启动项目并在本地运行起来。
<details>
<summary> 点击查看 | 快速开始 </summary>
## 前言
首先确保本地已经配置好了 `Go` 和 `MySQL` 的开发环境,并且已成功安装了 `FFmpeg` 工具(该工具用于视频上传后的封面截图服务)。
> 本项目是在 `Windows` 系统上进行开发的,有关 `Go` 开发环境的具体配置步骤可以自行查询。关于 `FFmpeg` 工具的安装,请[访问 FFmpeg 官方网站](https://ffmpeg.org/) 自行下载安装。
## 克隆项目
```git
git clone https://github.com/zheng-yi-yi/SimpleDouyin.git
```
## 进入项目根目录
```bash
cd SimpleDouyin
```
## 安装依赖
使用以下命令安装项目所需的依赖:
```go
go mod tidy
```
## 修改配置
打开项目根目录下的 `config.yaml` 文件:
- 填入: `username`
- 填入:`password`
接着修改 `config` 目录下的 `config.go` 文件:
- 将 `LOCAL_IP_ADDRESS` 的值修改为本机 `IP` 地址。
<details>
<summary> 如何查询本机 IP 地址 | 点击查看 </summary>
</br>
>
> 1. 按 `Win` + `R` 打开运行窗口
> 2. 输入 `cmd` 打开命令行窗口
> 3. 输入 `ipconfig` 并回车,即可查到本机 IP 地址。
> 4. 比如:`IPv4 地址 . . . . . . . . . . . . : 192.168.1.7`
</br>
</details>
## 添加数据库
使用以下命令创建数据库 `douyin`。
```sql
CREATE DATABASE douyin
```
## 编译运行
编译项目:
```shell
go build
```
编译后会生成一个可执行文件,运行:
```
./SimpleDouyin.exe
```
## APP
最后�
没有合适的资源?快使用搜索试试~ 我知道了~
极简版抖音-第六届字节跳动青训营后端大作业.zip
共102个文件
go:53个
png:27个
mp4:10个
需积分: 5 1 下载量 152 浏览量
2024-05-01
11:20:56
上传
评论
收藏 32.57MB ZIP 举报
温馨提示
极简版抖音-第六届字节跳动青训营后端大作业.zip
资源推荐
资源详情
资源评论
收起资源包目录
极简版抖音-第六届字节跳动青训营后端大作业.zip (102个子文件)
.gitignore 484B
sampledata_init.go 16KB
relation_service.go 6KB
interact_api_test.go 5KB
user_resp.go 4KB
social_api_test.go 4KB
base_api_test.go 4KB
feed.go 4KB
dao.go 4KB
jwt.go 3KB
videoPublish.go 3KB
relation_resp.go 3KB
favorite_service.go 3KB
video_resp.go 3KB
video_service.go 2KB
favoriteList.go 2KB
test_helpers.go 2KB
router.go 2KB
publishList.go 2KB
comment_service.go 2KB
comment_resp.go 2KB
default_settings.go 2KB
message_resp.go 2KB
commentlist.go 2KB
user_service.go 2KB
config_init.go 2KB
favorite_resp.go 2KB
shared_resp.go 2KB
commentAction.go 1KB
followerList.go 1KB
messageChat.go 1KB
followlist.go 1KB
friendList.go 1KB
gorm_init.go 1KB
relationAction.go 1KB
favoriteAction.go 1KB
user_model.go 1KB
message_service.go 1KB
messageAction.go 979B
main.go 907B
video_model.go 832B
login.go 815B
user.go 790B
register.go 742B
comment_model.go 676B
publish.go 671B
config.go 618B
models_init.go 591B
encrypt.go 560B
startTime.go 483B
message_model.go 459B
favorite_model.go 417B
relation_model.go 365B
ffmpeg.go 218B
favicon.ico 4KB
bottom.jpg 98KB
logo.jpg 73KB
LICENSE 1KB
Layered_Architecture.md 10KB
Database_Design.md 9KB
README.md 8KB
Middleware.md 5KB
go.mod 3KB
1_1.mp4 3.73MB
5_2.mp4 3.69MB
4_2.mp4 2.64MB
3_1.mp4 2.56MB
1_2.mp4 2.07MB
3_2.mp4 1.3MB
2_1.mp4 1.15MB
4_1.mp4 1.14MB
6_1.mp4 1.1MB
5_1.mp4 941KB
6_1.png 959KB
4_2.png 947KB
5.png 860KB
4.png 632KB
5.png 628KB
2.png 626KB
show.png 605KB
2_1.png 584KB
6.png 572KB
3.png 567KB
1.png 566KB
3.png 558KB
2.png 548KB
4_1.png 537KB
3_2.png 530KB
1.png 481KB
3_1.png 403KB
default.png 392KB
5_1.png 349KB
6.png 311KB
5_2.png 300KB
1_2.png 266KB
1_1.png 220KB
architecture.png 122KB
default.png 91KB
database.png 87KB
4.png 37KB
共 102 条
- 1
- 2
资源评论
JJJ69
- 粉丝: 6266
- 资源: 5775
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MyBatisCodeHelperPro 3.3.2-2322 2023.2-2024.1
- 基于Python的简单的学生成绩管理程序设计(课程设计)
- jdk-8u20-windows-x64安装版本-jdk-8u301-linux-x64解压版
- 植物大战僵尸杂交版 修改阳光和冷却
- html css js网页设计ntion-model-for-开发笔记
- 数据库课程设计-processing开发笔记
- matlab画图sic-开发demo
- 数据库原理课程设计-图书馆数据库管理系统
- IEC101Sim IEC870-5-101协议仿真主站、子站 (含源码 C++Builder)
- 2212503007陈熙炜跨境2202作业2.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功