Architecture
Common Platform is the case management system for the criminal courts in England and Wales. It carries a criminal case from the point a prosecutor sends it in, through hearings, to the orders and notices a court produces at the end.
This section is an orientation rather than a specification. It describes the shape of the system, the language it is written in, and where the authoritative material lives.
Two layers
The platform separates what a user does from where the facts live.
User-facing applications are the screens each role works in — a legal adviser preparing a hearing, a defence advocate reviewing a case, an administrator managing a court list. Each is a self-contained application with its own routes and state.
Domain services sit behind them, one per area of the business: prosecution cases, hearings, results, reference data, and so on. A service owns its data and publishes what happened rather than exposing its internals.
Built domain-first
The system is built from a Domain Driven Design perspective. Two things follow that are worth knowing before reading any code.
The business vocabulary is the code’s vocabulary. A hearing is a Hearing, a
defendant is a Defendant. Learning the domain language is the fastest way in, which
is why it has its own page.
Services communicate through events. Rather than one service reaching into another, a service records what happened in its own terms and others react. This makes history a first-class thing — the sequence of events is the record — and it means a question like “what did this service know at the time” is answerable.
The architecture model
There is a published architecture model of the platform, maintained as code:
Browse the Common Platform architecture model
It is a C4 model, so it presents the same estate at several zoom levels — the products, the containers inside them, and the relationships between them. It is generated from a source model rather than drawn by hand.
Two limits are worth stating:
- It models deployable systems. Shared libraries and frameworks are deliberately out of scope, so something can be central to how the platform works and still be absent from the model.
- It is a model, not the running system. It describes intended structure. What is actually deployed in an environment at a given moment is a different question, with a different source of truth.
Where this fits
If you are new and need access, start with onboarding. If you want to know where a particular kind of answer lives — architecture, code, decisions, operational detail — see finding things.