--- title: Salon Waitlist System date: 2025-04-16T14:00:00Z --- Martin | Salon Prosjekt
Kubernetes & Cloud

Salon Waitlist System

En moderne løsning for timebestilling og venteliste for frisørsalonger, implementert med Kubernetes, Docker og Google Cloud Platform

Ferdig november 2024 Team: Selvstendig Varighet: 2 uker

Prosjektoversikt

Dette prosjektet ble inspirert da jeg besøkte en Cutters salong og observerte deres effektive ventelistesystem. Jeg ble fascinert av hvordan systemet håndterte booking, kø-visning, og frisørenes arbeid via iPads. Dette virket som en perfekt mulighet til å eksperimentere med moderne teknologier og skape min egen versjon av systemet.

Målet var å lage en "lightweight" versjon med fokus på det essensielle i systemet. Dette ga meg også en utmerket anledning til å utforske moderne cloud-teknologier som Kubernetes, Docker og Google Cloud Platform — noe som var hovedmotivasjonen for prosjektet.

Det er viktig å påpeke at denne løsningen er et demonstrasjonsprosjekt og ikke ment for produksjonsmiljøer. Det primære formålet var kunnskapstilegnelse og eksperimentering med teknologistacken.

Teknologier

Docker Kubernetes Google Cloud Platform React Node.js MongoDB JavaScript CSS HTML

Løsningsarkitektur

Systemet er bygget på en mikroservice-arkitektur med følgende hovedkomponenter:

Booking System

Kundeorientert portal hvor kunder kan registrere seg for en frisørtime. Interfacet er enkelt og intuitivt med feltene: navn, e-post og telefonnummer.

Venteliste Visning

Sanntidsvisning av ventelisten med dynamisk beregning av estimert ventetid. Viser kunder i kø, påbegynte klipp og oppdateres automatisk.

Admin Panel

Frisørenes administrasjonsgrensesnitt hvor de kan starte og avslutte klipp, samt se oversikt over dagens kunder. Oppdaterer ventelistesystemet i sanntid.

Backend API

REST-API bygget med Node.js og Express som håndterer all kommunikasjon mellom frontend-applikasjonene og MongoDB-databasen. Implementert med CORS-støtte.

Teknisk implementasjon

Dette prosjektet var en spennende mulighet til å dykke dypt inn i moderne teknologier og skyplattformer. Her er noen av de tekniske detaljene:

Containerisering: Alle systemkomponenter ble pakket i Docker-containere, noe som forenklet utviklingsprosessen betydelig. Dette tillot meg å utvikle lokalt og deployere til skyen med minimale konfigurasjonsendringer, og sikret konsistens på tvers av miljøer.

Backend: API-tjenesten ble implementert med Node.js og Express, og kommuniserer med en MongoDB-database for datalagring. Jeg designet API-et med RESTful-prinsipper og implementerte robust feilhåndtering.

Frontend: Brukergrensesnittene (booking, venteliste, og admin) ble utviklet som separate React-applikasjoner med fokus på responsivt design og brukervennlighet. For sanntidsoppdateringer implementerte jeg en effektiv polling-mekanisme mot API-et.

Kubernetes: Oppsett av Kubernetes-clusteret var utfordrende, spesielt konfigurering av ingress-regler for routing til de forskjellige tjenestene. Men etter å ha mestret dette, ble jeg imponert over hvor enkelt det var å skalere og selvhelbredende funksjonaliteten ved automatisk restart av pods.

Monitorering: Jeg integrerte Prometheus og Grafana for systemovervåking, som ga verdifull innsikt i ytelsen og hjalp meg identifisere flaskehalser under høy belastning. Dette var spesielt nyttig for API-optimaliseringer.

Systemarkitektur

Jeg bygget systemet med en mikroservice-arkitektur kjørende i Kubernetes på Google Cloud Platform. Dataen flyter mellom tjenestene som vist i diagrammet nedenfor - fra kundens registrering til ventelistens oppdatering i sanntid.

Systemarkitektur for Salon Waitlist

Systemarkitektur med dataflyt gjennom komponentene

Brukergrensesnitt

Ved design av brukergrensesnittene var mitt fokus på enkelhet og intuitivitet. Min filosofi var at en kunde ikke skal trenge en bruksanvisning for å registrere seg, og en frisør skal enkelt kunne se hvem som er neste i kø. Jeg holdt derfor designet minimalistisk med fokus på funksjonalitet fremfor visuell kompleksitet.

Booking Portal

Booking Portal

Enkel og intuitiv bookingportal der kunder kan registrere seg i ventelisten.

Venteliste Display

Venteliste Display

Elegant sanntidsvisning av kunder i kø med estimert ventetid.

Admin Dashboard

Admin Dashboard

Oversiktlig dashbord for ansatte med full kontroll over kundebehandling.

Læringsutbytte og refleksjoner

Dette prosjektet var utrolig lærerikt og ga meg innsikt i flere moderne teknologier og utviklingspraksis. Her er noen av de viktigste læringsutbyttene:

Containerteknologi

Docker revolusjonerte min utviklingsprosess ved å eliminere "det fungerer på min maskin"-problemet og sikre konsistens på tvers av miljøer.

Kubernetes Orkestrering

Jeg lærte å sette opp og administrere et Kubernetes-cluster, inkludert pod-definisjoner, tjenester, og ingress-regler for ekstern tilgang.

Cloud Plattform

Google Cloud Platform viste seg å være svært kraftig men også utfordrende, med en bratt læringskurve når det gjelder nettverk og sikkerhetsaspekter.

Systemmonitorering

Implementering av Prometheus og Grafana ga meg verdifull innsikt i systemets ytelse og forståelse av hvorfor monitorering er kritisk i produksjonsmiljøer.

Mikroservicearkitektur

Praktisk erfaring med å splitte funksjonalitet i uavhengige tjenester som skalerer individuelt og kommuniserer via API-er.

CI/CD Pipeline

Oppsett av en kontinuerlig integrasjons- og leveringspipeline tok tid, men sparte enormt med tid i lengden og sikret konsistente deployments.

Om jeg skulle gjort prosjektet på nytt, ville jeg nok vurdert å bruke TypeScript for å få bedre typesikkerhet, og kanskje gått for en mer event-drevet arkitektur med Kafka eller RabbitMQ for meldingsutveksling mellom tjenestene. Dette ville sannsynligvis gjort systemet enda mer responsivt og skalerbart.

Interessert i lignende prosjekter?

Ta kontakt om du ønsker å diskutere hvordan jeg kan hjelpe med lignende utfordringer i din virksomhet.