LocknBook
A deployed, sole-authored multi-tenant venue-booking platform — a complex .NET microservices backend over gRPC + Kafka, with a CI/CD pipeline running on a Raspberry Pi in my own home lab.
System architecture: REST at the gateway, gRPC between services, Kafka for async events.
Problem
Let venue owners publish tables and availability, and let guests discover venues and book a table in real time without a password account — while guaranteeing no two guests ever book the same table/slot.
Role
Sole author. Designed and built the entire system end to end: architecture, data model, booking algorithm, authentication, frontend, CI/CD, infrastructure, and observability. Bachelor diploma project (UPT).
Solution
Decomposed into focused ASP.NET Core 8 services (API gateway, booking, discovery, identity/OTP, tenant management, notification, and a cron worker), REST only at the gateway, gRPC between services, Kafka for async events. Made double-booking structurally impossible with a composite-primary-key reservation row and a hold-then-confirm life-cycle. Passwordless guest login via email OTP; JWT + claims for admins. Then took it all the way to production myself.
- Atomic anti-double-booking via a (table_id, slot_start) composite PK + hold→confirm→expire life-cycle
- gRPC + Kafka topology (otp-requested, booking-confirmed) with a KRaft-mode broker
- Self-hosted GitLab CI/CD on a Raspberry Pi ARM64 runner, Cloudflare Tunnel ingress, Docker, Prometheus/Grafana/Loki
One person designing a distributed system and operating the pipeline that ships it — the end-to-end ownership the positioning claims, proven rather than asserted.



