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.