adminBox

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 3, 2026 License: AGPL-3.0

README

AdminBox

Go Version License Gin Framework GORM

AdminBox 是一个模块化、可插拔的 Go 后台开发套件,旨在帮助开发者快速构建功能完备、易于扩展的后台管理系统。

设计理念

AdminBox 的核心设计哲学是 “后台优先,按需组装”。它并非一个大而全的笨重框架,而是一个由多个独立“功能积木”组成的工具箱。您可以根据项目需求,仅选择需要的部分,构建一个轻量、高效、定制化的后台服务。

同时,项目内置了一个基于 Vue 的现代化前端界面,通过 embed 特性实现编译时嵌入,只需一行 import 即可自动集成,实现真正的“开箱即用”。

主要特性

  • 高度模块化: pkg 目录下的每个包(如 log, db, config)都是独立的功能模块,可以被任何项目单独引用。
  • 可插拔的前端: 只需在 main.go 中分别匿名导入 pkg/admin(后端API)和 pkg/admin/front(前端UI),一个功能完善的后台管理界面就会被自动嵌入并提供服务。
  • 清晰的架构: 遵循 Go 社区推崇的项目结构,清晰地分离了公共库与内部业务逻辑。
  • 丰富的功能集:
    • 配置管理: 基于 Viper,支持 YAML 文件格式,可热加载。
    • 结构化日志: 基于 Zap,支持多级别、多输出(控制台、文件)。
    • 数据库 ORM: 基于 GORM,支持 MySQL, PostgreSQL, SQLServer 等多种数据库。
    • 缓存: 内置 Redis 客户端支持。
    • Web 框架: 使用高性能的 Gin 作为路由和中间件核心。
    • 认证与授权: 内置 JWTCasbin 的集成方案。
    • 文件上传: 支持本地存储、阿里云 OSS、腾讯云 COS、AWS S3 和七牛云。
    • CRUD 引擎: 提供通用的增删改查后端引擎,简化业务开发。
  • 易于扩展: 清晰的职责划分和接口设计,方便进行二次开发或替换任意模块。

快速上手

以下步骤将引导您快速启动一个最小化的 AdminBox 服务。

1. 环境准备
  • Go 1.23+
  • MySQL 5.7+ 或其他 GORM 支持的数据库
  • Redis
2. 初始化项目
# 创建项目目录
mkdir my-admin && cd my-admin

# 初始化 Go Module
go mod init my-admin

# 获取 AdminBox
go get github.com/mangk/adminBox
3. 配置文件 config.yaml

在项目根目录创建 config.yaml 文件。这是一个最小化的配置示例:

server:
  name: my-admin
  env: debug
  port: 8910
  jwt:
    signingKey: "a-secret-key-change-it" # 请务必修改为你的密钥
    expiresTime: 7d
    bufferTime: 1d
    issuer: my-admin

db:
  default:
    driver: mysql
    path: 127.0.0.1
    port: 3306
    dbname: adminbox # 数据库名
    username: root # 数据库用户名
    password: "your-password" # 数据库密码
    config: "charset=utf8mb4&parseTime=True&loc=Local"
    logMode: 3 # 日志级别

cache:
  default:
    addr: "127.0.0.1:6379"
    password: ""
    db: 0

log:
  level: debug
  format: console
  output:
    - console
    - logs
4. 创建数据库

根据 config.yaml 中的配置,创建名为 adminbox 的数据库。

5. 编写 main.go
package main

import (
	"github.com/gin-gonic/gin"
	// 匿名导入 AdminBox 后端模块,自动注册后台API
	_ "github.com/mangk/adminBox/pkg/admin"
	// 匿名导入 AdminBox 前端模块,自动注册UI界面
	_ "github.com/mangk/adminBox/pkg/admin/front"
	"github.com/mangk/adminBox/pkg/httpServer"
)

func main() {
	// (可选) 在这里注册你自己的业务路由
	httpServer.SetRouter(func(root *gin.Engine) {
		// example: root.GET("/ping", func(c *gin.Context) { c.String(200, "pong") })
	})

	// 启动服务
	httpServer.Execute("my-admin", "My First AdminBox Server")
}
6. 运行
go run main.go

服务启动后,访问 http://127.0.0.1:8910 即可看到 AdminBox 的登录界面。系统会自动初始化数据库表结构。

项目结构

/
├── pkg/            # 核心功能模块 (可被外部引用的公共库)
│   ├── admin/      # 后台管理核心逻辑 (包含前端资源)
│   ├── cache/      # 缓存 (Redis)
│   ├── config/     # 配置加载 (Viper)
│   ├── db/         # 数据库 (GORM)
│   ├── httpServer/ # HTTP 服务启动器 (Cobra + Gin)
│   ├── log/        # 日志 (Zap)
│   ├── middleware/ # Gin 中间件
│   ├── upload/     # 文件上传模块
│   └── util/       # 通用工具函数
├── example/        # 示例代码
├── go.mod          # Go 模块文件
└── README.md       # 项目说明

贡献

我们欢迎任何形式的贡献!如果您有好的想法或发现了 Bug,请随时提交 Pull Request 或 Issue。

许可证

本项目基于 AGPLv3 开源。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL