Active 10
Active 10 is a mobile app that tracks how much a user walks each day and how many minutes are brisk.
The app follows the standard pattern.
Architecture Overview
Components
Applications
- Repo: active10-backend
Used to authenticate with NHS login and provides an API to allow NHS login-authenticated users to sync their Active 10 progress.
Repo: active10-cms-public
Provides in-app content (e.g., articles ) for the Active 10 mobile app. Written using Django framework.
Collection of Lambda functions which act on data received by the Active 10 backend API.
AWS Glue ETL pipeline implementing the Medallion Architecture (Bronze > Silver > Gold) for processing daily user activity data.
Infrastructure as Code (IaC)
- Repo: active10-infra
- Terraform code defining AWS infrastructure for all environments.
Environments
| Environment | URL | Notes |
|---|---|---|
| Production | https://prd.active10.betterhealthapps.com/ | |
| Staging | https://uat.active10.betterhealthapps.com/ | |
| Dev | https://dev.active10.betterhealthapps.com/ |
DNS Overview
Both domains are registered in the phe-prd AWS account. The authoritative name servers (NS) are managed via a Route 53 hosted zone in that account.
Domain usage by environment
| Environment | App domain | CMS domain |
|---|---|---|
| Dev | dev.active10.betterhealthapps.com | active10.dev.phedigital.co.uk |
| UAT | uat.active10.betterhealthapps.com | active10.stg.phedigital.co.uk |
| Production (iOS) | prd.active10.betterhealthapps.com | active10.prod.phedigital.co.uk |
| Production (Android) | prd.active10.betterhealthapps.com | cms.phedigital.co.uk |
Note: In production, iOS and Android use different CMS domains even though they point to the same CMS. The reasoning behind this isn’t known.
graph TD
%% Root hosted zones in phe-prd
subgraph PHE_PRD[phe-prd account - root hosted zones]
BHA[betterhealthapps.com - Hosted Zone];
PHE[phedigital.co.uk - Hosted Zone];
end
%% Environment accounts with their delegated zones and ALBs
subgraph DEV_ACC[dev account]
DEV_BHA[dev.active10.betterhealthapps.com - Hosted Zone];
DEV_PHE[active10.dev.phedigital.co.uk - Hosted Zone];
ALB_DEV[ALB - dev];
end
subgraph UAT_ACC[uat account]
UAT_BHA[uat.active10.betterhealthapps.com - Hosted Zone];
UAT_PHE[active10.stg.phedigital.co.uk - Hosted Zone];
ALB_UAT[ALB - uat];
end
subgraph PRD_ACC[prd account]
PRD_BHA[prd.active10.betterhealthapps.com - Hosted Zone];
PRD_PHE[active10.prod.phedigital.co.uk - Hosted Zone];
CMS_PHE[cms.phedigital.co.uk - Hosted Zone];
ALB_PRD[ALB - prd];
end
%% NS delegations from root zones to env zones
BHA -->|NS delegate| DEV_BHA;
BHA -->|NS delegate| UAT_BHA;
BHA -->|NS delegate| PRD_BHA;
PHE -->|NS delegate| DEV_PHE;
PHE -->|NS delegate| UAT_PHE;
PHE -->|NS delegate| PRD_PHE;
PHE -->|NS delegate| CMS_PHE;
%% Env zones alias to their environment ALB
DEV_BHA -->|ALIAS A| ALB_DEV;
DEV_PHE -->|ALIAS A| ALB_DEV;
UAT_BHA -->|ALIAS A| ALB_UAT;
UAT_PHE -->|ALIAS A| ALB_UAT;
PRD_BHA -->|ALIAS A| ALB_PRD;
PRD_PHE -->|ALIAS A - iOS| ALB_PRD;
CMS_PHE -->|ALIAS A - Android| ALB_PRD;
Each environment (account) manages its own hosted zone via Terraform.
If zones are recreated for any reason, the corresponding NS records must be updated in the phe-prd account to point to the new name servers of the environment-specific hosted zone.
