LyricTian / gin-admin

A lightweight, flexible, elegant and full-featured RBAC scaffolding based on GIN + GORM 2.0 + Casbin 2.0 + Wire DI.
http://101.42.232.163:8040
Apache License 2.0
2.55k stars 512 forks source link
admin casbin gin gin-admin gin-casbin go go-admin go-rbac golang gorm gormv2 rbac

Gin-Admin

A lightweight, flexible, elegant and full-featured RBAC scaffolding based on GIN + GORM 2.0 + Casbin 2.0 + Wire DI.

English | 中文

LICENSE Language Go Report Card GitHub release GitHub release date GoDoc

Features

swagger

Frontend

Dependencies

Quick Start

Create a new project

gin-admin-cli new -d ~/go/src --name testapp --desc 'A test API service based on golang.' --pkg 'github.com/xxx/testapp'

Start the service

cd ~/go/src/testapp
make start
# or
go run main.go start

Generate a new module

For more detailed usage instructions, please refer to gin-admin-cli

gin-admin-cli gen -d . -m CMS --structs Article --structs-comment 'Article management'

Remove a module

gin-admin-cli rm -d . -m CMS --structs Article

Build the service

make build
# or
go build -ldflags "-w -s -X main.VERSION=v1.0.0" -o ginadmin

Generate swagger docs

make swagger
# or
swag init --parseDependency --generalInfo ./main.go --output ./internal/swagger

Generate wire inject

make wire
# or
wire gen ./internal/wirex

Project Layout

├── cmd
│   ├── start.go
│   ├── stop.go
│   └── version.go
├── configs
│   ├── dev
│   │   ├── logging.toml           (Log configuration file)
│   │   ├── middleware.toml        (Middleware configuration file)
│   │   └── server.toml            (Service configuration file)
│   ├── menu.json                  (Initialize menu file)
│   └── rbac_model.conf            (Casbin RBAC model configuration file)
├── internal
│   ├── bootstrap
│   │   ├── bootstrap.go          (Initialization)
│   │   ├── http.go               (HTTP service)
│   │   └── logger.go             (Log service)
│   ├── config                    (Configuration file)
│   │   ├── config.go
│   │   ├── consts.go
│   │   ├── middleware.go
│   │   └── parse.go
│   ├── mods
│   │   ├── rbac                  (RBAC module)
│   │   │   ├── api               (API layer)
│   │   │   ├── biz               (Business logic layer)
│   │   │   ├── dal               (Data access layer)
│   │   │   ├── schema            (Data model layer)
│   │   │   ├── casbin.go         (Casbin initialization)
│   │   │   ├── main.go           (Module initialization)
│   │   │   └── wire.go           (Dependency injection)
│   │   ├── sys
│   │   │   ├── api
│   │   │   ├── biz
│   │   │   ├── dal
│   │   │   ├── schema
│   │   │   ├── main.go
│   │   │   └── wire.go
│   │   └── mods.go
│   ├── utility
│   │   └── prom
│   │       └── prom.go           (Prometheus)
│   └── wirex                     (Dependency injection)
│       ├── injector.go
│       ├── wire.go
│       └── wire_gen.go
├── test                          (Unit test)
│   ├── menu_test.go
│   ├── role_test.go
│   ├── test.go
│   └── user_test.go
├── Dockerfile
├── Makefile
├── README.md
├── go.mod
├── go.sum
└── main.go                       (Entry)

Community