Skip to content

Architecture

Squawk FM uses layered boundaries:

  1. UI layer (src/features, src/components)
  2. State/orchestration layer (src/context, hooks)
  3. Service layer (src/services)
  4. Domain/driver layer (src/domain/drivers, src/domain/radio-model)

Driver contract

Primary interface: src/domain/drivers/radioDriverContract.ts

Current registry wiring: src/services/radios/radioDriverRegistry.ts

A driver should own protocol behavior and normalized-model translation, not UI state or rendering.