The grinder_model field was computed by splitting the concatenated "make model" string on the first space, which broke for multi-word brand names like "Weber Workshops". Fetch g_grinder.model directly from the database instead.
- Restructure domain/, repositories/, and routes/api/ into themed subdirectories: coffee/, auth/, analytics/ (and system/ for routes) - Convert super:: relative imports to crate:: absolute paths - Promote macro visibility from pub(super) to pub(crate) - Add pub use re-exports for backward-compatible import paths