Skip to content
A dataviz framework help gopher to build a admin panel in ten minutes
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Oct 16, 2019
adapter transfer project Oct 12, 2019
adm improve cli and template Oct 20, 2019
context breaking change, modify many apis to make clear, add more useful apis Oct 11, 2019
data add sqlite test Oct 8, 2019
engine transfer project Oct 12, 2019
examples add apis for component col & row Oct 21, 2019
modules release v1.0.2 Oct 18, 2019
plugins add apis for component col & row Oct 21, 2019
template add apis for component col & row Oct 21, 2019
tests transfer project Oct 12, 2019
vendor ready for v1.0.0 Oct 13, 2019
.gitignore cli tool: rename admincli => adm; more easier to memorize and use Oct 16, 2019
.travis.yml modify travis Oct 12, 2019 modify CODE_OF_CONDUCT Oct 18, 2019 modify readme Oct 16, 2019 modify readme Oct 16, 2019 add donation list Sep 26, 2019
LICENSE Update LICENSE Sep 24, 2019
Makefile modify readme Oct 16, 2019 modify readme Oct 16, 2019


the missing golang data admin panel builder tool.

Documentation | 中文文档 | DEMO

Go Report Card Go Report Card golang telegram qq群 GoDoc license

Inspired by laravel-admin


GoAdmin is a toolkit help you to build a data visualization admin panel for your golang app.

demo: account: admin password: admin

demo source code:



  • 🚀 Fast: build a production admin panel app in ten minutes.
  • 🎨 Theming: beautiful ui themes supported(default adminlte, more themes are coming.)
  • 🔢 Plugins: many plugins to use(more useful and powerful plugins are coming.)
  • Rbac: out of box rbac auth system.
  • ⚙️ Frameworks: support most of the go web frameworks.


We need your help:

Who is using

Comment the issue to tell us.

How to

Following three steps to run it.

Step 1: import sql

mysql postgresql sqlite

Step 2: create main.go


package main

import (
	_ ""

func main() {
	r := gin.Default()

	eng := engine.Default()

	// global config
	cfg := config.Config{
		Databases: config.DatabaseList{
			"default": {
				Host:         "",
				Port:         "3306",
				User:         "root",
				Pwd:          "root",
				Name:         "godmin",
				MaxIdleCon: 50,
				MaxOpenCon: 150,
				Driver:       "mysql",
		UrlPrefix: "admin",
		// STORE is important. And the directory should has permission to write.
		Store: config.Store{
		    Path:   "./uploads", 
		    Prefix: "uploads",
		Language: language.EN,
		// debug mode
		Debug: true,
		// log file absolute path
		InfoLogPath: "/var/logs/info.log",
		AccessLogPath: "/var/logs/access.log",
		ErrorLogPath: "/var/logs/error.log",
		ColorScheme: adminlte.ColorschemeSkinBlack,

    	// Generators: see 
	adminPlugin := admin.NewAdmin(datamodel.Generators)
	// add generator, first parameter is the url prefix of table when visit.
    	// example:
    	// "user" => http://localhost:9033/admin/info/user
    	adminPlugin.AddGenerator("user", datamodel.GetUserTable)

	_ = eng.AddConfig(cfg).AddPlugins(adminPlugin).Use(r)

	_ = r.Run(":9033")

More Examples:

Step 3: run

GO111MODULE=on go run main.go

visit: http://localhost:9033/admin

A super simple example here

See the docs for more details.


Your support will help me do better! [Become a backer]


here for contribution guide

here to join into the develop team

join telegram

You can’t perform that action at this time.