Domain Modules¶
The platform is split into bounded domain apps.
Bounded-context approach
Each module owns its primary workflows, URLs, templates, and tests; cross-domain reuse should happen through shared abstractions in core.
Core Modules¶
core: cross-cutting web concerns, middleware, shared helpersportfolio_mgmt: portfolio entities and viewsrequirements_mgmt: requirements, links, quality checks, importssysarch_mgmt: architecture nodes and resourcessysdef_mgmt: system definition entities and hierarchyverification_validation_mgmt: verification plans, cases, execution and defectssafety_assurance: safety argument and assurance workflows
Supporting Modules¶
interface_mgmt,project_interface_mgmtscope_mgmtanalysis_mgmtbaseline_mgmtimpact_assessmentops_mgmtdiagrams_mgmt
Module Interaction Overview¶
flowchart LR
Core[core]
Portfolio[portfolio_mgmt]
SysDef[sysdef_mgmt]
SysArch[sysarch_mgmt]
Req[requirements_mgmt]
Intf[interface_mgmt]
PIntf[project_interface_mgmt]
Scope[scope_mgmt]
VnV[verification_validation_mgmt]
Safety[safety_assurance]
Baseline[baseline_mgmt]
Impact[impact_assessment]
Ops[ops_mgmt]
Portfolio --> Req
Portfolio --> Scope
SysDef --> Req
SysArch --> Intf
Intf --> PIntf
Req --> VnV
Req --> Safety
VnV --> Baseline
Safety --> Baseline
Baseline --> Impact
Scope --> Ops
Core --> Portfolio
Core --> SysDef
Core --> SysArch
Core --> Req
Core --> Intf
Core --> PIntf
Core --> Scope
Core --> VnV
Core --> Safety
Core --> Baseline
Core --> Impact
Core --> Ops URL Composition¶
Root URL routing delegates from app/app/urls.py to each domain module, preserving local route ownership and reducing global coupling.
flowchart TD
Root[app/app/urls.py]
Root --> CoreURL[core.urls]
Root --> PortfolioURL[portfolio_mgmt.urls]
Root --> SysArchURL[sysarch_mgmt.urls]
Root --> SysDefURL[sysdef_mgmt.urls]
Root --> ScopeURL[scope_mgmt.urls]
Root --> ReqURL[requirements_mgmt.urls]
Root --> VnVURL[verification_validation_mgmt.urls]
Root --> SafetyURL[safety_assurance.urls]
Root --> BaselineURL[baseline_mgmt.urls]
Root --> ImpactURL[impact_assessment.urls]
Root --> OpsURL[ops_mgmt.urls] Dependency Rules¶
- Domain modules may depend on
core. - Domain modules should not import peer module internals.
- Shared cross-cutting logic belongs in
core. - New cross-domain orchestration should use explicit services rather than implicit imports.
Collapsed dependency warning
Direct imports into another domain app's private utilities tend to create circular dependencies and brittle refactors.