internal/
│
├── pkg/
│   ├── model/              # All data types, structs, constants
│   │   ├── beacons.go
│   │   ├── settings.go
│   │   ├── context.go      # AppContext with locks and maps
│   │   └── types.go
│   │
│   ├── httpserver/         # HTTP + WebSocket handlers
│   │   ├── routes.go       # Registers all endpoints
│   │   ├── handlers.go     # Core REST handlers
│   │   ├── websocket.go    # WS logic (connections, broadcast)
│   │   └── server.go       # StartHTTPServer()
│   │
│   ├── mqtt/               # MQTT-specific logic
│   │   ├── processor.go    # IncomingMQTTProcessor + helpers
│   │   ├── publisher.go    # sendHARoomMessage, sendButtonMessage
│   │   └── filters.go      # incomingBeaconFilter, distance helpers
│   │
│   ├── persistence/        # BoltDB helpers
│   │   ├── load.go         # LoadState, SaveState
│   │   ├── buckets.go      # createBucketIfNotExists
│   │   └── persist_beacons.go
│   │
│   ├── utils/              # Small utility helpers (time, logging, etc.)
│   │   ├── time.go
│   │   ├── logging.go
│   │   └── shell.go
│   │
│   └── config/             # Default values, env vars, flags
│       └── config.go
│
└── test/
    ├── httpserver_test/
    │   └── beacons_test.go
    ├── mqtt_test/
    │   └── processor_test.go
    └── persistence_test/
        └── load_test.go
