Project Icon

server

Go语言开发的Bangumi新版后端服务

新版Bangumi后端服务采用Go语言开发,基于微服务架构实现。项目整合了Echo框架、GORM ORM、搜索功能和消息队列系统。开发环境需要Go 1.22,支持Docker部署。项目提供完善的文档,遵循AGPL v3开源协议,鼓励社区参与贡献。

https://bgm.tv/ 新后端服务器。

GitHub go.mod Go版本 Codecov

要求

可选要求:

  • buf 基于 ProtoBuffer 生成 grpc 相关文件。
  • mockery 生成 mock
  • nodejs: 用于生成 openapi 文件。

初始化

git clone --recursive https://github.com/bangumi/server.git bangumi-server
cd bangumi-server
task

设置

可设置的环境变量

  • APP_ENV 不设置此变量默认为开发环境。在生产环境会被设置为 productionstage
  • MYSQL_HOST 默认 127.0.0.1
  • MYSQL_PORT 默认 3306
  • MYSQL_DB 默认 bangumi
  • MYSQL_USER 默认 user
  • MYSQL_PASS 默认 password
  • REDIS_URI 默认 redis://127.0.0.1:6379/0
  • HTTP_PORT 默认 3000

微服务相关

  • ETCD_ADDR etcd, 用于微服务的服务发现,留空(默认)的情况下各个微服务会使用 noop mock。示例:http://127.0.0.1:2379
  • ETCD_NAMESPACE etcd 服务注册的 key 前缀。大多数情况下不需要设置。

https://github.com/bangumi/service-timeline

搜索功能相关的环境变量

  • MEILISEARCH_URL meilisearch 地址,默认为空。不设置的话不会初始化搜索客户端。
  • MEILISEARCH_KEY meilisearch key。
  • KAFKA_BROKER kafka broker 地址,启动 canal 需要 kafka。

你也可以把配置放在 .env 文件中,go-task 会自动加载 .env 文件中的环境变量。

示例:

MYSQL_HOST="127.0.0.1"
MYSQL_PORT="3306"
MYSQL_USER="user"
MYSQL_PASS="password"
MYSQL_DB="bangumi"
REDIS_URI="redis://:redis-pass@127.0.0.1:6379/1"
MEILISEARCH_URL="http://127.0.0.1:7700/"

或者使用 yaml 格式的配置文件:

查看 config.example.yaml 或者 config/config.go

开发

bangumi 相关项目整体说明 bangumi/dev-docs

Web 框架: echo

ORM: GORMGORM Gen

启动 HTTP server

task web

启动 kafka consumer

task consumer

后端环境

redis 和 mysql 都在此 docker-compose 内 https://github.com/bangumi/dev-env

如果你不使用 docker ,请自行启动 mysql 和 redis 并导入 bangumi/dev-env 仓库内的数据。

依赖的微服务

贡献指南

更多的细节介绍请查看贡献指南

提交 Pull Request

如果你的 PR 是新功能,最好先发个 issue 讨论一下要不要实现,避免 PR 提交之后新功能本身被否决的问题。

如果已经存在相关的 issue,可以先在 issue 内回复一下自己的意向,或者创建一个 Draft PR 关联对应的 issue,避免撞车问题。

PR 标题需要遵守 conventional commits 风格

测试

使用 mock 进行部分测试。

task test       # 运行模拟单元测试,不需要其他依赖。
task test-db    # 运行模拟测试,以及需要 mysql 和 redis 的测试。相当于 `TEST_MYSQL=1 TEST_REDIS=1 task test`
task test-all   # 运行所有测试。

代码风格

task lint

配置文件

非 golang 文件 (yaml, json, markdown 等) 使用 prettier 进行格式化。 如果你没有 nodejs 环境,也可以直接提交 PR。GitHub Actions 会对文件进行检查并提出修改建议。

Go Mod

你不应当导入 github.com/bangumi/server/pkg 以外的任何路径。

具体可用的包见 pkg/readme.md

许可证

版权所有 (C) 2021-2022 bangumi server 贡献者。

源代码根据 GNU AGPLv3 许可证授权,可以在 LICENSE.txt 文件中找到。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号