Skip to content

hulutech-web/goravel-kit

Repository files navigation

Goravel Kit

Goravel Vue Ant Design Vue

Goravel Kit 是一个基于 Goravel 框架的全栈脚手架项目,集成了企业级应用开发的常用功能模块,帮助开发者快速搭建 Web 前后端项目。

✨ 功能特性

  • 🚀 开箱即用 - 预置完整的前后端架构,快速启动项目开发
  • 👥 用户管理体系 - 完整的用户注册、登录、权限控制系统
  • 🔐 RBAC 权限控制 - 基于角色的访问控制,精细化的权限管理
  • 📊 后台管理功能 - 包含用户、权限、菜单、角色等管理模块
  • WebSocket内置 - 内置 WebSocket 长连接,支持实时通信
  • 🔄 代码生成器 - 自动化 CRUD 代码生成,提高开发效率
  • 📄 PDF 生成器 - 集成 PDF 文档生成功能

🛠️ 技术栈

后端

  • 框架: Goravel - Go 语言的 Web 框架
  • 主要功能: RESTful API、JWT 认证、CRUD代码生成器,内置swag 文档生成,同时前端对接了openapi,一键生成前端接口,具体参考goravel-crud
  • websocket: 内置websocket长连接,支持实时通信,可用于实时通信场景,如收银机语音播报
  • 附件管理: 附件管理,支持上传、下载、删除,默认使用本地储存,可自行扩展

前端

  • 框架: Vue 3 - 渐进式 JavaScript 框架
  • UI 组件: Ant Design Vue - 企业级 UI 设计语言
  • 状态管理: Pinia/Vuex
  • 包管理: pnpm
  • 构建工具: Vite

📦 安装与使用

前提条件

  • Go 1.18+
  • Node.js 14+
  • MySQL 5.7+
  • Redis

使用步骤

  • 步骤一:检查当前环境 echo "GOPATH: $(go env GOPATH)" echo "GOBIN: $(go env GOBIN)" echo "PATH: $PATH"
  • 步骤二:查看当前 PATH echo $PATH
  • 步骤三:检查是否包含 Go 的 bin 目录 which go
  • 步骤四:添加 Go bin 目录到 PATH(如果不在) echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.zshrc source ~/.zshrc
  • 步骤五:安装工具 go install github.com/hulutech-web/goravel-kit-cli@latest
  • 步骤六:检查安装结果 ls -la $(go env GOPATH)/bin/ | grep goravel-kit-cli
  • 步骤六:验证 which goravel-kit-cli goravel-kit-cli --version
  • 其他:重装步骤 rm -f $(go env GOPATH)/bin/goravel-kit-cli go install github.com/hulutech-web/goravel-kit-cli@latest

前端启动

  1. 进入前端目录
cd frontend
  1. 安装依赖
pnpm install
  1. 启动开发服务器
pnpm dev

🗂️ 项目结构

goravel-kit/
├── app/                    # 后端应用代码
│   ├── models/            # 数据模型
│   ├── http/              # 控制器和路由
│   ├── services/          # 业务逻辑层
│   └── providers/         # 服务提供者
├── config/                # 配置文件
├── database/              # 数据库迁移和种子
├── resources/             # 资源文件
├── routes/                # 路由定义
├── storage/               # 存储目录
└── frontend/              # 前端项目
    ├── src/
    │   ├── api/           # API接口
    │   ├── components/    # 公共组件
    │   ├── router/        # 路由配置
    │   ├── stores/        # 状态管理
    │   └── views/         # 页面组件
    └── package.json

🔧 核心功能模块

用户管理

  • 用户增删改查
  • 用户状态管理
  • 个人信息修改

权限管理

  • 基于角色的访问控制(RBAC)
  • 权限分配与管理
  • 菜单权限控制

菜单管理

  • 动态菜单配置
  • 菜单权限绑定
  • 多级菜单支持

角色管理

  • 角色创建与编辑
  • 角色权限分配
  • 角色用户管理

代码生成器

  • 自动化生成CRUD代码
  • 支持模板定制
  • 一键生成前后端代码

websocket长连接

  • 系统消息通知
  • 实时通信
  • 语音播报等

📝 使用示例

使用脚手架

使用代码生成器创建新模块:

goravel-kit-cli new myapp

系统将克隆完整源码,并初始化goravel env,jwt等文件,数据库默认使用mysql驱动,默认启动redis缓存,请注意配置。

API 路由参见

  GET|HEAD     / .............................................................................................................................................................................................................................................................................. goravel/routes.Web.func1  
  POST         api/admin/auth/login ............................................................................................................................................................................................................................... goravel/app/http/controllers.(*AuthController).Login  
  RESOURCE     api/admin/file ........................................................................................................................................................................................................................................... goravel/app/http/controllers.(*FileController)  
  GET|HEAD     api/admin/file/list ................................................................................................................................................................................................................................. goravel/app/http/controllers.(*FileController).List  
  GET|HEAD     api/admin/file/option ............................................................................................................................................................................................................................. goravel/app/http/controllers.(*FileController).Option  
  RESOURCE     api/admin/file_cate .................................................................................................................................................................................................................................. goravel/app/http/controllers.(*FileCateController)  
  GET|HEAD     api/admin/file_cate/list ........................................................................................................................................................................................................................ goravel/app/http/controllers.(*FileCateController).List  
  GET|HEAD     api/admin/file_cate/option .................................................................................................................................................................................................................... goravel/app/http/controllers.(*FileCateController).Option  
  POST         api/admin/file_cate/{id}/files ................................................................................................................................................................................................................. goravel/app/http/controllers.(*FileCateController).Files  
  POST         api/admin/file_del_batch ........................................................................................................................................................................................................................ goravel/app/http/controllers.(*FileController).DelBatch  
  RESOURCE     api/admin/menu ........................................................................................................................................................................................................................................... goravel/app/http/controllers.(*MenuController)  
  GET|HEAD     api/admin/menu/list ................................................................................................................................................................................................................................. goravel/app/http/controllers.(*MenuController).List  
  GET|HEAD     api/admin/menu/option ............................................................................................................................................................................................................................. goravel/app/http/controllers.(*MenuController).Option  
  GET|HEAD     api/admin/menu/route ................................................................................................................................................................................................................................ goravel/app/http/controllers.(*AuthController).Menu  
  RESOURCE     api/admin/permission ............................................................................................................................................................................................................................... goravel/app/http/controllers.(*PermissionController)  
  GET|HEAD     api/admin/permission/list ..................................................................................................................................................................................................................... goravel/app/http/controllers.(*PermissionController).List  
  GET|HEAD     api/admin/permission/option ................................................................................................................................................................................................................. goravel/app/http/controllers.(*PermissionController).Option  
  RESOURCE     api/admin/role ........................................................................................................................................................................................................................................... goravel/app/http/controllers.(*RoleController)  
  GET|HEAD     api/admin/role/list ................................................................................................................................................................................................................................. goravel/app/http/controllers.(*RoleController).List  
  GET|HEAD     api/admin/role/option ............................................................................................................................................................................................................................. goravel/app/http/controllers.(*RoleController).Option  
  GET|HEAD     api/admin/role/{id}/permissions .............................................................................................................................................................................................................. goravel/app/http/controllers.(*RoleController).Permissions  
  POST         api/admin/role/{id}/sync_permissions ..................................................................................................................................................................................................... goravel/app/http/controllers.(*RoleController).SyncPermissions  
  GET|HEAD     api/admin/user ..................................................................................................................................................................................................................................... goravel/app/http/controllers.(*UserController).Index  
  GET|HEAD     api/admin/user/option ............................................................................................................................................................................................................................. goravel/app/http/controllers.(*UserController).Option  
  GET|HEAD     api/admin/user/own ................................................................................................................................................................................................................................... goravel/app/http/controllers.(*UserController).Own  
  POST         api/ws/bind_to_group ......................................................................................................................................................................................................... goravel/packages/goravel-socket/api/bind2group.(*Bind2GroupController).Run  
  POST         api/ws/close_client ........................................................................................................................................................................................................ goravel/packages/goravel-socket/api/closeclient.(*CloseClientController).Run  
  POST         api/ws/get_all_groups ...................................................................................................................................................................................................... goravel/packages/goravel-socket/api/getallgroup.(*GetAllGroupController).Run  
  POST         api/ws/get_online_list ..................................................................................................................................................................................................... goravel/packages/goravel-socket/api/getonlinelist.(*GetOnlineController).Run  
  POST         api/ws/register .................................................................................................................................................................................................................. goravel/packages/goravel-socket/api/register.(*RegisterController).Run  
  POST         api/ws/send_to_client ...................................................................................................................................................................................................... goravel/packages/goravel-socket/api/send2client.(*Send2ClientController).Run  
  POST         api/ws/send_to_clients ................................................................................................................................................................................................... goravel/packages/goravel-socket/api/send2clients.(*Send2ClientsController).Run  
  POST         api/ws/send_to_group ......................................................................................................................................................................................................... goravel/packages/goravel-socket/api/send2group.(*Send2GroupController).Run  
  STATIC       assets ..................................................................................................................................................................................................................................................................................................  
  GET|HEAD     crud ........................................................................................................................................................................................................................................................................... goravel/routes.Web.func2  
  POST         crud/controller_make .............................................................................................................................................................................................................. goravel/packages/goravel_crud/controller.(*CRUDController).Controller  
  POST         crud/migrate ......................................................................................................................................................................................................................... goravel/packages/goravel_crud/controller.(*CRUDController).Migrate  
  POST         crud/migration_make ................................................................................................................................................................................................................ goravel/packages/goravel_crud/controller.(*CRUDController).Migration  
  POST         crud/model_make ........................................................................................................................................................................................................................ goravel/packages/goravel_crud/controller.(*CRUDController).Model  
  POST         crud/request_make .................................................................................................................................................................................................................... goravel/packages/goravel_crud/controller.(*CRUDController).Request  
  POST         crud/router_make ...................................................................................................................................................................................................................... goravel/packages/goravel_crud/controller.(*CRUDController).Router  
  POST         crud/table_column ................................................................................................................................................................................................................ goravel/packages/goravel_crud/controller.(*CRUDController).TableColumn  
  GET|HEAD     crud/tables ........................................................................................................................................................................................................................... goravel/packages/goravel_crud/controller.(*CRUDController).Tables  
  STATIC       dist ....................................................................................................................................................................................................................................................................................................  
  GET|HEAD     panel ................................................................................................................................................................................................................................................... goravel/packages/goravel_crud/routes.CRUD.func1  
  GET|HEAD     pdf_design ............................................................................................................................................................................................................................................ goravel/packages/goravel_pdf_gen/routes.Pdf.func1  
  GET|HEAD     pdf_prefix/generate/{id} ......................................................................................................................................................................................................... goravel/packages/goravel_pdf_gen/controllers.(*PDFController).Generate  
  GET|HEAD     pdf_prefix/getDefaultTemplate .......................................................................................................................................................................................... goravel/packages/goravel_pdf_gen/controllers.(*PDFController).GetDefaultTemplate  
  GET|HEAD     pdf_prefix/getIndexTemplate .............................................................................................................................................................................................. goravel/packages/goravel_pdf_gen/controllers.(*PDFController).GetIndexTemplate  
  POST         pdf_prefix/saveHTML/{id} ......................................................................................................................................................................................................... goravel/packages/goravel_pdf_gen/controllers.(*PDFController).SaveHTML  
  POST         pdf_prefix/saveTemplate/{id} ................................................................................................................................................................................................. goravel/packages/goravel_pdf_gen/controllers.(*PDFController).SaveTemplate  
  GET|HEAD     swagger/*any ........................................................................................................................................................................................................................ goravel/packages/goravel_crud/controller.(*SwaggerController).Index  
  STATIC       uploads .................................................................................................................................................................................................................................................................................................  
  GET|HEAD     ws ............................................................................................................................................................................................................................................ goravel/packages/goravel-socket/servers.(*Controller).Run  

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启一个 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

🙏 致谢

📞 联系方式


⭐ 如果这个项目对你有帮助,请给它一个星标!

goravel-kit

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published