ODMA
Website architecture
Backend owners
| Owner | Responsibility |
|---|---|
domains/business |
Product capabilities, their data and behavior |
domains/system |
Identity, managed content, files and user settings |
infrastructure |
Concrete framework and technology adapters |
core |
Settings, URLs, application registration and composition |
Models, serializers, views, admin, CMS plugins and tests stay with their owner. Runtime domain and infrastructure code read configuration through django.conf.settings and do not import the composition root. Generic infrastructure does not import business owners; application composition connects the concrete implementations.
Frontend owners
domains represents domain capabilities, including their UI. primitives contains narrow presentation building blocks. widgets composes functional interfaces. pages owns complete page composition. app initializes and connects the application. infrastructure integrates routing, transport and other concrete technologies.
Frontend and backend express the same ownership principle without requiring identical folders. A dependency must have an explicit purpose and contract. Changing a public contract requires finding all its consumers first.
Deployment is another responsibility
Services own their commands and health checks. The application orchestrator owns ordering, readiness and failure propagation. Docker Compose owns processes and infrastructure. Identity is deployed separately from the application.