AH Original · Case study 03
OneCompliance
A multi-tenant compliance platform whose interface is generated from metadata, built on Angular and AWS serverless, with a native Flutter field app for consultants.
Private platform. Client under NDA. Web views are recreated with demo data; mobile captures come from the app’s own screenshot tests.
- Role
- Full-stack · web & mobile
- Stack
- Angular · Flutter · AWS
- Year
- 2025 – Now


- Type
- Enterprise compliance SaaS
- Role
- Full-stack · web & mobile
- Stack
- Angular · Flutter · AWS
- Access
- Private · under NDA
01. The platform
Five regulations, one workspace.
Data protection, information security, anti-money-laundering, whistleblowing and internal audits each carry their own registers, controls, documents and deadlines. This platform holds them in a single multi-tenant workspace: consultants switch between the companies they serve, and every company sees only its own data.
02. The web application
An interfacethat is mostly configuration.
Most screens are never written by hand. Each table, form, filter and tab comes from a JSON definition the backend serves and executes, so a new compliance module arrives as configuration rather than new frontend code.
Product and client names withheld at the client’s request.

03. Rebuilding the surface
A redesign that touched every generated screen.
Because hundreds of screens share the same components, the rollout went one component at a time with behaviour held intact: toolbar, navigation drawer, breadcrumbs, search, inputs, pickers, dialogs and file upload. Each generated screen then picked the new design up automatically.
- Inline row editing with one save across the table
- Two-step select-all: this page, or every match
- Currency, percentage and number inputs per locale
- Design system rolled out without regressing generated screens



04. The field app
The whole platform, in a pocket.
Consultants spend their days at client sites, so hours and mileage were recorded on a desktop long after the fact. The Flutter client I worked on calls the same endpoints as the web app and reads the same view metadata, so lists, filters and permissions stay consistent without a second API.
- Roughly 14,000 lines of Dart
- Timer that stays in sync with sessions started on the web
- Trips survive an app restart
- Unit, widget and screenshot tests across every flow






05. Backend, AI & security
Less typing, stronger sessions.
A vision model reads identity documents, validates the machine-readable zone and fills the record in; a second pipeline pulls data out of other documents with OCR. Alongside it, MFA enrolment and sign-in tracking moved long-standing users onto multi-factor auth without locking anyone out.
- Machine-readable-zone validation on identity documents
- OCR pipeline with normalisation and temp-file cleanup
- Self-service onboarding via invitation or company code
- Cross-region failover with a tested recovery runbook


06. Architecture
One contract, two clients.
The mobile app has no API of its own. Both clients enter through the same authorised gateway, so validation, permissions and row actions behave identically, and a configuration change made for the web reaches the phone without a new release.
Clients
Angular web · Flutter app
API Gateway
Authorised JWT entry
Lambda
Node.js & Python
Data
PostgreSQL · DynamoDB · S3
AI services
Bedrock vision · Textract
07. Resilience
Built to survive a bad day.
A secondary AWS region carries identity backup and restore, password sync and region-aware deployment scripts, exercised against a written runbook rather than assumed to work.
- MFA
- TOTP on web and mobile
- 2
- AWS regions
- 3
- UI languages
- 0
- Mobile-only endpoints
08. Technologies
- Angular 18
- TypeScript
- RxJS
- Flutter
- Dart
- AWS CDK
- Lambda
- API Gateway
- Cognito
- PostgreSQL
- DynamoDB
- AWS Bedrock
- AWS Textract
- MFA
AH Originals
More Like This
Next episode
Want something like OneCompliance?
Tell me about your idea and I'll reply with honest advice and a free quote. Replies within 24 hours.