Open-source project
flipped-aurora/gin-vue-admin avatar
flipped-aurora/gin-vue-admin

gin-vue-admin: a Gin and Vue 3 base platform with an AI-assisted code generator

🚀Vite+Vue3+Gin拥有AI辅助的基础开发平台,企业级业务AI+开发解决方案,内置mcp辅助服务,内置skills管理,支持TS和JS混用。它集成了JWT鉴权、权限管理、动态路由、显隐可控组件、分页封装、多点登录拦截、资源权限、上传下载、代码生成器、表单生成器和可配置的导入导出等开发必备功能。

25,013 stars7,113 forksGoApache-2.0

At a glance

What is it?
gin-vue-admin pairs a Gin backend with a Vue 3 frontend and ships JWT plus Casbin authorization, dynamic menus, a form builder and a code generator. The judgement: it is a scaffold for teams that already know Go and Vue, not a finished product, and its AI features are editor-side helpers rather than a runtime service.
Who is it for?
Adopt gin-vue-admin if you are building an internal admin or a small to mid-sized business system in Go and Vue 3, and you want permissions, dynamic menus and a code generator already wired together. Do not adopt it if your team has no Go or Vue experience, or if you need vendor support on a contractual basis, because the README states plainly that free technical service is not offered and paid support is a separate purchase.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap gin-vue-admin fills, and who actually needs it

A new Go admin project begins with the same week of work every time. You wire a Gin router, decide how tokens are issued and revoked, build a role and permission model, attach menus to roles, add pagination helpers, and write the first CRUD screen. None of that is the product you were hired to build. gin-vue-admin exists to hand you that layer already assembled. The README describes it as a full-stack, front-end and back-end separated development base platform built on Vue and Gin, and lists JWT authentication, dynamic routing, dynamic menus, Casbin authorization, a form generator and a code generator as the integrated pieces.

The intended audience is narrow and the README says so. It states that the project requires some Golang and Vue foundation, and that it is aimed at quickly building small and mid-sized projects. That is an honest framing. This is not a low-code tool for people who do not program. It is a starting skeleton for developers who already know both stacks and want the boilerplate decided for them. If your team is Go-only, the Vue 3 and Element Plus frontend is a second language you will have to learn before you can modify anything beyond generated pages.

Authorization is split between JWT, Casbin and Redis

The permission model is the most load-bearing part of the project, and it is worth understanding before you adopt it. Authentication is JWT-based. Authorization is Casbin-based. The README lists permission management as implemented on top of both, and separately lists API management, where different users may call different API endpoints. Roles sit between the two: the README describes role management as creating the main object of permission control, to which you assign both API permissions and menu permissions.

Redis has a specific job rather than being a general cache. According to the README, Redis records the JWT tokens of currently active users and implements multi-point login restriction. The practical consequence is that token state is not purely stateless. If Redis is unavailable or its contents are flushed, the active-session tracking that backs the multi-login limit is affected, even though the JWTs themselves remain cryptographically valid until expiry. That coupling is a design decision, not a defect, but it means Redis belongs in your availability planning rather than being treated as optional.

Menus are dynamic and role-scoped. The README states that menu management implements dynamic menu configuration for users, so different roles see different menus. This is the mechanism behind the claim of dynamically controllable component visibility. The trade-off is that menu structure lives in the database, so a menu change is a data change, not a deploy. That is convenient in operation and awkward in version control, since your navigation tree is no longer in the repository.

The stack, and what the generators actually produce

The README gives the versions it targets: Go 1.20 in the badge, Gin 1.9.1, Vue 3.3.4, Element Plus 2.3.8, GORM 1.25.2. The usage section is stricter than the badge and asks for Go 1.22 or above and Node above v18.16.0. Treat the usage section as the operative requirement and the badge as stale metadata.

Persistence is MySQL or MariaDB 5.7 and above with the InnoDB engine, accessed through GORM. API documentation is generated by Swagger. Configuration is YAML, loaded through viper with fsnotify, which is why the README can offer front-end editing of configuration files, a feature it notes is disabled on the online demo. Logging uses zap.

The two generators are the reason many people arrive. The code generator produces backend base logic and simple CRUD code. The form generator is built on the third-party @Variant Form project, which means form behaviour and its extension points are governed by that dependency rather than by gin-vue-admin itself. The README also advertises a one-minute path from template to generated front-end and back-end code, with permission assignment as a step in that flow. What the generator gives you is a working vertical slice that already respects the permission model. What it does not give you is domain modelling. The generated code follows the conventions of the demo schema, and the further your tables are from those conventions, the more of the output you will rewrite.

Getting it running: the commands and the one directory mistake

Setup is two processes. For the backend, the README instructs you to clone the repository, enter the server directory, run go generate to install Go dependencies through the module system, then go run . to start. The README adds an explicit warning that you should open the server directory in your editor, not the gin-vue-admin root. That warning is there because the Go module lives under server, and opening the root breaks tooling assumptions.

For the frontend, you enter the web directory, run npm install, then npm run serve.

Swagger is a separate install. The README gives go install github.com/swaggo/swag/cmd/swag@latest, then cd server followed by swag init. That regenerates docs.go, swagger.json and swagger.yaml inside a docs folder under server. Once the Go service is running, the README points to http://localhost:8888/swagger/index.html for the API documentation, which also tells you the default backend port.

There is a VSCode path as well. Opening gin-vue-admin.code-workspace from the repository root gives three virtual folders named backend, frontend and root, and three run and debug tasks named Backend, Frontend and Both (Backend & Frontend). Running the combined task starts both sides. The workspace file also carries go.toolsEnvVars, and the README notes that on machines with multiple Go versions you can pin the toolchain through the go.gopath and go.goroot settings, which the README shows set to null by default. For anything beyond a first run, the README leans on its own documentation site and video tutorials rather than reproducing configuration here, so the YAML keys you will need for database and Redis connection are not in this material and must be read from the repository's config files.

The AI and MCP layer is an editor aid, not a runtime feature

The repository description foregrounds AI: an AI-assisted base development platform, built-in MCP auxiliary service, built-in skills management, and mixed TypeScript and JavaScript support. The topics list includes mcp, skills and vibecoding. The README's own framing of this is narrower than the description suggests. Its one-minute code generation table presents an MCP endpoint described as highly adapted to AI editors, followed by the steps: create a base template, AI generates the structure, generate code, assign permissions, basic CRUD complete.

Read carefully, the AI sits in the editor and in the generation workflow. It is not described as a runtime component that serves requests, and the README does not document a model provider, API key configuration, or an inference dependency for the running application. That distinction matters for procurement and for deployment review: an MCP server that your AI editor talks to is a development-time tool, and it does not add a network egress requirement to production. The README also links a GvaClaw plugin under a Claw ecosystem heading, which appears to be a plugin-marketplace entry rather than a core module, and the material here does not describe what it does.

The mixed TypeScript and JavaScript claim is likewise not elaborated in the README. Based on the repository description alone, you can expect both file types in the frontend, but nothing in this material states the migration policy or which modules are typed. If type coverage is a criterion for your team, that is something to inspect in the web directory rather than something the README settles.

Where it stops being the right tool

The README is unusually direct about support. It states that the project has documentation and video tutorials covering everything from setup to deployment, that you can complete all operations through those, and that free technical service is therefore not provided, with paid support as the alternative. For a team that expects a maintainer to answer integration questions in an issue tracker, that is a real constraint to price in before adoption, not after.

The second limitation is the generator's centre of gravity. A code generator that emits backend logic and simple CRUD saves time on list, detail and edit screens. It does not help with workflows that are not CRUD: long-running jobs, event-driven processing, complex state machines, or anything where the primary interface is not an admin table. If most of your system is that kind of work, the generator is a one-time convenience and the rest of the platform is a permissions framework you could have chosen more narrowly.

The third is the menu model. Because dynamic menus are database-driven and role-scoped, environment promotion requires moving menu rows alongside code. The README does not describe a migration or export mechanism for that data in this material. Teams that treat the database as disposable in staging and production will find this the first thing that bites.

Finally, the README notes that configuration can be edited from the front end but that this is disabled on the online demo. Being able to change YAML through a web UI is convenient and also means configuration changes may bypass your normal review path. Whether that is enabled in your deployment is a decision you have to make deliberately.

Alternatives, and the difference that matters

The closest comparison in the Go world is go-admin, which appears in this repository's own topics list alongside gin-admin. Both are Go admin scaffolds, and both centre on a permission model with generated CRUD. The meaningful difference is the frontend commitment. gin-vue-admin is explicitly a paired Gin and Vue 3 application with Element Plus, and its generators emit both halves, so the frontend conventions are part of the package you accept. If your organisation standardises on React, or already has a frontend design system, the generator's frontend output is not reusable and you are adopting a backend permission framework with a demo UI attached.

A second alternative is to assemble the pieces yourself: Gin for routing, Casbin for policy, GORM for persistence, and your own choice of frontend. The difference is that gin-vue-admin makes the integration decisions for you, including the Redis-backed multi-login restriction and the database-driven menu tree. Those decisions are the product. Building it yourself costs the time the platform saves and buys you the ability to choose a stateless token model, or to keep navigation in code. Neither approach is wrong; they fail differently. The self-built path fails slowly through accumulated boilerplate, and the scaffold path fails quickly when a built-in assumption, such as menus living in the database, conflicts with how you deploy.

Licence, maintenance and what to check before you commit

gin-vue-admin is Apache-2.0. The README asks that when you use, modify or distribute the project you follow the LICENSE in the repository and retain the notices the licence requires, and it separates that from the commercial licence you would buy for the authorised edition's features or official business support. Apache-2.0 is a permissive licence with an explicit patent grant and a requirement to preserve notices and state changes, but this is not legal advice and your counsel should read the LICENSE file and the terms attached to the commercial edition before you ship.

The release cadence visible here is roughly every two months across the three most recent tags, with v2.9.2-stable in July 2026 and v2.9.2 and v2.9.1 before it. The stable suffix on the newest tag suggests the project distinguishes a stabilised point release from the working tag, which is worth noting when you pick a version to pin. The repository is not archived and the last push is recent relative to the releases, so the project is active. Upgrade cost is dominated by two things: the database-driven menu and permission rows, which must be carried forward across versions, and the generated code, which you own once it is emitted and which will not be regenerated cleanly if you have edited it. Pin a tag, keep the generated files distinguishable from hand-written ones, and read the release notes for each version you cross.

Editorial conclusion

Adopt gin-vue-admin if you are building an internal admin or a small to mid-sized business system in Go and Vue 3, and you want permissions, dynamic menus and a code generator already wired together. Do not adopt it if your team has no Go or Vue experience, or if you need vendor support on a contractual basis, because the README states plainly that free technical service is not offered and paid support is a separate purchase. Before committing, verify three things against your own environment: that your Go toolchain is at or above the version the README requires, that MySQL or MariaDB 5.7+ with InnoDB and a Redis instance are available, and that the generated CRUD output matches your own table conventions rather than the demo schema.

Official sources

  1. flipped-aurora/gin-vue-admin on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes