Mila monorepo is PROVE's monorepo for all code related to the Mila vehicle (except for embedded code, for now). It includes:
- Dashboard and Reverse camera
- Homebase telem code
- SerDes and Plotting scripts for logged data
- Documentation and a single source of truth
- etc
Essentially all code that is necessary for Mila will eventually end up in this repository.
The justfile provides handy tools/commands to build, run, and generate.
For example, just generate_cc_db allows you to generate compile_commands.json
so that your LSP gets the requisite symbols. build_embedded will build all our
embedded targets. Feel free to use just --choose to see and choose targets.
/
/.github
/autogen
/dashboard
/mila-embedded
/src/mcu
/src/vitals
/reverse-camera
/telem-dashboard
Future:
/autonomy
The in-vehicle dashboard can be setup and run via just autogen, followed by just dashboard.
You cant run the vehicle dashboard in a VS Code terminal. It inserts weird env vars.
You need to be in a regular Linux terminal (and have protobuf and nanopb)
The telemetry (home-base) dashboard can be run via just start_telem_dashboard
All new PROVE Memos will now reside in /doc as Markdown for CS and CPE-related items. This keeps the documentation close to the code, beneficial both for reviewers and devs
The repo has a flake for the shared dev toolchain: Rust, Node/Tauri, Python/uv, PlatformIO, protobuf/nanopb, Java/Gradle, and Just.
nix develop
just --list
just dashboard
just release_dashboard_linux
just build_embedded_allDashboard release artifacts land in target/release/bundle/{deb,rpm}/.
PlatformIO itself comes from Nix; downloaded board/toolchain packages are stored
in the repo-local .platformio cache.
If you are not using Nix, install these manually:
To use the items in this monorepo, it's recommended that you have:
- Python
- uv
- Platformio (can be pip installed)
- NodeJS
- Rust
- Just
- Java JDK (Please look at your package manager on how to do this)
- Gradle
- Protocol Buffers compiler (
protoc)- Python packages for nanopb codegen:
nanopb,protobuf
- Python packages for nanopb codegen:
To manage build/setup, we use Justfile which is a slightly simpler Makefile.
We recommend using sdkman to install the jdk and gradle.
For just autogen (VSR v2), make sure nanopb tooling is installed for your Python environment:
pip3 install --user nanopb protobuf