New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

github.com/yshujie/miniblog

Package Overview
Dependencies
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/yshujie/miniblog

Source
Go Modules
Version
v0.0.0-20260129074025-bd118b82ebc5
Version published
Created
Source

MiniBlog

MiniBlog 是一个企业级的博客管理系统,采用 Go + Vue 技术栈构建,支持模块化内容组织、权限管理和多前端展示。系统采用外部基础设施架构,通过 Docker 网络连接共享的 Nginx、MySQL、Redis 服务,实现资源高效利用和服务解耦。

🏗️ 架构说明

外部基础设施依赖

MiniBlog 采用微服务架构,依赖外部基础设施项目提供共享服务:

  • 数据库服务:MySQL 8.0+ (服务名:infra-mysql)
  • 缓存服务:Redis 6.0+ (服务名:infra-redis)
  • 代理服务:Nginx (服务名:infra-nginx)
  • 管理面板:Portainer (服务名:infra-portainer)

网络通信

应用通过 infra_shared Docker 网络与外部服务通信,实现:

  • 资源共享:多个应用项目共用基础设施
  • 服务解耦:应用专注业务逻辑,基础设施独立管理
  • 扩展性强:可独立扩容应用和基础设施

功能特性

🚀 核心功能

  • RESTful API 服务:基于 Gin 框架的 /v1 REST API,提供完整的 CRUD 操作
  • 用户认证与授权:JWT Token 认证 + Casbin RBAC 权限控制
  • 分层内容管理:模块 → 章节 → 文章的层次化内容组织
  • 双前端支持:博客展示前端(Vue + Vuetify)+ 管理后台(Vue + Ant Design Vue)
  • 外部内容集成:支持飞书文档内容同步,自动转换为 Markdown 格式

🔧 技术特性

  • 可观测性:结构化日志、请求追踪、健康检查
  • 安全性:CORS 支持、安全响应头、SQL 注入防护
  • 高性能:Redis 缓存支持、连接池优化
  • 容器化部署:Docker + Docker Compose 一键部署

软件架构

🏗️ 系统架构

┌─────────────────────────────────────────────┐
│                 前端层                      │
├─────────────────┬───────────────────────────┤
│   博客前端      │      管理后台             │
│ (Vue+Vuetify)   │  (Vue+Ant Design Vue)     │
└─────────────────┴───────────────────────────┘
                          │
┌─────────────────────────┼─────────────────────────┐
│                    API 网关                      │
│              (Nginx + SSL)                       │
└─────────────────────────┼─────────────────────────┘
                          │
┌─────────────────────────┼─────────────────────────┐
│                   后端服务                        │
├─────────────────────────┼─────────────────────────┤
│  Controller 层 ← → Biz 层 ← → Store 层 ← → Model 层 │
└─────────────────────────┼─────────────────────────┘
                          │
┌─────────────────────────┼─────────────────────────┐
│                   数据层                         │
├─────────────────────────┼─────────────────────────┤
│     MySQL              │         Redis           │
│   (持久化存储)          │       (缓存)           │
└─────────────────────────┴─────────────────────────┘

🎯 分层设计

  • Controller 层:HTTP 请求处理,参数验证,响应格式化
  • Biz 层:业务逻辑编排,规则验证,事务管理
  • Store 层:数据访问抽象,GORM 封装
  • Model 层:领域模型定义,业务实体

🔧 核心组件

  • 配置管理:Viper 统一配置,支持文件 + 环境变量
  • 权限控制:Casbin RBAC 模型,gorm-adapter 持久化
  • 日志系统:Zap 结构化日志,请求 ID 追踪
  • 中间件:认证、授权、跨域、安全头、日志记录

快速开始

依赖检查

系统要求:

  • Go 1.23+ - 后端服务开发运行环境
  • 外部基础设施项目 - 提供 MySQL、Redis、Nginx 服务(需单独部署)
  • Docker & Docker Compose - 容器化部署和服务通信
  • Node.js 18+ - 前端构建(可选)
  • 飞书开放平台凭证 - 外部文档同步(可选)

环境变量配置:

复制环境变量模板并根据实际情况修改:

cp .env.example .env

主要配置项(均带 MINIBLOG_ 前缀):

  • 数据库DATABASE_HOSTDATABASE_PORTDATABASE_USERNAMEDATABASE_PASSWORDDATABASE_DBNAME
  • RedisREDIS_HOSTREDIS_PORTREDIS_PASSWORDREDIS_DB
  • JWTJWT_SECRET
  • 飞书FEISHU_DOCREADER_APPIDFEISHU_DOCREADER_APPSECRET

构建

方式一:使用 Makefile(推荐)

# 完整构建
make build

# 格式化代码
make format

# 清理构建产物
make clean

方式二:直接使用 Go

# 编译二进制文件
go build -o _output/miniblog ./cmd/miniblog

# 整理依赖
go mod tidy

构建产物输出到 _output/miniblog

运行

方式一:Docker Compose 部署(推荐)

重要提示:MiniBlog 现在采用外部基础设施架构,需要先部署共享的基础设施项目。

# 1. 部署外部基础设施(需要先克隆 infra 项目)
cd ../infra
docker compose up -d

# 2. 检查基础设施状态
make check-infra

# 3. 部署 MiniBlog 应用
make deploy           # 部署所有应用组件
make deploy-dev       # 开发环境部署
make deploy-prod      # 生产环境部署

方式二:本地开发运行

  • 启动依赖服务(MySQL、Redis)
  • 配置环境变量(编辑 .env 文件)
  • 启动后端服务
# 使用配置文件启动
./_output/miniblog --config configs/miniblog.yaml

# 或直接运行
go run ./cmd/miniblog -c configs/miniblog.yaml
  • 验证服务
# 健康检查
curl http://localhost:8081/health

# 查看服务状态
make status

服务地址:

  • 后端 APIhttp://localhost:8081
  • 博客前端http://localhost:3000
  • 管理后台http://localhost:3001

使用指南

🔐 用户认证

登录获取 Token:

curl -X POST http://localhost:8081/v1/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"username":"admin","password":"your-password"}'

使用 Token 访问受保护接口:

curl -H "Authorization: Bearer <your-jwt-token>" \
  http://localhost:8081/v1/admin/users/myinfo

🛠️ 管理端 API(需认证)

用户管理:

  • 创建用户:POST /v1/admin/users
  • 修改密码:GET /v1/admin/users/:name/change-password
  • 获取当前用户信息:GET /v1/admin/users/myinfo

内容管理:

  • 模块管理/v1/admin/modules(创建、查询模块)
  • 章节管理/v1/admin/sections(创建章节、按模块查询、获取详情)
  • 文章管理/v1/admin/articles(创建、列表、详情、更新、发布/下架)

🌐 前台展示 API(公开)

  • 模块列表GET /v1/blog/modules
  • 模块详情GET /v1/blog/moduleDetail?moduleCode=<code>
  • 文章详情GET /v1/blog/articleDetail?articleID=<id>

📖 部署管理

查看服务状态:

make status              # 查看所有服务状态
make logs-backend        # 查看后端日志
make logs-infra          # 查看基础设施日志

更多 API 详情请参考 api/openapi/openapi.yaml 文档。

如何贡献

我们欢迎所有形式的贡献!请遵循以下步骤:

  • Fork 项目 并创建功能分支:

    git checkout -b feature/your-feature-name
    
  • 本地开发 并确保代码质量:

    make format          # 格式化代码
    go vet ./...         # 静态检查
    go test ./...        # 运行测试(如有)
    
  • 构建验证 确保项目正常编译:

    make build           # 编译项目
    make deploy-backend  # 测试部署
    
  • 提交 PR 并详细说明:

    • 功能背景和目的
    • 实现方案和关键变更
    • 测试验证方法
  • 代码审查 后合并到主分支

社区

  • 问题反馈GitHub Issues
  • 功能建议:欢迎提交 Feature Request
  • 技术交流:可通过 Issues 或 Discussions 参与讨论

关于作者

谁在用

如果您在项目中使用了 MiniBlog,欢迎在 Issues 中告诉我们:

  • 您的使用场景
  • 遇到的问题和建议
  • 希望添加的功能

这将帮助我们更好地改进项目!

许可证

本项目目前为个人学习项目,暂未指定开源许可证。

  • 学习参考:欢迎学习和参考代码实现
  • 商业使用:请先联系作者获得授权
  • 贡献代码:提交的代码将遵循项目许可证

FAQs

Package last updated on 29 Jan 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts