π Monorepo overviewΒΆ
This repository is an org monorepo: a versioned dependency graph with enforceable import edges, one toolchain contract, and a docs super-app that aggregates every product leaf.
The contract is
Building an Org Monorepo:
path / editable installs inside the workspace (not version-chased internal
wheels), leaf-owned docs/ and ci.yml, reusable GitHub workflows, shared
dockers/ bases.
π TopologyΒΆ
flowchart TB
subgraph consumers [Consumers]
A["apps/*"]
P["projects/*"]
S["services/* future"]
end
L["libs/*"]
Dk["dockers/*"]
D["docs/landing + portal"]
A --> L
P --> L
S --> L
A -->|FROM| Dk
D -.->|aggregates| A
D -.->|aggregates| P
D -.->|aggregates| L
Directory |
Role |
|---|---|
|
User-facing apps (Streamlit Papers RAG) |
|
Shared packages ( |
|
Domain CLIs / batch jobs (papers ingest) |
|
Reserved for future HTTP/gRPC services |
|
|
|
Shared base images + compose |
|
Landing hub + architecture portal |
|
Reusable workflows + per-leaf stubs |
cookiecutters/ and iac/ from the blueprint are not in this tree yet.
π§± Import DAGΒΆ
β
apps|projects|services β libsβ
libs β libsonly via an acyclic graphβ No app β service imports
β No lib β app / project imports
Inside the workspace, leaves depend via [tool.uv.sources] path deps and
uv.lock. External consumers can still pip install amir.
π·οΈ NamingΒΆ
libs/rag-core/ # distribution name (kebab)
src/rag/core/ # import path (hyphen β /)
# from rag.core import RagConfig
π Docs contractΒΆ
Every product leaf ships:
A Sphinx
docs/nodeA card on the matching topology hub under
docs/landing/(apps//libs//projects//services//docs/)A path prefix under the published site (
/rag-core/,/papers-rag/, β¦)
π§© Leaf CIΒΆ
A leaf is not only source: it owns pyproject.toml, tests, docs/, and a thin
ci.yml. Root .github/workflows/ stubs uses: _python-leaf.yml with path
filters. Shared job bodies live in the parent templates, not copied into every
leaf.
π‘ 2-CentsΒΆ
Building an Org Monorepo β topology, path deps, leaf CI, docs portal
MLOps Deployment Strategies β serving modes, deploy-code vs deploy-model, traffic strategies