How the application is arranged
- A Next.js server sits between the browser and the NestJS API. It provides the browser session boundary while the API enforces permissions and record rules.
- PostgreSQL holds structured operational data. Evidence uploads use a separate Azure Blob Storage route with short-lived authorisation.
- Background work and trusted storage events have their own execution path. Uploading evidence is separate from deciding whether that evidence may be used.