Frontend
Static frontend delivery.
The dashboard build can be deployed to S3 and served through CloudFront with TLS, caching, compression, and canonical host redirects. This keeps the UI cheap to serve and separates static delivery from the live pricing API.
MVP model
Keep live complexity behind one API boundary.
The browser downloads the build, opens a WSS connection, receives the active BTC surface, and merges snapshots and patches locally. Other maintained currency configurations are not described as live until feed verification.
- S3 and CloudFront serve the dashboard over HTTPS.
- The websocket API publishes compact surface snapshots and patches.
- Backend services keep exchange credentials and calibration logic server-side.
- CloudWatch tracks freshness, fit latency, reconnects, and queue pressure.

API boundary
WebSocket, REST, and testing access.
The browser connects to a websocket endpoint for snapshots and patches. In AWS, that boundary can sit behind API Gateway, Application Load Balancer, or a containerized service with TLS termination, depending on latency and connection-count needs.
Beta WebSocket evaluation can be offered by request without making the feed fully public. REST behavior remains testing; its endpoint names and resources are supplied with the applicable evaluator contract.
Runtime services
Exchange ingestion and calibration scale independently.
Exchange connectors, normalization, forward calculation, SVI fitting, risk node generation, and broadcast fanout should run as independent services. ECS is a pragmatic first step; EKS becomes attractive when stream processors, calibration workers, and websocket gateways need finer deployment control.
The UI contract should stay stable as the backend grows: the browser still receives current-state snapshots and sparse patches. Scaling happens behind the API boundary by separating ingestion, calibration, diagnostics, and fanout.
Operations
State, observability, and security shape.
CloudWatch metrics, structured logs, alarms, and trace IDs are required for production operation. The important metrics are feed freshness, queue depth, fit time, websocket connection count, dropped messages, and per-expiry calibration quality.
Public traffic should terminate over HTTPS or WSS. Secrets belong in Secrets Manager or SSM Parameter Store, exchange credentials should never reach the browser, and the websocket API should expose only normalized surface data needed by the UI.