Jank,一个轻量级的博客系统,基于 Go 语言和 Echo 框架开发,强调极简、低耦合和高扩展
简体中文 | English
Jank 是一个轻量级的博客系统,基于 Go 语言和 Echo 框架开发,设计理念强调极简、低耦合和高扩展,旨在为用户提供功能丰富、界面简洁、操作简单且安全可靠的博客体验。
注:本项目当前缺少前端部分,在此诚邀有志于前端开发的开发者加入,共同参与开发工作,期待您的宝贵意见和贡献!
👉演示站|Demo:https://fenderisfine.icu
👉独立使用版:https://github.com/Done-0/Jank/tree/standalone
👉部署文档:Docker 部署文档
👉前端仓库:https://github.com/Done-0/Jank-website
注:因为还在推出阶段,部分配置文件可能需要根据实际情况更改,具体请使用下面的联系方式联系作者,或者进入开发者社区交流。
- Go 语言:热门后端开发语言,适合构建高并发应用。
- Echo 框架:高性能的 Web 框架,支持快速开发和灵活的路由管理。
- PostgreSQL:开源的关系型数据库,提供高性能、高可靠性的数据存储。
- Redis:热门缓存解决方案,提供快速数据存取和持久化选项。
- JWT:安全的用户身份验证机制,确保数据传输的完整性和安全性。
- Docker:容器化部署工具,简化应用的打包和分发流程。
- 前端:react + umi + shadcn/ui + tailwindcss。
- 账户模块:实现 JWT 身份验证,支持用户登录、注册、注销、密码修改和个人信息更新。
- 权限模块:实现 RBAC(Role-Based Access Control)角色权限管理,支持用户-角色-权限的增删改查。
- 基本功能已实现,考虑到用户使用的不友好性和复杂性,第一个 release 暂不推出此功能。
- 文章模块:提供文章的创建、查看、更新和删除功能。
- 分类模块:支持类目树及子类目树递归查询,单一类目查询,以及类目的创建、更新和删除。
- 评论模块:提供评论的创建、查看、删除和回复功能,支持评论树结构的展示。
- 插件系统:正在火热开发中,即将推出...
- 其他功能:
- 提供 OpenAPI 接口文档
- 集成 Air 实现热重载
- 提供 Logrus 实现日志记录
- 支持 CORS 跨域请求
- 提供 CSRF 和 XSS 防护
- 支持 Markdown 的服务端渲染
- 其他模块正在开发中,欢迎提供宝贵意见和建议!
-
安装依赖:
# 安装 swagger 工具 go install github.com/swaggo/swag/cmd/swag@latest # 安装依赖包 go mod tidy
-
配置数据库和邮箱:
修改configs/config.yaml
文件中的数据库配置和邮箱配置,示例如下:# mysql 数据库配置 DB_USER: "<DATABASE_USER>" DB_PSW: "<DATABASE_PASSWORD>" # QQ 邮箱和 SMTP 授权码(可选) QQ_SMTP: "<QQ_SMTP>" FROM_EMAIL: "<FROM_QQ_EMAIL>"
-
启动服务:
使用以下命令启动应用:go run main.go
或使用 Air 进行热重载:
此方法最为便捷,但提前配置环境变量 GOPATH。
# 安装 air,需要 go 1.22 或更高版本 go install github.com/air-verse/air@latest # 热重载启动 air -c ./configs/.air.toml
-
访问接口:
本地启动应用后,浏览器访问 http://localhost:9010/ping
-
修改
configs/config.yaml
文件中的数据库配置和邮箱配置,示例如下:# 应用配置 APP_HOST: "0.0.0.0" # mysql 数据库配置 DB_USER: "<DATABASE_USER>" DB_PSW: "<DATABASE_PASSWORD>" # QQ 邮箱和 SMTP 授权码(可选) QQ_SMTP: "<QQ_SMTP>" FROM_EMAIL: "<FROM_QQ_EMAIL>"
-
修改
docker-compose.yaml
文件中的环境变量,示例如下:environment: - POSTGRES_USER=<DATABASE_USER> - POSTGRES_PASSWORD=<DATABASE_PASSWORD>
-
启动容器:
docker-compose up -d
-
本地启动查看 swagger 文档:本地启动应用后,通过浏览器访问 http://localhost:9010/swagger/index.html
-
README.md 文档:在
docs
目录下,打开README.md
文件查看。 -
postman 文档:在
docs
目录下,导入docs/Jank_blog.postman_collection.json
至 Postman 查看。
注:黑色为已完成部分,白色色为待完成部分。
架构图及可视化接口文档:在项目根目录中打开 docs/jank_blog_architecture.drawio
文件。
注:该文档由
draw.io
绘制,需要使用 draw.io 工具打开。
如果有任何疑问或建议,欢迎加入官方社区交流。
感谢各位对本项目的支持!
- QQ: 927171598
- 邮箱:[email protected]
- 开发者社区(QQ):828270460
语言 | 文件数 | 代码行数 | 注释行数 | 空白行数 | 占比 |
---|---|---|---|---|---|
Go | 75 | 2980 | 560 | 602 | 93.6% |
Docker | 1 | 16 | 14 | 13 | 0.5% |
YAML | 3 | 151 | 10 | 25 | 4.7% |
其他 | 1 | 36 | 0 | 6 | 1.1% |
总计 | 80 | 3183 | 584 | 646 | 100% |
注:统计数据由 GitHub Actions 自动更新,最后更新于 2025-03-10 排除了 docs、tmp 目录和 go.mod、go.sum、LICENSE、.gitignore、.dockerignore、README.md、README_en.md 文件 排除了 docs、tmp 目录和 go.mod、go.sum、LICENSE、.gitignore、.dockerignore、README.md、README_en.md 文件 排除了 docs、tmp 目录和 go.mod、go.sum、LICENSE、.gitignore、.dockerignore、README.md、README_en.md 文件
本项目遵循 MIT 协议。