Challenge
A multi-site manufacturing company wanted to eliminate lunch queues and the manual workload of tracking daily meal orders. Employees had no way to reserve meals in advance or pay cashlessly, and the caterer had no reliable, consolidated forecast of next-day demand — which drove over-production, food waste and guesswork in raw- material procurement. Monthly payroll deductions for unpaid meals were reconciled by hand.
Solution
- Built a role-based Django application with four roles (employee, kitchen manager, distribution operator, service admin) enforced through Django auth groups.
- Designed a weekly menu engine (week × weekday × dish, by category) and a deterministic order-numbering scheme encoding year/week/day/employee number, so any order can be located at pickup from the employee ID alone.
- Implemented a prepaid balance ledger (deposits, withdrawals, refunds) and integrated an Estonian bank payment gateway for cashless top-ups and refunds.
- Added QR-code meal pickup and on-demand PDF receipts with per-line VAT (ReportLab).
- Automated operations with scheduled jobs — next-working-day order reports to the kitchen, monthly payroll-deduction CSVs to an internal file share, automatic archiving of expired orders, and an HR-driven roster sync that auto-blocks departed staff.
- Deployed on Rocky Linux with Nginx + Gunicorn, PostgreSQL for data and Redis for caching and sessions, including custom SELinux policies for the stack.
Result
A complete pre-order, payment and pickup workflow that replaces manual order tracking and automates payroll reconciliation, while giving the caterer an accurate demand forecast — cutting over-production, food waste and procurement guesswork. Built and delivered end to end, the system was also the basis of my MSc thesis at TalTech.