GoFrame과 Vue.js 기반의 플러그인식 관리자 시스템 프레임워크

GoFrame, Vue, ElementUI 그리고 MySQL을 결합한 이 프레임워크는 모듈화와 플러그인 아키텍처를 지향하는 고성능 백엔드 관리 솔루션입니다. 개발 효율성을 극대화하기 위해 설계되었으며, 독립적인 컴포넌트 개발 방식과 강력한 코드 생성기를 통해 반복적인 작업을 최소화합니다. 특히 사용자가 정의한 데이터베이스 구조를 바탕으로 백엔드 Go 서비스와 프론트엔드 Vue 템플릿을 한 번에 생성할 수 있는 저코드(Low-code) 개발 환경을 제공합니다.

주요 설계 특징

  • 모듈형 아키텍처: 각 기능이 느슨하게 결합되어 있어 확장이 용이합니다.
  • 즉시 사용 가능한 모듈: 기본적인 권한 관리부터 시스템 설정까지 필수 기능을 내장하고 있습니다.
  • 통합 개발 환경: 일관된 디자인 패턴과 코드 계층 모델을 제공하여 유지보수 비용을 낮춥니다.
  • 강력한 툴체인: 전용 코드 생성기를 통해 CRUD 및 복잡한 비즈니스 로직의 초기 뼈대를 빠르게 구축합니다.
  • 체계적인 계층화: GoFrame의 설계 철학에 따라 도메인 중심의 깔끔한 폴더 구조를 유지합니다.

핵심 제공 기능

시스템 운영에 필수적인 다양한 관리 기능을 기본 모듈로 포함하고 있습니다.

  • 권한 및 조직 관리: 사용자, 역할(Role), 메뉴 권한 설정 및 부서/직급 체계 관리.
  • 인프라 관리: 사전 정의된 딕셔너리(Dict), 시스템 구성 정보, 지역 정보 관리.
  • 로그 시스템: 사용자의 운영 로그와 로그인 이력을 실시간으로 기록하고 모니터링.
  • 콘텐츠 및 홍보: 공지사항, 배너 광고, 사이트 칼럼 및 파트너 링크 관리.
  • 자동화 도구: 데이터베이스 테이블 기반의 백엔드/프론트엔드 전체 코드 자동 생성.

표준 프로젝트 구조

├── internal            // 서비스 핵심 로직
│   ├── controller      // API 핸들러 및 컨트롤러
│   ├── dao             // 데이터 접근 계층
│   ├── model           // 데이터 모델 및 엔티티
│   └── service         // 비즈니스 로직 처리
├── manifest            // 설정 및 리소스 파일
│   ├── config          // 환경 설정 (YAML 등)
│   ├── docker          // 배포 관련 Docker 파일
│   └── i18n            // 다국어 지원
├── resource            // 정적 리소스 및 템플릿
│   ├── public          // 정적 파일
│   └── template        // 코드 생성용 커스텀 템플릿
├── utility             // 공통 유틸리티 클래스
├── go.mod              // 의존성 관리
└── main.go             // 프로그램 진입점

라우터 아키텍처 및 미들웨어 적용

GoFrame의 ghttp.RouterGroup을 활용하여 계층적이고 가독성 높은 라우팅 시스템을 구현합니다. 미들웨어를 통해 CORS, 인증, 로그 기록 등을 전역 또는 그룹별로 처리합니다.

func RegisterRoutes() {
	server := g.Server()
	
	// 전역 미들웨어 설정
	server.Use(middleware.CORS)
	server.Use(middleware.AuthContext)

	// 관리자 API 그룹
	server.Group("/api/v1", func(apiGroup *ghttp.RouterGroup) {
		// 로깅 미들웨어 적용
		apiGroup.Use(middleware.ActionLogger)

		/* 파일 처리 인터페이스 */
		apiGroup.Group("/storage", func(storage *ghttp.RouterGroup) {
			storage.POST("/upload", api.File.UploadLocal)
		})

		/* 시스템 인증 및 초기화 */
		apiGroup.Group("/auth", func(auth *ghttp.RouterGroup) {
			auth.POST("/login", api.Session.DoLogin)
			auth.GET("/verify-code", api.Session.GetCaptcha)
			auth.ALL("/exit", api.Session.Logout)
		})

		/* 관리자 계정 제어 */
		apiGroup.Group("/admin", func(admin *ghttp.RouterGroup) {
			admin.GET("/fetch-list", api.Manager.GetList)
			admin.POST("/create", api.Manager.Create)
			admin.PUT("/modify", api.Manager.Update)
			admin.DELETE("/remove/:id", api.Manager.Delete)
			admin.PATCH("/toggle-status", api.Manager.ChangeStatus)
		})

		/* 역할 및 권한 체계 */
		apiGroup.Group("/permission", func(perm *ghttp.RouterGroup) {
			perm.GET("/roles", api.Role.FetchAll)
			perm.POST("/role-save", api.Role.Store)
			perm.GET("/menus", api.Menu.GetTree)
			perm.PUT("/assign-rights", api.Role.UpdateRights)
		})

		/* 개발자 도구: 코드 생성기 */
		apiGroup.Group("/dev-tools", func(tools *ghttp.RouterGroup) {
			tools.GET("/tables", api.Generator.ListTables)
			tools.POST("/build", api.Generator.RunBuild)
		})
	})
}

확장성 및 생태계

이 프레임워크는 특정 엔진에 국한되지 않고 다양한 기술 스택과의 조합을 지원합니다. GoFrame 외에도 Gin, Beego, Echo 등 대중적인 Go 웹 프레임워크와 결합된 버전을 제공하며, 프론트엔드 역시 ElementUI 외에 Ant Design Vue 환경을 지원하여 프로젝트 성격에 맞는 최적의 조합을 선택할 수 있습니다.

태그: GoFrame Vue.js ElementUI go MySQL

9월 22일 14:08에 게시됨