• Home
  • Portfolio
  • Contact
  • Home
  • Portfolio
  • Contact

Room Booker: Een open source kamer reserveringssysteem

Technologieën:

Python, C++, Qt, FastAPI, Slack Bolt, SQLite

Datum:

Mei 2025

De Filmacademie heeft een mini-bioscoop die gebruikt wordt door studenten. Er was alleen geen communicatie over wie de ruimte wanneer gebruikte, wat constant voor problemen zorgde. Bestaande reserveringssystemen vond school te duur, dus heb ik er zelf een ontwikkeld!

Versie 1: In een week ontwikkeld zonder budget

Er was vooral veel gedoe over de mini-bioscoop toen de derde- en vierdejaars Visual Effects & Immersive Media studenten tegelijkertijd bezig waren met hun eindfilms. Beide jaarlagen moesten natuurlijk hun werk goed kunnen bekijken, maar zaten elkaar vaak in de weg door planningsconflicten. Als oplossing hiervoor had ik bij de schoolleiding gevraagd of een Joan 6RE of een Logitech Tap Scheduler aangeschaft kon worden, maar beide opties bleken helaas te duur te zijn. De oplossing vanuit school was om naast de deur een whiteboard op te hangen waar studenten met een stift de planning op bij konden houden. Van deze oplossing was ik niet zo gecharmeerd, dus werd het mijn doel om een nieuwe, volledig gratis oplossing te ontwikkelen vóórdat dit whiteboard werd opgehangen.

Al onze school communicatie ging via Slack, dus het idee was simpel: een Slack bot ontwikkelen om reserveringen mee te maken en die dan laten zien via een custom app op een oude telefoon boven de mini-bioscoop. Op maandag kreeg ik het whiteboard plan te horen, en op vrijdag had ik dit nieuwe systeem ontwikkeld en opgehangen. Mijn doel was alleen nét niet gehaald; vrijdagochtend had gebouwbeheer het whiteboard opgehangen en vrijdagmiddag mocht ik mijn systeem ophangen. Gelukkig kon het whiteboard gebruikt worden om het nieuwe systeem uit te leggen!

Bekijk de source code voor versie 1 op GitHub
Versie 1 van het reserveringssysteem

Positieve reacties & verbeterpunten

In één klap waren alle planningsconflicten opgelost. Via de Slack bot kon iedereen bekijken wanneer de ruimte bezet was, en makkelijk zelf een reservering plaatsen. Het nieuwe systeem zorgde voor een “single source of truth”, want wat er op het schermpje boven de deur stond werd gelijk geaccepteerd als de waarheid. Het systeem was verrassend stabiel; de app crashte vrijwel nooit en de Slack bot draaide altijd. Bijna een jaar lang heeft de 12 jaar oude Sony Xperia Z1 trouw alle reserveringen weergegeven. Ik denk dat hij zelfs nog wel langer mee had gekund, maar in mijn afstudeerjaar vond ik het wel tijd voor een iets permanentere oplossing. Het systeem had namelijk een aantal verbeterpunten:

  • Iemand moest ‘s ochtends elke dag de telefoon aanzetten, dit kon niet automatisch.
  • Door de netwerkconfiguratie op school was de achterliggende infrastructuur nogal omslachtig; een deel ging via mijn eigen cloud server, niet die van school.
  • Heel soms liep de telefoon vast en moest de app of telefoon opnieuw opgestart worden.
  • Het zag er gewoon lelijk uit.

In mijn afstudeerjaar had ik tijd om alles opnieuw te ontwikkelen, maar dan nét wat uitgebreider!

Versie 2: Gebruiksvriendelijker en beter opgezet

Versie 2 moest in alle opzichter beter worden: mooiere graphics, betere Slack bot, overzichtelijkere codebase, enzovoorts. Ook wilde ik dat versie 2 gebruikt kon worden door andere organisaties, niet alleen door onze school. De look & feel moest dus instelbaar zijn. Ook moest hetzelfde systeem voor meerdere kamers gaan werken, voor bijvoorbeeld organisaties met meerdere meeting rooms. Genoeg te doen dus, te beginnen met een nieuw mooi design. De mockups hieronder heb ik gepitcht bij het docententeam:

De studieleider ging akkoord, dus toen werd het tijd om te gaan programmeren. De software voor op het schermpje heb ik vanwege stabiliteit en performance geschreven in C++ met Qt. De backend heb ik geschreven in Python met FastAPI, Slack Bolt en SQLite als database. De backend is ook flexibeler opgezet; het is nu makkelijk om andere integraties naast Slack later toe te voegen aan het systeem. Na ongeveer 1.5 maand ontwikkeltijd en daarna een paar maanden wachten totdat gebouwbeheer toestemming gaf om gaten te boren, hing het gloednieuwe systeem!

Bekijk de source code voor versie 2 op GitHub
ICT Software development
(VORIGE)

Meffec: Realtime app-triggerable show control infrastructuur

(VOLGENDE)

Unreal build automatisering via Slack met Perforce en Jenkins

Soortgelijke projecten

Operator monitor voor immersive experience Helleveeg
ImmersiveSoftware development
Het ontwerpen en bouwen van de eerste mindfulness ruimte van de AHK
ImmersiveSoftware development
Unreal build automatisering via Slack met Perforce en Jenkins
Game developmentICT