Skip to content

采用DDD架构的fastapi基础框架,Ai能读懂和理解的项目结构,可用于高标准的Ai项目快速开发

License

Notifications You must be signed in to change notification settings

xcenweb/Lex_DDD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LexDDD - 词易Python基座

Python FastAPI Poetry SQLAlchemy

项目简介

Github仓库地址(更新最快)

LexDDD 是一个基于领域驱动设计(DDD)架构的后端开发基座。项目采用现代化的技术栈和架构设计,提供高性能、可维护和可扩展。

p.s. 其实是实际项目开发过程中,偶然发现这部分可以作为开发基座,所以就把它开源出来。

文档见 docs

  • 遵循PEP 8编码规范
  • 使用类型注解
  • 保持领域层的纯粹性
  • 遵循DDD设计原则

技术架构

领域驱动设计 (DDD)

项目严格遵循DDD架构原则,将系统分为以下核心层次:

  • 领域层 (Domain Layer)

    • 包含核心业务逻辑和实体
    • 定义领域模型和业务规则
    • 实现领域服务和值对象
  • 应用层 (Application Layer)

    • 协调领域对象以完成用例
    • 处理事务管理
    • 实现应用服务
  • 基础设施层 (Infrastructure Layer)

    • 提供技术实现
    • 处理数据持久化
    • 集成外部服务
  • 接口层 (Interface Layer)

    • 定义API接口
    • 处理请求响应
    • 实现路由管理

技术栈

  • Web框架: FastAPI 0.115.8
  • ORM: SQLAlchemy 2.0.38
  • 数据库: MySQL
  • 包管理: Poetry
  • API文档: Swagger/OpenAPI

项目结构

src/
├── domain/          # 领域层:核心业务逻辑和实体
├── application/     # 应用层:用例和业务流程编排
├── infrastructure/  # 基础设施层:技术实现和外部服务集成
└── interfaces/      # 接口层:API接口和路由定义

环境配置

前置要求

  • Python 3.11+
  • Poetry
  • MySQL

安装依赖

# 安装项目依赖
poetry install

# 更新依赖
poetry update

环境变量配置

创建 .env 文件并配置以下环境变量:

# 调试模式
LEX_DEBUG=True

# 数据库设置
LEX_DATABASE_URL=mysql+aiomysql://user:password@localhost:3306/lextrade

启动服务

# 启动开发服务器
uvicorn main:app --reload

启动后可访问:

数据库模型

使用 SQLAlchemy 生成数据库模型:

sqlacodegen --outfile ./src/domain/models.py mysql://user:password@localhost:3306/lextrade

TODO

未来想要支持的功能和改进:

  • 单元测试
  • logger日志
  • 更完善的异常处理
  • 更利于ai理解的 file content prompt

许可证

Apache License 2.0

About

采用DDD架构的fastapi基础框架,Ai能读懂和理解的项目结构,可用于高标准的Ai项目快速开发

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages