Skip to content

Code Boundaries

Luxnode has hardware code and user-facing code. They should remain related but not tangled.

firmware/

Runs on ESP32-S3 or later microcontrollers. It owns:

  • ADC timing and spectrometer clocking.
  • LED/interlock control.
  • Raw counts and telemetry emission.
  • Future USB/BLE/Wi-Fi transport endpoints.

src/lux/

The lower-level algorithm library. It owns:

  • Calibration transforms.
  • Corrections and preprocessing.
  • Peak detection.
  • Matching and feature extraction.
  • Module metrics for plants, minerals, beer, and kombucha.

src/luxspec/

The public Python SDK. It owns:

  • LuxFrame and telemetry schema.
  • Serial/HTTP clients.
  • Version compatibility helpers.
  • User tutorials and stable convenience APIs.

Lux Cloud

Cloud jobs should accept the same LuxFrame JSON payloads. Heavy processing can then run on a server while local devices and notebooks keep a compatible minimal API.