Contributing to Ioruba
Active stack
The current product path lives in:
apps/desktopfor the Tauri + React desktop appapps/desktop/src-taurifor the Rust backendpackages/sharedfor protocol and runtime logic shared by the UIfirmware/arduino/ioruba-controllerfor the Arduino firmware
Anything under legacy/ is archived reference material and should only be touched when you are documenting or comparing past behavior.
Local setup
Install dependencies:
npm install
Recommended validation pass:
npm run verify
If you are changing the desktop shell itself, also build the Tauri binary:
npm run desktop:tauri:build
If you edit the app icon source at apps/desktop/src-tauri/icons/app-icon.svg, regenerate all derived desktop, Android, iOS, icns, and ico assets with:
npm run desktop:icons
If you are changing firmware:
arduino-cli compile --fqbn arduino:avr:nano firmware/arduino/ioruba-controller
Workflow
- Keep changes focused on the active stack unless the task explicitly targets
legacy/. - Update docs when paths, commands, or runtime behavior change.
- Prefer adding tests alongside
packages/shared,apps/desktop, orapps/desktop/src-tauriwhen behavior changes. - Regenerate generated assets, including desktop icons, whenever their source files change.
- Do not reintroduce root-level Haskell build files or old release tooling outside
legacy/.
Pull requests
Before opening a PR, make sure:
npm run verifypassesnpm run desktop:tauri:buildpasses for desktop-shell changes- firmware still compiles when firmware files changed
- docs reflect the current repository layout