Skip to content

ovnicraft/go-advanced-admin

 
 

Go Advanced Admin

A Highly Customizable Advanced Admin Panel for Go.

Go Report Card Go License: Apache-2.0 Go.Dev reference

Go Advanced Admin is a powerful and highly customizable admin panel for Go applications. It allows developers to quickly create admin interfaces with minimal configuration, supporting multiple web frameworks and ORMs.

Features

  • Framework Agnostic: Compatible with popular Go web frameworks like Gin, Echo, Chi, Fiber, and more.
  • ORM Support: Integrates seamlessly with ORMs such as GORM, XORM, SQLX, Bun, etc.
  • Customizable Templates: Override default templates or create your own for complete control over the admin UI.
  • Fine-Grained Permissions: Implement custom permission schemes (role-based, attribute-based) for robust access control.
  • Extensible: Easily extend functionality with custom modules, themes, and widgets.
  • Logging: Configurable logging system with support for custom log stores.

Installation

Add the module to your project by running:

go get github.com/ovnicraft/go-advanced-admin

Documentation

For detailed documentation, quick start guides, and advanced topics, please visit the official documentation website.

Quick Start

Here's a minimal example to get you started:

package main

import (
    "github.com/ovnicraft/go-advanced-admin"
    "github.com/go-advanced-admin/web-echo"
    "github.com/go-advanced-admin/orm-gorm"
    "github.com/labstack/echo/v4"
    "gorm.io/driver/sqlite"
    "gorm.io/gorm"
)

func main() {
    // Initialize Echo
    e := echo.New()

    // Initialize GORM
    db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
    if err != nil {
        panic("failed to connect database")
    }

    // Initialize the admin panel
    webIntegrator := adminecho.NewIntegrator(e.Group("/admin"))
    ormIntegrator := admingorm.NewIntegrator(db)
    permissionFunc := func(req admin.PermissionRequest, ctx interface{}) (bool, error) {
        return true, nil // Implement your permission logic here
    }

    panel, err := admin.NewPanel(ormIntegrator, webIntegrator, permissionFunc, nil)
    if err != nil {
        panic(err)
    }

    // Register your models
    app, err := panel.RegisterApp("MainApp", "Main Application", nil)
    if err != nil {
        panic(err)
    }

    _, err = app.RegisterModel(&YourModel{}, nil)
    if err != nil {
        panic(err)
    }

    // Start the server
    e.Logger.Fatal(e.Start(":8080"))
}

For more detailed examples and configuration options, please refer to the official documentation.

Contributing

Contributions are always welcome! If you're interested in contributing to the project, please take a look at our Contributing Guidelines for guidelines on how to get started. We appreciate your help in improving the library!

Special thank you to the current maintainers:

License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

About

Advanced, extensible admin panel framework for Go with modular ORM and web integrations.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 76.4%
  • HTML 18.5%
  • JavaScript 4.7%
  • Other 0.4%