Why it was needed
The idea came from my own job. Where I work, employees write their hours down on paper, and at pay time the boss collects the sheets and works out everyone’s hours by hand. I wanted to automate that. The project then grew to cover the other headache, planning the week itself: someone has to open and close every day, nobody should close at night and open the next morning, weekends have to rotate fairly, and some employees work in more than one store.
InventaLogic handles both halves: it generates the weekly schedule from each store’s own rules, and a check-in terminal at the store records real arrivals and departures, so the hours worked are counted automatically instead of collected on paper, and can be compared with the plan.
What I built
The scheduling engine works in two passes. A greedy pass first fills every shift, then a local search (hill climbing) keeps swapping shifts as long as the result gets better. It handles weekend rotation and adds up each employee’s hours across several stores. It is covered by Vitest tests and was checked against real convenience-store data.
The manager’s web app shows the week for every store, with coverage and hours per employee, a warning past 40 h, drag-and-drop shift swaps that are checked against the 11-hour rest rule, per-store rule settings, and an attendance page where any correction needs a reason. The backend moved from Flask (Python) to Express and Prisma on PostgreSQL, and the dashboard was rebuilt in React.
The check-in terminal is a Raspberry Pi 4 with a 7″ touchscreen running a Qt/QML app, in a case I designed in SolidWorks. Employees check in with a fingerprint or an NFC card: the GROW R558-S fingerprint sensor talks to the Pi over UART, which only worked once the port was set to two stop bits, and the PN532 NFC reader runs over I²C.
Hosting: the app is being deployed on my own Linux server at DigitalOcean.
My role: the system design, the scheduling rules and the engine logic, the terminal hardware, validating results with real store data, and deployment. Much of the web code was written with AI assistance (Claude Code).
Software
Scheduling engine (greedy + hill climbing), Vitest, React, Node.js / Express, Prisma, PostgreSQL, Qt/QML
Hardware
Raspberry Pi 4, 7″ touchscreen, GROW R558-S (UART), PN532 NFC (I²C), case designed in SolidWorks
Deployment
Linux server on DigitalOcean, AI-assisted development (Claude Code)