Open Identity Management
❯ exa -T
.
├── aerich.ini # rerich配置文件
├── app # 业务代码
│ ├── __init__.py
│ ├── controllers # API endpoints
│ │ ├── __init__.py
│ │ ├── hydra.py
│ │ └── identity.py
│ ├── core # config或共同依赖
│ │ ├── __init__.py
│ │ └── config.py # 配置信息等(使用 pydantic BaseSettings管理)
│ ├── main.py # **项目入口**
│ ├── migrations # aerich生成的迁移文件存放目录
│ │ └── models
│ │ ├── 0_20200929170837_init.json
│ │ └── old_models.py
│ ├── models.py # Tortorise-ORM 模型
│ ├── schemas.py # 供API endpoint使用的各种pydantic schema信息
│ ├── templates # jinja2模板存放目录
│ │ ├── consent.html
│ │ └── login.html
│ ├── tests # 测试文件目录
│ │ ├── __init__.py
│ │ ├── conftest.py # pytest conftest
│ │ └── test_indentity.py
│ └── utils # 单独,无其他依赖的工具类文件
│ ├── __init__.py
│ ├── encrypt.py
│ ├── hydra_cli.py
│ └── paginator.py
├── design
│ └── eva.graffle
├── docker-compose-migrate.yml # 供hydra服务初始化执行migrate使用
├── docker-compose.yaml # 开发用docker-compose file
├── Dockerfile # 开发环境Dockerfile
├── LICENSE
├── manage.py # 模拟Django的manage.py,执行一些临时脚本等
├── pyproject.toml # black isort pytest 等配置信息
├── README.md
├── requirements # 项目依赖信息,使用pip-tools管理,不同场景使用不同的txt文件
│ ├── dev.in # *.in 为手动维护的不带版本信息的依赖
│ ├── dev.txt # *.txt 为pip-compile命令编译后生成的携带版本信息的依赖
│ ├── production.in
│ ├── production.txt
│ ├── test.in
│ └── test.txt
└── scripts # 各种脚本文件存放目录
├── entrypoint.sh
├── start-develop.sh
└── start-production.sh
Core
- fastapi API framework
- pydantic Data model Serialize/Deserialize/Validation, Settings Management
- uvicorn ASGI server
- typer CLI generator Based on Python type hints
- tortoise-orm async ORM
- aerich tortoise-orm migration manage tool
Code Quality
- prospector Linter
- pre-commit managing git
pre-commit
hooks - black code formatter
- isort code formatter
-
克隆代码至本地
-
创建一个新的虚拟环境(Conda / Virtualenv 等工具)版本要求 >= 3.8:
pip install -r requirements/dev.txt
- 安装 pre-commit hooks
pre-commit install
-
使用 docker-compose 启动:
- 第一次执行
docker-compose -f docker-compose.yml -f docker-compose-migrate.yml up -d
- 后续开发只需要执行
docker-compose up -d
scripts/entrypoint.sh
脚本中会初始化好 hydra 数据库
- 第一次执行
-
虚拟环境中直接启动
- python manage.py migrate
- python manage.py runserver
-
执行 lint
make lint
-
执行 test
make test
Tips:
- python manage.py createuser 创建一个用户
- python manage.py dbshell 执行 pgcli,进入代码配置好的数据库环境
- 在 migrations 目录中生成迁移文件
python manage.py makemigrations
- 应用、执行迁移脚本
python manage.py migrate