Project · Salon & Wellness Booking
Stylelands
PilotStylelands lets users discover and book salons, spas and wellness services with a smooth, mobile-first booking experience.
01 · Overview
About the project
Stylelands is a salon and wellness discovery marketplace where users can find, compare and book appointments across salons, spas and wellness services. The product centers around a smooth mobile-first booking experience, pairing a Flutter consumer app with backend systems that manage listings, availability and reservations.
The platform connects service providers with customers through a unified booking pipeline, surfacing service catalogs, pricing and available time slots in a mobile experience optimized for quick browsing and frictionless checkout.
02 · Problem
What we set out to solve
Booking salon, spa and wellness appointments today still relies heavily on phone calls, walk-ins and fragmented Instagram or WhatsApp conversations. Customers lack a single place to discover nearby providers, compare services side-by-side and see honest availability before committing to a time.
Providers, meanwhile, struggle with manual scheduling, double-booked slots and inconsistent customer communication — especially for multi-service visits that need careful sequencing of staff and rooms.
03 · My Role
What I worked on
Full stack engineering across architecture, the Laravel backend APIs and the Flutter mobile client. I designed the provider listing and service catalog data models, the booking engine with availability lookup, Cloud Firestore-based live state for slot updates and the end-to-end booking flow in the Flutter application.
04 · Technologies
Stack and how each piece is used
05 · Architecture & Technical Approach
How the system is structured
Stylelands follows a layered REST-native architecture with the Laravel backend acting as the system of record for all booking, catalog and provider data exposed through authenticated APIs. MySQL holds transactional relational records for bookings, service catalogs, pricing and customer relationships, while Cloud Firestore mirrors availability state for live subscriptions on the Flutter client.
All mutation of availability and booking state goes through the Laravel backend to enforce business rules, concurrency constraints and role-based access. The Firestore layer is then updated as a derived read model, keeping the mobile user experience reactive without bypassing server-side validation or double-booking protections.
06 · Key Features
What the product delivers
- Discovery of salons, spas and wellness service providers
- Service catalog browsing with pricing and salon details
- Mobile-first appointment booking with slot selection
- Real-time availability updates synced to the mobile app
- Unified booking experience across different wellness categories
- Provider-side systems managing listings and schedules
07 · Engineering Challenges
Hard problems we had to solve
- Realtime availability sync across MySQL bookings and Firestore live state without drift or race conditions
- Mobile UX for marketplace discovery — browsing many salons and services quickly while keeping imagery and scrolling smooth
- Booking concurrency for popular time slots, preventing double-bookings under simultaneous selections
- Mobile performance for service lists with pricing, imagery and provider metadata on lower-end devices
- Offline resilience in the booking flow so partial selections survive network drops in-store or on poor connectivity
08 · Solutions
How we addressed them
- Clean architecture with clear command/query separation — all booking mutations flow through Laravel, Firestore is treated as a derived read side
- Database transaction wrapping with locking for slot reservation, combined with short-lived optimistic holds on the client during checkout
- Standardized Laravel authentication and authorization patterns protecting provider, admin and customer scopes
- Flutter client optimizations with list pagination, image caching and lazy-loaded salon cards for smooth marketplace scrolling
- Background-aware notification and sync patterns ensuring confirmations and reminders reach customers after successful booking
09 · Outcome
What was delivered
Built and shipped Stylelands as a complete salon and wellness booking marketplace with end-to-end discovery, catalog browsing and mobile-first appointment booking. The platform applies clean layering between Laravel transactional state, MySQL relational data and Firestore live availability, delivering a working product where customers and providers reliably connect over real services and timeslots.
10 · Lessons Learned
What I'd do differently next time
- Booking flows in marketplaces need edge case handling from day one — add-on services, multi-staff sequencing, no-shows and cancellations are the real bulk of complexity.
- Mobile-first UX and imagery performance are tightly coupled; marketplace catalogs only feel fast when list rendering, image caching and data pagination are engineered together.
- Keeping a transactional system of record in MySQL and a live read model in Firestore requires explicit, testable synchronization rules — eventual consistency needs to be visible, not accidental.
Next