finds.dev← search

// the find

8treenet/freedom

★ 2,272 · Go · Apache-2.0 · updated Sep 2026

Freedom是一个基于六边形架构的框架,可以支撑充血的领域模型范式。

Freedom is a Go framework built on hexagonal architecture for DDD-style backends — aggregates, entities, value objects, repositories, domain events — wrapped around the Iris web framework. It's aimed at Go teams who want a Java-Spring-like structure with code generation for CRUD scaffolding, and the fshop example shows what a full app looks like in practice.

The PO generator that reads an actual MySQL/Postgres schema (or a JSON schema) and spits out persistence objects is a real time-saver, not just a toy generator. The fshop example is a genuinely complete e-commerce implementation with aggregate factories, CQS command/query separation, and domain event publishing/subscription — not a 20-line hello world. It also bundles things teams actually need in production: XA transaction support, a Kafka producer/consumer, and a two-tier cache (memory + distributed) with cache-stampede protection built in.

Every doc, comment, and the README itself is Chinese-only, which is a hard wall for anyone outside that ecosystem despite the framework living on GitHub. It's hard-wired to Iris as the HTTP layer — if your team is already on gin, echo, or chi, adopting this means rewriting your transport layer, which undercuts the 'ports and adapters' pitch since the primary adapter isn't swappable in practice. The Worker-based context/DI model is a bespoke abstraction layered over goroutines rather than idiomatic context.Context propagation, so there's a real learning curve for Go developers used to the standard library patterns. Test coverage is thin for the surface area claimed — a handful of scattered _test.go files across kafka, requests, and a couple of domain packages, nothing that reads like systematic coverage of the core framework internals.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →