How kacperczeczot/golf-master works
GOLF-MASTER combines ESP32 vehicle-CAN telemetry with an offline browser dashboard. The main web workflow is BLE UART input, firmware-message or CAN-frame routing, signal decoding and state updates, then live cards, detail modals, and logs. The README documents firmware CAN reading and BLE transmission, but firmware source was not sampled, so its internal stages are not expanded. Dashboard relationships below use sampled imports and calls; other README-described capabilities are retained without guessing their internal wiring.
Main entry points: frameRegistry.js Frame Registry · canUtils.js Signal Utilities · modal.js Signal Modal · btTerminal.js BLE Terminal
Components 20
ESP32 Firmware
- CAN Reader
apps/firmware/esp32.ino
Web Runtime
- Web Bootstrap
apps/web/js/app/bootstrap.js - BLE Terminal
apps/web/js/app/transport/btTerminal.js - Message Catalog
apps/web/js/app/messageCatalog.js - Runtime State
apps/web/js/state/runtimeState.js
CAN Analysis
- Frame Registry
apps/web/js/can/frameRegistry.js - Comfort Decoder
apps/web/js/can/decoders/comfort.js - Drive Decoder
apps/web/js/can/decoders/drive.js - Media Decoder
apps/web/js/can/decoders/media.js - System Decoder
apps/web/js/can/decoders/system.js - Signal Utilities
apps/web/js/shared/canUtils.js - Signal Metadata
apps/web/js/state/signalMeta.js
Dashboard UI
- Frame Handler
apps/web/js/ui/core.js - Dashboard Actions
apps/web/js/ui/actions.js - Status Logs
apps/web/js/ui/statusLogs.js - Signal Modal
apps/web/js/ui/modal.js - Modal Color Rules
apps/web/js/ui/modalColors/modalColorRules.js
Other components
- Vehicle CAN
- Dashboard User
- BLE UART
Connections 28
- Vehicle CAN → CAN Reader: sends CAN frames
README.md - CAN Reader → BLE UART: transmits BLE
README.md - Dashboard User → Web Bootstrap: opens dashboard
README.md - Web Bootstrap → BLE Terminal: initializes
apps/web/js/app/bootstrap.js - Web Bootstrap → Frame Handler: initializes UI
- BLE UART → BLE Terminal: streams telemetry
- BLE Terminal → Frame Handler: routes CAN frames
apps/web/js/app/transport/btTerminal.js - BLE Terminal → Status Logs: logs messages
apps/web/js/app/transport/btTerminal.js - BLE Terminal → Message Catalog: resolves messages
apps/web/js/app/transport/btTerminal.js - Frame Handler → Frame Registry: selects decoder
apps/web/js/ui/core.js - Frame Handler → Runtime State: updates frame state
apps/web/js/ui/core.js - Frame Handler → Signal Modal: notifies updates
apps/web/js/ui/core.js - Frame Registry → Comfort Decoder: dispatches
apps/web/js/can/frameRegistry.js - Frame Registry → Drive Decoder: dispatches
apps/web/js/can/frameRegistry.js - Frame Registry → Media Decoder: dispatches
apps/web/js/can/frameRegistry.js - Frame Registry → System Decoder: dispatches
apps/web/js/can/frameRegistry.js - Comfort Decoder → Signal Utilities: extracts signals
apps/web/js/can/decoders/comfort.js - Comfort Decoder → Runtime State: stores decoded data
- Drive Decoder → Signal Utilities: uses signal utilities
apps/web/js/can/decoders/drive.js - Media Decoder → Signal Utilities: uses signal utilities
apps/web/js/can/decoders/media.js - System Decoder → Signal Utilities: uses signal utilities
apps/web/js/can/decoders/system.js - Signal Utilities → Runtime State: caches frame data
apps/web/js/shared/canUtils.js - Signal Modal → Runtime State: reads frame data
apps/web/js/ui/modal.js - Signal Modal → Signal Metadata: formats signals
apps/web/js/ui/modal.js - Signal Modal → Signal Utilities: formats values
apps/web/js/ui/modal.js - Signal Modal → Modal Color Rules: resolves value colors
apps/web/js/ui/modal.js - Dashboard Actions → Frame Registry: uses frame definitions
apps/web/js/ui/actions.js - Dashboard Actions → Status Logs: uses logging
apps/web/js/ui/actions.js