BeepZone Desktop Client (eGUI EMO Edition)
very very very early beta version atleast fr
desktop client for the BeepZone asset management "system", built with rust + egui (dont ask why egui i forgor).
Features
Core funzionality
- Asset Management: Browse, search, add, edit, clone, and delete assets and more to come ...
- Borrowing System: Easy checkout and return workflows with borrower table and lending status "tracking"
- Zone Management: Tree zone view with recursive filtering and item assignment
- Label Printing: flexible label template system with support for QR codes, barcodes, DataMatrix codes, and sofar direct CUPS printer integration (never tested on Fenster, works on Pinguin and Macdonalds. hella buggy and doesnt work with certain Kyocera Net Printers yet)
- Issue Tracking: Report and manage asset issues with status tracking (not yet finished)
- Audit System: Track asset changes and user actions (Todo Implement unexpected Item Zone Actions)
- Category Management: Organize assets by categories and subcats
- Supplier Management: Track suppliers and their contact information
tehnikal features
- Multiple Authentication: Password, PIN, and RFID/Token login support (Meant for future kiosk usage only password rn implemented)
- Session Management: "Persistent" login sessions with "secure" token storage
- Advanced Search: Realtime filtering across multiple fields with debouncing
- Table Rendering: Sortable, searchable tables with context menus, Filter Builder and row selection
- Form Validation: Built in validation with help system using egui_form + garde
- Print System:
- Multiple printer plugins (System, PDF ... more are planed like pTouch and remote printers through API maybe)
- Custom label templates with JSON based layout system
- Support for custom paper sizes and orientations
- cross platform: should run on all major 3 OS'es (Pinguin, Macdonalds, Fenster)
- somewhat lightweight: it's not fat and should run on any potato !
disclosure !
beepzone and its stack were all made as a passion project with initial works starting sometime in late October 2024 (more yappin and details as to why i made this ill add later maybe)
I fully admit that : - I have had zero experience in front end developer work when starting this (and still alot of times feel like i kinda dont know what im doing) - Have only some bare minimal rust programming skills which i mainly previously only used for small backend type applications - Barely document my spaghetti code
Therefore I did use agentic LLM models during this project for the following : - Code and Config Comments since I often myself forget what does what or write them in a way only I understand with lots of swearing or just in straight up Swiss-German - Loads and loads of bug fixing - Placeholders/Templates for Views - Initial Structure of the Desktop Clients Code (as a template) - Certain features/patches/repetitive work where I was too lazy to do it myself and considered them to be simple work for an agentic LLM model
I hope that by roughly disclosing where I used none human work I can bring more honesty to the table unlike certain projects I've recently seen on github that dont disclose that at all yet the entire repository reeks of AI SLOP which honestly just feels dishonest and stinks (and sometimes even charge money for the product that barely works).
prereqs
- rust 1.70 or later recommended install from here : rustup website
- beepzone schema with atleast one admin user served using seckelapi
Installation
build from source
cd /path/to/beepzone-egui
cargo build --release
binary will be at target/release/beepzone-egui
run dev build
cargo run
run release build
cargo run --release
project "structure"
beepzone-egui/
├── Cargo.toml
├── src/
│ ├── main.rs # Entry point, font/style configuration
│ ├── api.rs # API client for backend communication
│ ├── config.rs # Configuration management
│ ├── models.rs # Data models and API types
│ ├── session.rs # Session persistence and management
│ ├── core/ # Core business logic
│ │ ├── mod.rs
│ │ ├── asset_fields.rs # Asset field definitions
│ │ ├── asset_operations.rs
│ │ ├── borrow_flow.rs # Multi-step checkout workflow
│ │ ├── return_flow.rs # Multi-step return workflow
│ │ ├── counters.rs
│ │ ├── data_loader.rs
│ │ ├── editor.rs
│ │ ├── filter_builder.rs
│ │ ├── interactions.rs
│ │ ├── search.rs
│ │ ├── stats.rs
│ │ ├── table_renderer.rs
│ │ ├── tables.rs # Database table queries
│ │ ├── components/ # Reusable components
│ │ │ ├── clone.rs
│ │ │ ├── form_builder.rs
│ │ │ ├── help.rs
│ │ │ └── md.rs
│ │ ├── print/ # Printing system
│ │ │ ├── mod.rs
│ │ │ ├── parsing.rs
│ │ │ ├── printer_manager.rs
│ │ │ ├── renderer.rs
│ │ │ ├── plugins/
│ │ │ └── ui/
│ │ └── workflows/ # Not yet implemented
│ └── ui/ # UI views
│ ├── mod.rs
│ ├── app.rs # Main application state
│ ├── audits.rs
│ ├── borrowing.rs # Borrower management
│ ├── categories.rs
│ ├── components.rs # Shared UI components
│ ├── dashboard.rs
│ ├── inventory.rs # Asset inventory view
│ ├── issues.rs
│ ├── label_templates.rs
│ ├── login.rs
│ ├── printers.rs
│ ├── ribbon.rs # Top navigation ribbon
│ ├── suppliers.rs
│ ├── templates.rs # Not yet implemented
│ └── zones.rs
└── docs/ # Documentation and examples
configuration
session storage
session data should be found here incase you need to delete it:
- Macdonalds: ~/Library/Application Support/beepzone/session.json
- Pinguin: ~/.config/beepzone/session.json
- Fenster: %APPDATA%\beepzone\session.json
default settings
- server url:
http://localhost:5777(until a usable release exists) - configurable via the login screen
development
adding new views
- Create module in
src/ui/ - Add to
src/ui/mod.rs - Add enum variant to
AppViewinsrc/ui/app.rs - Implement in main
update()match
debugging
enable debug logging:
RUST_LOG=debug cargo run
log levels: error, warn, info (default), debug, trace
planned stuff
- make it actuall support backends RBAC lol
- Finish Audit workflow in regards to items in wrong zones and UI Polishing
- Reporting and analytics (allow printing paper reports on rooms for non technical people)
- Global Settings/preferences/adminier
- Bulk import/export functionality
- Flag to launch in kiosk mode but thats far from now
- Asset image display and file attachments (technically supported by backend and schema was simply too lazy)
- Properly implementing issue view (currently a "design" concept was slapped there by an LLM)
- Adminier Panel
- Fixing up of user preference json stuff
- Dashboard overhaul (more of a concept slapper in place rn)
- Item Replacement system
- Item Relationship System
- Bunch of testing
- View Item Right Click and Double Click thingy instead of old E-Edit maybe
- Caching to some extent to make it more wireless terminal capable
- localization someday maybe
- less terrible backend connection checking and failsafes
- more I forgor
license
beepzone and everything of in its stack is GPL-3.0 i think
