Skip to content

TobyMint/miniblog

Repository files navigation

Miniblog

Go Version Go Report Card License

📖 项目介绍

Miniblog 是一个基于 Go 语言开发的、遵循 Clean Architecture (整洁架构) 的企业级博客后端项目。

本项目不仅实现了用户管理和博客管理的核心业务功能,更重要的是展示了 Go 语言在现代后端开发中的最佳实践。它涵盖了从 API 设计依赖注入认证鉴权数据库 ORM结构化日志优雅关停 等全链路的技术细节,是展示后端工程能力的绝佳示例。

项目灵感来源于孔令飞老师的 Golang 实战课程,并在此基础上进行了工程化落地。

🛠 技术栈

本项目采用了业界主流的高性能组件,展示了对现代 Go 生态的熟练运用:

类别 组件/技术 说明
核心框架 Gin 高性能 Web 框架,处理 HTTP 请求
RPC 通信 gRPC + Protobuf 高效的微服务间通信与接口定义
数据库/ORM GORM 强大的 ORM 库,支持 MySQL 等多种数据库
认证与授权 JWT + Casbin 基于 Token 的认证与基于 RBAC/ABAC 的精细化授权
依赖注入 Wire Google 开源的编译时依赖注入工具,降低代码耦合
配置管理 Viper 支持多种格式(YAML/JSON)的配置热加载
命令行工具 Cobra 强大的 CLI 应用程序库
日志监控 Zap 高性能结构化日志库
API 文档 Swagger/OpenAPI 3.0 自动生成 RESTful API 文档
工程化 Makefile + GolangCI-Lint 自动化构建与代码质量静态检查

✨ 功能特性

🔐 用户中心

  • 注册/登录:基于 JWT 的安全认证机制。
  • 个人信息管理:支持查询、更新用户详情及密码修改。
  • 权限控制:基于 Casbin 实现灵活的 API 访问控制。

📝 博客系统

  • CRUD 操作:完整的博客文章创建、读取、更新、删除流程。
  • 列表查询:支持分页、排序等高级查询功能。

🏗 架构设计亮点

  • 整洁架构 (Clean Architecture)
    • Controller 层:处理 HTTP/gRPC 请求参数绑定与校验。
    • Biz 层:核心业务逻辑,不依赖具体实现。
    • Store 层:数据持久化,解耦数据库实现。
  • 标准化目录结构:遵循 golang-standards/project-layout 规范。
  • 统一错误处理:自定义错误码机制,通过中间件统一拦截处理。
  • 可观测性:集成了 Request ID 链路追踪、Pprof 性能分析。

🚀 快速开始

前置要求

  • Go 1.22+
  • MariaDB (或其他兼容数据库)
  • Make 工具

部署步骤

  1. 克隆项目

    git clone https://github.com/TobyIcetea/miniblog.git
    cd miniblog
  2. 初始化工作区

    go work init .
    go work use .
  3. 配置数据库

    • 创建数据库 miniblog
    • 导入 SQL 文件:source configs/miniblog.sql
    • 修改配置文件 configs/miniblog.yaml 中的数据库连接信息(如有)。
  4. 编译与运行

    # 编译项目
    make build
    
    # 启动 API 服务
    ./_output/mb-apiserver
  5. 验证服务

    curl http://127.0.0.1:5555/healthz
    # 输出: {"timestamp":"2026-01-06 ..."}
    # 项目支持 https,需要在配置文件中开启 tls 选项,同时配置证书路径

📂 目录结构说明

├── cmd/            # 主程序入口
├── configs/        # 配置文件模板与 SQL 脚本
├── internal/       # 私有应用代码 (业务逻辑核心)
│   ├── apiserver/  # API 服务具体实现
│   ├── pkg/        # 内部共享包
├── pkg/            # 可被外部项目引用的库代码
├── api/            # OpenAPI/Swagger 定义
└── Makefile        # 构建脚本

About

Miniblog 是一个基于 Go 语言开发的、遵循 Clean Architecture (整洁架构) 的企业级博客后端项目。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors