All projects

2025

Salon-Go: Barber Booking Platform

A full booking platform connecting clients with barbers: a mobile app, a NestJS backend and management dashboards, built by a team and now in testing on Google Play.

NestJSReact NativeExpoReactPostgreSQLPrismaRedisMinIODockerDigitalOcean
Want to test the app?

The Android app is in testing on Google Play. If you would like to try it, get in touch and I will add you as a tester.

Contact me to test the app

Overview

Salon-Go connects clients with barbers through flexible service booking. It is the largest project I have worked on and the one I have spent the most time on, built together with my team.

The platform has four user roles (clients, barbers, managers and admins), each with its own experience: a mobile app for clients and web dashboards for managers, barber staff and super-admins. The backend is deployed on DigitalOcean, and the Android app is currently in testing on Google Play.

Components

Mobile app

React Native with Expo: barber discovery and search, maps and location, booking with date and time selection, push notifications and image upload.

Backend API

NestJS with PostgreSQL and Prisma, Redis caching, MinIO file storage, WebSocket notifications and Swagger-documented endpoints, deployed with Docker on DigitalOcean.

Admin and manager dashboards

React and Vite control panels with React Query for the super-admin and for managers, covering users, roles, services, specialisations and operational data.

Landing page

A marketing site built with Astro to present the product.

What I built

  • Built with my team a platform spanning a mobile app, a backend API and admin and manager dashboards.
  • Architected a bitmap-based scheduling engine enabling O(1) availability checks via bitwise operations.
  • Optimized the booking validation path, reaching under 1 ms cached reads and a 95% memory reduction.
  • Designed a stateless, role-based API (JWT, RBAC) and deployed the backend with Docker on DigitalOcean.

Design and architecture

  • Domain-driven NestJS modules (users, clients, barbers, services, certifications, bookings, admin) with CQRS-style command and query separation.
  • Scheduling: availability is stored as bitmaps, so checking whether a slot is free is a bitwise operation instead of a scan, with results cached in Redis.
  • Security: JWT with refresh tokens, role-based guards for the four roles, validated DTOs and certification and legal-document verification for barbers.
  • Infrastructure: containerized services with production Compose files, deployed to a DigitalOcean droplet.