Features
A native Rust desktop application built for speed — modular service clients, real-time MQTT integration, offline-first data, and a responsive immediate-mode UI.
A home management system is only as useful as the interface you live in every day. Casabeza's desktop client is written in Rust — compiled to a native binary, with zero runtime dependencies and an immediate-mode UI that responds without delay.
The desktop client (cbz-desktop) ships as a single compiled binary. No Electron. No embedded browser. No 200MB download with a bundled Chromium. The entire application fits in a few megabytes, starts in under a second, and never holds memory it doesn't need.
It's packaged as a .deb for Linux and installs cleanly alongside your other system software. One file. One entry in your package manager. Done.
Underneath the UI, nine purpose-built async HTTP clients handle communication with Casabeza's backend services — each with a single responsibility, each optimized for its domain:
Every client is async, uses connection pooling, and handles errors without blocking the UI thread. The rendering loop never waits on a network call.
Fixed readers and the Android scanner publish scan events to an MQTT broker. The desktop client subscribes and responds in real time: open the item record, log a location change, increment a stock count — all triggered by a single scan with no manual navigation.
Reader channels are configurable from within the desktop client. A mounted reader at a storage shelf can have its ingress and egress actions, scope, and label type set without touching the backend directly.
Inventory data, labels, locations, projects, and task notifications are cached locally. Opening the application loads from disk; the network syncs changes. On a slow or interrupted connection, the interface remains useful. Delta-refresh strategies minimise bandwidth once data is loaded.
Image and document assets download in a background worker pool. They appear when ready and are cached for subsequent sessions — no waiting, no re-fetching.
The UI is organized around the domains that matter: inventory hierarchy, project logs, price history charts, task notifications, and shopping lists. Each area has dedicated views built for how that data is actually used — not generic CRUD screens adapted from a web form.
Chart rendering is built in (egui_plot). Image and PDF documents open inline — no external viewer required. Custom tags (CTags) with colour coding give items a visual taxonomy that's visible at a glance.
Every component in the stack was chosen for low overhead:
The result is an application that feels instantaneous. Not because hardware is fast — it is — but because nothing in the stack wastes cycles.