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.

Team CL Web

Cyril Loosjes

Cyril

Eigenaar CL Web

Djoey

Djoey

Full stack developer

Dirk

Dirk

Full stack developer

Cas

Cas

Full stack developer

Taco

Taco

Full stack developer