This commit is contained in:
valenti
2026-09-08 07:21:34 -04:00
commit a4b224da8e
169 changed files with 27483 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
# ADR-0001 — Monorepo Structure for ASF
- **Status:** Accepted
- **Date:** 2026-09-07
- **Deciders:** ASF Architecture Team
## Context
Azurian Software Factory comprises several logical components:
a shared domain model, an event schema package, connectors, multiple backend services
(core, context, ai, worker) and a Next.js web frontend.
We must choose a repository organization that balances:
- Strong cohesion for shared types / contracts
- Independent deployability of services
- Local developer ergonomics
- Clear service boundaries
## Decision
Use a **single monorepo** with the following top-level layout:
```
ASF/
├── frontend/asf-web/ # Next.js SaaS UI
├── services/ # Deployable Python services
│ ├── asf-core/
│ ├── asf-context/
│ ├── asf-ai/
│ └── asf-worker/
├── packages/ # Shared installable Python packages
│ ├── asf-domain/
│ ├── asf-events/
│ └── asf-connectors/
├── docs/ # Architecture, ADRs, API docs
├── infrastructure/ # Dockerfiles, scripts
└── tests/ # Cross-service integration tests
```
Shared packages are installed in editable mode (`pip install -e`) when
developing locally.
## Consequences
### Positive
- Shared domain models and event schemas live in one place — no drift.
- Refactors that cross service boundaries are done atomically in one PR.
- Local `docker-compose` up brings up the whole stack trivially.
- Search / navigation works across the whole product.
### Negative
- CI pipelines must be careful to only rebuild what changed.
- Service release tagging must be explicit (single git log, many artefacts).
### Risks / Mitigations
- Accidental tight coupling between services → mitigated by code review,
AGENT.md rules, and keeping services import only from `packages/*`, never
from each other.