Beego — Overview#
Identity#
- Module path: github.com/beego/beego/v2
- Go version: 1.24.2
- License: Apache License 2.0
- Repository: https://github.com/beego/beego
Purpose#
Beego is a full-stack, batteries-included MVC web framework for Go, designed for rapid development of enterprise applications including RESTful APIs, web apps, and backend services. It targets Go developers who want a complete solution rather than assembling individual libraries, providing an ORM, session management, caching, logging, config, and HTTP routing in a single cohesive package. Inspired by Python frameworks (Tornado, Sinatra, Flask), it brings opinionated, convention-over-configuration development patterns to the Go ecosystem.
Significance#
Beego is one of the oldest and most widely adopted full-stack Go web frameworks, with origins around 2012-2013. It holds a dominant position in the Chinese Go community and has been a reference point for how Go frameworks can implement MVC patterns. The companion bee CLI tool for code generation further cements its “rails-like” positioning. The v2 rewrite (this module) brought a significantly cleaner package layout aligned with Go module conventions, separating concerns into core/, client/, server/, and task/ top-level domains.
Key metrics#
- Go files: 363
- Top-level directories:
client/,core/,server/,task/,test/,scripts/ - Direct dependencies: 38
- First commit / age: Repository is a shallow clone; CHANGELOG shows v2.1.x series; framework origins date to ~2012
Notable characteristics#
- True batteries-included framework: Ships ORM (with migrations), session backends, caching layer, HTTP client, config loading, structured logging, input validation, task scheduler, and captcha — all in one module.
- Pluggable storage backends everywhere: Session, cache, and ORM each support multiple backends (Redis, Memcache, MySQL, PostgreSQL, SQLite, CouchBase, etcd, LedisDB, SSDB) via interface-based driver registration.
- Observability-first design: OpenTelemetry, OpenTracing, and Prometheus integration are baked in as first-class filter packages under
server/web/filter/, not bolted on. - MVC with annotation routing: Supports both traditional controller-based routing and annotation-driven route registration (parsed by the
beetool at code-gen time), a pattern rare in Go frameworks. - v2 package reorganization: The v2 module reflects a deliberate architectural split —
core/for cross-cutting concerns (config, logs, berror, bean, utils),client/for outbound I/O (orm, cache, httplib),server/for inbound serving (web + all its sub-packages), andtask/for scheduled work — a clean domain decomposition compared to the v1 flat layout.