urm-app is the main OpenRadio application.
It combines:
- Vue 3 + Pinia + Vite for the UI
- Tauri v2 for the desktop/mobile shell
- a Rust workspace for schema handling, adapters, diagnosis, and device access
urm-app is the current transition-era product workspace in this coordination repo.
Important boundary:
- the current workspace remains
GPL-3.0-or-later - future permissive-core extraction is planned under
../urm-app-core/ - GPL-sensitive adapter boundaries must not be blurred in docs or packaging
- Node.js / npm
- Rust toolchain
- Tauri CLI
- for some radio workflows: Python / CHIRP may be required later, but not all development tasks need them
Cloud-login-first MVP features also use:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
npm install
npm run typecheck
npm run build
npm run tauri:devThe app shell currently wires these pages:
DashboardChannelsDevicesTemplatesShareTeamSettings
Important constraint: several pages are still shell or placeholder views and should not be documented as fully functional features.
Commands with existing entry points:
list_serial_portsdiagnose_serialimport_chirp_csvexport_chirp_csvvalidate_profilelist_backups(currently returns an empty list)
Commands with entry points but still requiring real hardware regression:
read_devicewrite_devicebackup_devicerestore_backup
Commands still marked as not implemented:
scan_ble_devicesconnect_bleread_ble_devicewrite_ble_device
Minimum local verification:
npm run typecheck
npm run buildIf Tauri prerequisites are installed, also verify the shell boots:
npm run tauri:devsrc/— Vue UIsrc-tauri/— Tauri entrypoints and commandscrates/urm-core/— shared Rust domain logiccrates/urm-adapter-*— adapter crates for serial, CHIRP, Xiaomi BLE, and future integrations