LabCraft
How can a FabLab manage its clients, rooms and room temperature from one desktop app?
A C++ / Qt desktop application to run a FabLab (a making and coworking space): clients, staff, equipment, projects, rooms and workshops. I built the complete Clients module, room management and room temperature monitoring with Arduino.
- My role
- Clients module, room management and Arduino integration (C++ / Qt, Oracle)
- Platforms
- Desktop, IoT
- Stack
- C++
- Qt
- Oracle Database
- Arduino
- MVC
Situation
LabCraft brings the management of a FabLab, a making and coworking space, into one desktop application: clients, staff, equipment, projects, rooms and workshops.
A second-year academic project built as a team, each member owning a module. I took the Clients module end to end, room management and the Arduino integration that monitors room temperature.
Product
Clients
- Complete records: creation with input checks and a required photo, two-step editing (load, then save), deletion.
- List with photos right in the table, search by name and sorting by sign-up date.
- PDF export of a client record and statistics as an animated chart.
- Welcome e-mail sent automatically to every new client.
- Image scanner: a photo becomes a high-contrast black-and-white document.
Rooms and temperature
- Rooms: capacity, price per day, status and maximum allowed temperature.
- Arduino monitoring: the real temperature is compared with the room’s maximum, with an alert to start the fan.
System
- C++11 and Qt 5: screens designed in Qt Designer, page navigation with a
QStackedWidget. - Layered, MVC-inspired architecture:
.uiviews, controllers (MainWindow,SecDialog), andClientandSalledomain classes that own the CRUD. - Oracle through ODBC (Qt SQL) with prepared statements throughout, against SQL injection; photos stored as BLOBs and shown through a custom SQL model.
- Secure SMTP client written by hand on
QSslSocket, as a state machine (EHLO, TLS, AUTH, MAIL, DATA). - Arduino Uno detected automatically from its USB identifiers, read through Qt SerialPort (9600 baud), with outliers filtered out.
- Qt Charts for statistics, Qt PrintSupport for PDFs.
One request, end to end