Skip to content
/ Jank Public

Jank,一个轻量级的博客系统,基于 Go 语言和 Echo 框架开发,强调极简、低耦合和高扩展。

License

Notifications You must be signed in to change notification settings

Done-0/Jank

Folders and files

NameName
Last commit message
Last commit date
Mar 14, 2025
Feb 26, 2025
Mar 20, 2025
Mar 29, 2025
Mar 29, 2025
Mar 29, 2025
Feb 26, 2025
Mar 17, 2025
Feb 26, 2025
Feb 26, 2025
Apr 11, 2025
Apr 11, 2025
Mar 20, 2025
Mar 25, 2025
Mar 25, 2025
Feb 26, 2025

Repository files navigation

Jank

Jank,一个轻量级的博客系统,基于 Go 语言和 Echo 框架开发,强调极简、低耦合和高扩展

Stars   Forks   Contributors   Issues   Pull Requests   License

简体中文 | English


Jank 是一个轻量级的博客系统,基于 Go 语言和 Echo 框架开发,设计理念强调极简、低耦合和高扩展,旨在为用户提供功能丰富、界面简洁、操作简单且安全可靠的博客体验。

注:项目缺少专业的前端,在此诚邀前端开发者一起参与前端项目开发,期待您的宝贵意见和贡献!

速览

👉 演示站| Demo:https://www.jank.org.cn

👉【Jank 博客系统】全新技术栈与 UI】

👉 前端仓库:https://github.com/Done-0/Jank-website

home-page.png posts-page.png post1-page.png post2-page.png

注:因为还在推出阶段,部分配置文件可能需要根据实际情况更改,具体请使用下面的联系方式联系作者,或进入开发者社区交流。

技术栈

  • Go 语言:热门后端开发语言,适合构建高并发应用。
  • Echo 框架:高性能的 Web 框架,支持快速开发和灵活的路由管理。
  • 数据库:开源的关系型数据库,支持 Postgres、MySQL 和 SQLite。
  • Redis:热门缓存解决方案,提供快速数据存取和持久化选项。
  • JWT:安全的用户身份验证机制,确保数据传输的完整性和安全性。
  • Docker:容器化部署工具,简化应用的打包和分发流程。
  • 前端:react + nextjs + shadcn/ui + tailwindcss4。

功能模块

  • 账户模块:实现 JWT 身份验证,支持用户登录、注册、注销、密码修改和个人信息更新。
  • 权限模块:实现 RBAC(Role-Based Access Control)角色权限管理,支持用户-角色-权限的增删改查。
    • 基本功能已实现,考虑到用户使用的不友好性和复杂性,因此暂不推出此功能。
  • 文章模块:提供文章的创建、查看、更新和删除功能。
  • 分类模块:支持类目树及子类目树递归查询,单一类目查询,以及类目的创建、更新和删除。
  • 评论模块:提供评论的创建、查看、删除和回复功能,支持评论树结构的展示。
  • 插件系统:正在火热开发中,即将推出...
  • 其他功能
    • 提供 OpenAPI 接口文档
    • 集成 Air 实现热重载
    • 提供 Logrus 实现日志记录
    • 支持 CORS 跨域请求
    • 提供 CSRF 和 XSS 防护
    • 支持 Markdown 的服务端渲染
    • 集成图形验证码功能
    • 支持 QQ/Gmail/Outlook 等主流邮箱服务端发送能力
    • 其他模块正在开发中,欢迎提供宝贵意见和建议!

本地开发

  1. 安装依赖

    # 安装 swagger 工具
    go install github.com/swaggo/swag/cmd/swag@latest
    
    # 安装依赖包
    go mod tidy
  2. 配置数据库和邮箱
    修改 configs/config.yaml 文件中的数据库配置和邮箱配置,示例如下:

    database:
      DB_DIALECT: "postgres" # 数据库类型, 可选值: postgres, mysql, sqlite
      DB_NAME: "jank_db"
      DB_HOST: "127.0.0.1" # 如果使用docker,则改为"postgres_db"
      DB_PORT: "5432"
      DB_USER: "<DATABASE_USER>"
      DB_PSW: "<DATABASE_PASSWORD>"
      DB_PATH: "./database" # SQLite 数据库文件路径
    
    # 邮箱类型和 SMTP 授权码(可选)
    EMAIL_TYPE: "qq" # 邮箱类型,可选值: qq, gmail, outlook
    FROM_EMAIL: "<FROM_EMAIL>" # 发件人邮箱
    EMAIL_SMTP: "<EMAIL_SMTP>" # SMTP 授权码
  3. 启动服务
    使用以下命令启动应用:

    go run main.go

    或使用 Air 进行热重载:

    此方法最为便捷,但提前配置环境变量 GOPATH。

    # 安装 air,需要 go 1.22 或更高版本
    go install github.com/air-verse/air@latest
    
    # 热重载启动
    air -c ./configs/.air.toml
  4. 访问接口
    本地启动应用后,浏览器访问 http://localhost:9010/ping

Docker 容器部署(postgres)

  1. 修改 configs/config.yaml 文件中的数据库配置和邮箱配置,示例如下:

    APP_HOST: "0.0.0.0" # 如果使用docker,则改为"0.0.0.0"
    
    database:
      DB_DIALECT: "postgres" # 数据库类型, 可选值: postgres, mysql, sqlite
      DB_NAME: "jank_db"
      DB_HOST: "postgres_db" # 如果使用docker,则改为"postgres_db"
      DB_PORT: "5432"
      DB_USER: "<DATABASE_USER>"
      DB_PSW: "<DATABASE_PASSWORD>"
      DB_PATH: "./database" # SQLite 数据库文件路径
    
    # 邮箱类型和 SMTP 授权码(可选)
    EMAIL_TYPE: "qq" # 邮箱类型,可选值: qq, gmail, outlook
    FROM_EMAIL: "<FROM_EMAIL>" # 发件人邮箱
    EMAIL_SMTP: "<EMAIL_SMTP>" # SMTP 授权码
  2. 修改 docker-compose.yaml 文件中的环境变量,示例如下:

    environment:
      - POSTGRES_USER=<DATABASE_USER>
      - POSTGRES_PASSWORD=<DATABASE_PASSWORD>
  3. 启动容器:

    docker-compose up -d

接口文档

  1. 本地启动查看 swagger 文档:本地启动应用后,通过浏览器访问 http://localhost:9010/swagger/index.html

  2. README.md 文档:在 docs 目录下,打开 README.md 文件查看。

  3. postman 文档:在 docs 目录下,导入 docs/Jank_blog.postman_collection.json 至 Postman 查看。

roadmap(船新推出)

image.png

注:黑色为已完成部分,白色色为待完成部分。

官方社区

如果有任何疑问或建议,欢迎加入微信官方社区讨论。

官方社区

注:因社群成员较多,请自觉遵守规范。
严禁讨论涉黄、赌、毒及政治敏感内容,禁止发布任何形式的不良广告。

贡献者名单

贡献者名单

特别鸣谢

感谢各位对开源社区的支持,在此诚挚地对每一位赞助者表示感谢!

联系合作

广告、合作或者赞助可根据以上联系方式联系作者。

代码统计

主要语言 代码体积 最后提交 提交频率

详细统计

语言 文件数 代码行数 注释行数 空白行数 占比
Go 78 3216 635 648 92.0%
Docker 1 16 14 13 0.5%
YAML 3 227 21 32 6.5%
Markdown 1 1 0 0 0.0%
其他 1 36 0 6 1.0%
总计 84 3496 670 699 100%

注:统计数据由 GitHub Actions 自动更新,最后更新于 2025-04-11 排除了 docs、tmp 目录和 go.mod、go.sum、LICENSE、.gitignore、.dockerignore、README.md、README_en.md 文件

许可证

本项目遵循 MIT 协议

增长趋势

GitHub Stats

About

Jank,一个轻量级的博客系统,基于 Go 语言和 Echo 框架开发,强调极简、低耦合和高扩展。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published