Repository navigation
ADR 0001 Modular Monorepo
- Status: Accepted
- Date: 2026-09-16
Niyān's Django server, Nuxt web application, standalone CLI, PyPI Python client, viewer SDK, shared contracts, deployment configuration, and end-to-end tests will evolve together. The public API still needs real boundaries, but splitting these pieces into separate repositories immediately would add release coordination and make cross-component changes harder before those boundaries have stabilized.
Keep the first-party Niyān components in one repository, organized as independently testable and releasable modules. The intended top-level structure is recorded in the root AGENTS.md.
The web application, CLI, and Python client must consume documented server interfaces rather than import server implementation code. Generated or shared contracts may cross boundaries only through an explicit package or artifact. The CLI and Python client are independently distributed products and must not depend on one another at runtime.
ADR 0009 supersedes the final sentence above: the CLI and filesystem client now share one Python distribution while retaining separate internal modules and runtime boundaries. The modular-monorepo decision remains in force.
- One change can update the API, clients, documentation, and end-to-end tests atomically.
- Contributors have one issue tracker, development checkout, and review surface.
- CI can select affected components while retaining an integrated test suite.
- Repository tooling must avoid forcing every contributor to install every language tool for a component they are not changing.
- Components may move to separate repositories later if independent governance or release cadence outweighs coordination cost.
Niyān development
Specifications
- Index
- Authentication
- Authorization
- Namespaces and datasets
- Repository access
- Git write transport
- Git LFS and object storage
- Protected refs
- CLI
- CLI LFS tracking
- Python filesystem client
- Web application
- Browser uploads and commits
- Audit events
Architecture
- Decision index
- ADR 0001 — Modular monorepo
- ADR 0002 — Git-native datasets
- ADR 0003 — Git LFS data plane
- ADR 0004 — Dataset access boundary
- ADR 0005 — Direct object transfers
- ADR 0006 — Git repository hosting
- ADR 0007 — Shared S3 bucket
- ADR 0008 — Backend baseline
- ADR 0009 — Unified Python client
- ADR 0010 — Static Nuxt SPA
- ADR 0011 — Standard Git workflows
- ADR 0012 — Self-contained Compose