{"id":13692411,"url":"https://github.com/8treenet/freedom","last_synced_at":"2025-05-14T01:06:29.668Z","repository":{"id":44470732,"uuid":"216367757","full_name":"8treenet/freedom","owner":"8treenet","description":"Freedom是一个基于六边形架构的框架，可以支撑充血的领域模型范式。","archived":false,"fork":false,"pushed_at":"2025-03-06T06:20:27.000Z","size":1124,"stargazers_count":2407,"open_issues_count":13,"forks_count":230,"subscribers_count":31,"default_branch":"master","last_synced_at":"2025-04-03T11:42:07.025Z","etag":null,"topics":["ddd","framework","freedom","go","http2-server","microservice","server"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/8treenet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-20T13:39:04.000Z","updated_at":"2025-04-03T00:53:43.000Z","dependencies_parsed_at":"2023-02-01T05:46:01.104Z","dependency_job_id":"7f31ec2e-7dd7-4b7a-a45a-c90694d67800","html_url":"https://github.com/8treenet/freedom","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8treenet%2Ffreedom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8treenet%2Ffreedom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8treenet%2Ffreedom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8treenet%2Ffreedom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/8treenet","download_url":"https://codeload.github.com/8treenet/freedom/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248252658,"owners_count":21072699,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ddd","framework","freedom","go","http2-server","microservice","server"],"created_at":"2024-08-02T17:00:57.643Z","updated_at":"2025-04-10T16:23:22.618Z","avatar_url":"https://github.com/8treenet.png","language":"Go","funding_links":[],"categories":["开源类库","Open source library","Go","Repositories"],"sub_categories":["DDD 框架","DDD Framework"],"readme":"# Freedom DDD 框架\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/8treenet/freedom/blob/master/LICENSE) [![Go Report Card](https://goreportcard.com/badge/github.com/8treenet/freedom)](https://goreportcard.com/report/github.com/8treenet/freedom)[![GoDoc](https://godoc.org/github.com/8treenet/freedom?status.svg)](https://godoc.org/github.com/8treenet/freedom)\n[![GitHub release](https://img.shields.io/github/v/release/8treenet/freedom.svg)](https://github.com/8treenet/freedom/releases)\n\u003cimg align=\"right\" width=\"200px\" src=\"https://raw.githubusercontent.com/8treenet/blog/master/img/freedom.png\"\u003e\n## 简介\n\nFreedom 是一个基于六边形架构（Hexagonal Architecture）的 Go 语言框架，专注于支持领域驱动设计（DDD）开发范式。本框架提供了完整的基础设施和工具链，帮助开发者构建可维护、可扩展的企业级应用。\n\n## 核心特性\n\n### 架构支持\n- 完整实现六边形架构（端口和适配器模式）\n- 领域驱动设计（DDD）最佳实践支持\n- 依赖注入（DI）和依赖倒置原则（DIP）\n- 完全符合开闭原则的插件化设计\n\n### 框架集成\n- 无缝集成 Iris Web 框架\n- 支持 HTTP/H2C 服务端和客户端\n- 内置 Prometheus 监控集成\n- 支持 AOP（面向切面编程）\n- 基于 Worker 的无侵入 Context 设计\n\n### 领域模型支持\n- 聚合根（Aggregate Root）实现\n- 领域事件（Domain Events）支持\n- CQS（命令查询分离）模式\n- 实体（Entity）和值对象（Value Object）支持\n\n### 数据处理\n- 自动化 CRUD 操作生成\n- PO（持久化对象）代码生成器\n- 多级缓存架构\n  - 一级缓存（内存）\n  - 二级缓存（分布式）\n  - 缓存击穿防护\n\n### 消息和事件\n- 集成消息队列组件\n- 领域事件发布订阅\n- 事件驱动架构支持\n\n## 快速开始\n\n### 安装框架\n\n```bash\n# 安装 Freedom 命令行工具\n$ go install github.com/8treenet/freedom/freedom@latest\n\n# 验证安装\n$ freedom version\n```\n### 创建新项目\n\n```bash\n# 创建项目\n$ freedom new-project [项目名称]\n\n# 进入项目目录\n$ cd [项目名称]\n\n# 安装依赖\n$ go mod tidy\n\n# 运行服务\n$ go run server/main.go\n```\n\n### 代码生成工具\n\n```bash\n# 生成数据库相关代码（支持两种方式）\n\n# 1. 通过数据库连接生成\n$ freedom new-po --dsn \"root:密码@tcp(127.0.0.1:3306)/数据库名?charset=utf8\"\n\n# 2. 通过 JSON Schema 生成\n$ freedom new-po --json ./domain/po/schema.json\n\n# 查看更多生成选项\n$ freedom new-po -h\n```\n\n## 指南\n\n### 核心文档\n1. [路由指南](doc/route-guide.md)\n   - HTTP 路由配置\n   - API 设计规范\n2. [服务指南](doc/service-guide.md)\n   - 服务层设计原则\n   - 业务逻辑实现指南\n3. [持久化对象指南](doc/po-guide.md)\n   - PO 对象使用说明\n   - 数据库操作最佳实践\n4. [HTTP 客户端指南](doc/http-client-guide.md)\n   - HTTP 客户端配置\n   - 请求处理最佳实践\n5. [DDD 指南](doc/ddd-guide.md)\n   - 领域驱动设计实践指南\n   - 架构设计原则\n6. [Worker 指南](doc/worker-guide.md)\n   - Worker 机制详解\n   - Context 使用说明\n\n\n## 学习资源\n\n### 示例项目\n1. [基础教程](https://github.com/8treenet/freedom/blob/master/example/base)\n   - DDD 基础概念实践\n   - 框架基本功能使用\n\n2. [HTTP2 示例](https://github.com/8treenet/freedom/blob/master/example/http2)\n   - HTTP2 服务配置\n   - 依赖倒置实现\n\n3. [基础设施示例](https://github.com/8treenet/freedom/blob/master/example/infra-example)\n   - 事务组件实现\n   - 自定义组件开发\n   - Kafka 集成\n   - 领域事件使用\n\n4. [电商系统示例](https://github.com/8treenet/freedom/blob/master/example/fshop)\n   - 完整的电商领域实现\n   - CQS 模式示例\n   - 聚合根设计\n   - 实体和值对象使用\n   - 领域事件实践\n   - 资源库模式\n   - 基础设施层集成\n\n## 贡献指南\n\n欢迎提交 Issue 和 Pull Request 来帮助改进 Freedom 框架。在提交代码前，请确保：\n\n- 代码符合 Go 语言规范\n- 添加了必要的测试用例\n- 更新了相关文档\n\n## 开源协议\n\n本项目采用 Apache 2.0 开源协议。详见 [LICENSE](https://github.com/8treenet/freedom/blob/master/LICENSE) 文件。\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F8treenet%2Ffreedom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F8treenet%2Ffreedom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F8treenet%2Ffreedom/lists"}