Rework
A layered C++ and Qt6 desktop application for managing employees, training certifications, and shift assignments in a working kitchen.
- Status
- In progress
- Stack
- C++, Qt6 (QML), SQLite, CMake
- Role
- Sole developer: architecture, build system, packaging
The problem
In a production kitchen, the schedule is a puzzle: each workstation needs enough people certified for it, and certifications expire. Rework tracks employees, stations, and training records in one place and proposes daily assignments instead of working them out by hand.
Architecture
The app is split into four layers so each can change without touching the others:
- UI. A QML front end (login, main, and detail pages) talking to a C++ backend object.
- Services. Business rules for employees, training, and scheduling, such as validation, certification progression, and conflict detection.
- Repositories. One per entity (employees, stations, training records, schedules, assignments), the only code that issues queries.
- Database. SQLite through Qt SQL, with a versioned schema.
Assignment engine
Assignments come from a greedy constraint-satisfaction pass: stations are sorted by priority, then trainers are placed first, certified staff next, and people still in training last. Understaffed stations and stations with no certified trainer are flagged rather than failing silently.
Suggestion engine
Staff left unassigned are a chance to cross-train. A scored suggestion engine finds the stations each person is closest to being certified for and ranks suggestions by coverage deficit and trainer availability.
Build and packaging
I chose CMake over Qt's Visual Studio project format so the build is the same on every machine, and automated Windows packaging with windeployqt to resolve runtime DLL dependencies after the build.
Where it stands
The QML interface and the core data models are in the repository. The assignment and suggestion engines are the current focus. The login screen is a mock until backend authentication lands.