- Rust: install from https://rustup.rs/
dioxus-cli: install withcargo install dioxus-cli
The frontend uses Dioxus. No separate WASM toolchain workflow is needed beyond the Rust targets used by build.py.
- Set the device name in
.cargo/config.toml. - Backend runtime data lives under
backend/data/. - Loadcell calibration files live under
backend/calibration/. - Radio link selection lives in
backend/comms/coms.jsonby default and can be overridden withGS_RADIO_LINK_CONFIG. - Link interfaces can be configured as serial/UART, SPI, or CAN. The Linux backend supports all three; this covers Ubuntu and Raspberry Pi OS.
- Set
GS_DEBUG_PRINTS=1to enable backend debug/status prints that are muted by default. - Use
python3 backend/tools/radio_link_config_gui.pyto detect serial, SPI, and CAN candidates, assign the AV bay and fill box links, and save the JSON config. - If no display is available, the same script falls back to a terminal UI automatically. You can also force modes with
--gui,--tui, or--cli.
Build the default web frontend plus backend:
python3 build.pyCommon local build modes:
python3 build.py testing
python3 build.py hitl-mode
python3 build.py backend_only
python3 build.py frontend_web
python3 build.py debugScoped build entry points:
python3 backend/build.py
python3 backend/build.py testingDocker images:
python3 build.py docker
python3 build.py docker pi_build
python3 build.py docker testing- Documentation index:
docs/README.md - Frontend/backend API contract:
docs/frontend/api.md - Frontend architecture:
docs/frontend/architecture.md - Backend architecture:
docs/backend/architecture.md - Backend I2C transport:
docs/backend/i2c.md - Shared contracts:
docs/shared/contracts.md - System overview:
docs/system/overview.md
Build the frontend, then run the backend:
python3 run_groundstation.pyEnable simulator/testing mode:
python3 run_groundstation.py --testingEnable HITL mode:
python3 run_groundstation.py --hitl-modeLegacy positional forms still work:
python3 run_groundstation.py testing
python3 run_groundstation.py hitl-modeMode notes:
testingenables the flight simulator and usesbackend/calibration/loadcell_calibration_testing.json.hitl-modeis for hardware-in-the-loop testing. It uses the HITL layout, ignores the key interlock, starts inStartup, and does not run the normal fill sequence state machine.
- For geolocation to work correctly in browsers, the backend should be behind HTTPS.
docker-compose.ymlis set up for local TLS testing with a self-signed certificate.
Download map data with:
python3 download_map.pyThis uses the map_downloader/ crate and writes map data into data/.