Afsprakenplatform en kassasysteem voor 1Kapper
1Kapper is de online agenda waarmee kapsalons en barbers hun afspraken plannen, met een kassasysteem eraan vast.
Klanten boeken zelf een tijd bij hun kapper via 1kapper.nl, de salon ziet die afspraak meteen in de agenda staan en rekent de behandeling later in dezelfde omgeving af. Op het platform worden duizenden afspraken per dag gemaakt, in de drukke uren honderden per uur.
Wat er in het platform zit
Een salon stelt zijn eigen beschikbaarheid in en klanten boeken daarbinnen op elk moment van de dag. Aan de agenda hangen de klantenkaart, het personeelsrooster, de voorraad en de rapportages. Het kassasysteem rekent de behandeling af via een PIN-koppeling met Pay.nl, waarna de omzet in diezelfde rapportages terugkomt. Bevestigingen en herinneringen gaan automatisch naar de klant.
Overgenomen van de vorige partij
De doorontwikkeling lag bij een andere partij en is naar ons overgegaan, inclusief de deploys en het overleg over nieuwe functionaliteit. Het platform draait op Laravel met Vue aan de voorkant. De database is PostgreSQL, gekozen omdat je daarin beter uit de voeten kunt met agenda's en met afspraken die elkaar overlappen.
De securitycontrole en wat daaruit kwam
We hebben het platform nagelopen op beveiligingsrisico's. Daar kwam onder meer role escalation uit, waarbij een gebruiker rechten kon krijgen die niet bij zijn rol horen. Die bevinding is opgelost, net als de andere punten uit de controle. Sindsdien houden we de CVE's bij van de packages waar het platform op leunt, zodat een bekend lek in een afhankelijkheid niet maandenlang blijft staan.
Van pollers naar een socketserver
De live weergave van de agenda werkte met pollers. Elk geopend scherm vroeg de server met vaste tussenpozen om nieuwe gegevens, ook als er niets was veranderd. Bij duizenden afspraken per dag telt dat aan de serverkant flink op. We hebben het vervangen door een socketserver, die een wijziging doorstuurt naar de openstaande schermen op het moment dat die wijziging er is.
Deploys en monitoring
Wij zetten de nieuwe versies naar live. Sentry meldt de fouten die in productie optreden. Daarnaast bewaken we of de omgeving bereikbaar is en of er CVE's openstaan voor de gebruikte packages.
Wat wij doen
Het dagelijkse beheer van 1Kapper ligt bij ons, dus 1Kapper kan het applicatiebeheer uitbesteden zonder zelf een technisch team op te bouwen. De hosting en het onderhoud horen daarbij, net als de beveiliging van applicaties en websites. Daarnaast adviseren we over technische verbeteringen, waarvan de overstap van pollers naar sockets de duidelijkste is.