ODMA

Website architecture

← Back to concept

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.