Mohamed Rayen Sansa
ENFR
All projects
Academic · Team project2024

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
1:10 000

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.

1:1 000

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.
1:100

System

  • C++11 and Qt 5: screens designed in Qt Designer, page navigation with a QStackedWidget.
  • Layered, MVC-inspired architecture: .ui views, controllers (MainWindow, SecDialog), and Client and Salle domain 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.
Interface Qt (Widgets · Designer), Arduino Uno (capteur · série 9600), Contrôleurs (MainWindow · SecDialog), Métier (Client · Salle), SMTP (SSL / TLS), Oracle (QODBC).ui → ctrl : slots; ctrl → model : CRUD; model → db : requêtes préparées; ctrl → smtp : e-mail; arduino → ctrl : températureslotsCRUDrequêtes préparéese-mailtempératureInterface QtWidgets · DesignerArduino Unocapteur · série 9600ContrôleursMainWindow · SecDialogMétierClient · SalleSMTPSSL / TLSOracleQODBC

One request, end to end

Hiring? Compare with your offer

Paste your internship offer. You will see which of the technologies you ask for are backed by one of my projects or internships, and which are not.

The text stays in your browser; nothing is sent.