Skip to main content

System context diagram

This shows every system and external service in play, and the connections between them.

How data flows

1

Ingest

The backend polls SportMonks on a schedule for fixture lists, live scores, and ball-by-ball data. Raw responses are cached in DynamoDB.
2

Process

Services transform raw SportMonks data into a normalized display state. State hashes detect actual changes to avoid redundant pushes.
3

Deliver

When match state changes, the backend sends push notifications and Live Activity updates through Apple APNs to subscribed devices.
4

Serve

The iOS app also makes direct REST API calls to the backend for on-demand data — fixture lists, match details, standings, etc.

Connection details

ConnectionProtocolAuthNotes
iOS to BackendHTTPS RESTCognito JWT in Authorization headerAll endpoints require auth except health check
Admin to BackendHTTPS RESTCognito JWTAdmin-scoped token with elevated permissions
Backend to SportMonksHTTPS RESTAPI key in query paramsRate-limited, polled on intervals
Backend to DynamoDBAWS SDKIAM roleAll persistent storage goes here
Backend to CognitoAWS SDKIAM roleToken verification, user pool management
Backend to APNsHTTP/2JWT-based APNs auth tokenSeparate channels for alerts vs Live Activities
If push notifications stop working, check the APNs auth token expiry first. These tokens are short-lived and need periodic refresh.