# Runtime Topology: 008 Pricing Awareness and Market Data

> For the complete documentation index, see [llms.txt](https://deploy-preview-472--lucky-concha-f3599f.netlify.app/llms.txt).

Parent state: `007-observability-lgtm-compose`

## Entrypoints

*   Browser/UI ingress: `http://localhost:8080`
*   NATS client port (internal compose network): `4222`
*   NATS monitoring (optional local): `8222`
*   NATS websocket ingress path (proxied): `/nats-ws`
*   Price publisher REST: `http://localhost:18100`

## Components

*   `nats-broker` remains core messaging bus from state `006`.
*   `price-publisher` publishes `pricing.<TICKER>` market ticks.
*   `trade-service` enriches orders with execution `price` via `price-publisher`.
*   `trade-processor` persists `trade.price` and `position.averageCostBasis`.
*   `web-front-end-angular` subscribes to account updates and `pricing.*`.

## Networking

*   Service-to-service messaging uses NATS TCP over compose network.
*   Browser real-time stream uses WebSocket upgrade through ingress path `/nats-ws`.
*   Price publisher is available via ingress path `/price-publisher/` and direct local port `18100`.

## Startup / Health Order

*   `nats-broker` and `price-publisher` must be healthy before trade-service startup.
*   Frontend may start before broker/price streams, but subscriptions must retry until available.

## Source-of-Truth Files

*   `system/messaging-subject-map.md`
*   `system/docker-compose.nats.snippet.yaml`
*   `system/ingress-nginx.nats-ws.snippet.conf`
