Software Built Around Your Business

Booking and membership operator

We Put Booking, Memberships, Payments and Waivers Into One System

The business was running on four things that did not talk to each other: a calendar for appointments, a spreadsheet for memberships, a card machine for payments and a stack of paper waivers behind the desk. We replaced all four with one system that customers can book through themselves.

The Problem

Scheduling lived in one place. Membership records lived in another. Payments happened somewhere else again, and the paperwork every customer has to sign was on paper. Nothing checked anything else, so nothing was ever quite in agreement.

That left the staff carrying the rules in their heads. Is this a weekday rate or a weekend rate? Is this person a member, and how many of their hours are left this period? Are they bringing guests, and what do guests cost? Have they signed the current waiver or an old version of it? Every booking was a set of questions somebody had to get right, and the customer could not answer any of them without ringing the desk.

What We Built

Online booking with live availability, so customers pick a time that is genuinely free
Membership plans with hours tracked and reset against each member signup date
Pricing worked out by the system rather than remembered by staff
Card payments taken at the point of booking
Waivers signed on screen and checked before a booking is allowed
Separate views for the public, members, trainers and administrators
Automatic confirmations, calendar invites, reminders and staff alerts
Member events with signups, hour blocks and bay assignments
An admin side for schedules, holidays, locations and reporting

What Changed

  • Booking, membership records, payments and signed waivers now sit in one system instead of four disconnected places.
  • Customers book, change and cancel their own appointments rather than phoning the desk to have someone do it for them.
  • Members can see how much of their monthly allowance they have used without asking anyone.
  • Pricing rules are applied by the system every time, so weekday, weekend, guest and member rates stop depending on who is working that shift.
  • A missing or out-of-date waiver is caught before the booking is taken, not discovered when the customer is standing at the counter.
  • Confirmations, reminders and internal alerts send themselves instead of being another thing on someone's list.
  • Double bookings are prevented by the system, which checks existing appointments, holidays, blocked events and notice requirements before it offers a slot.
  • Staff, trainers and members each get their own view, so nobody is working around a screen that shows them the wrong thing.

What This Could Do in Your Business

Any business that sells time or capacity - rooms, bays, chairs, equipment, instructors - can be scheduled the same way.
Membership or subscription plans where the allowance resets on the customer's own signup date rather than a shared billing month.
Pricing that depends on the day, the group size, the customer type or the length of the booking.
Required paperwork collected, versioned and checked automatically before a customer is allowed to proceed.
One system with different views for staff, customers and contractors, so each sees only what they should.
Notifications that fire from what actually happened in the system rather than from someone remembering to send them.
Self-service for the questions customers currently ring up to ask.

Is your booking spread across a calendar, a spreadsheet and a card reader?

Follow one booking through your business from enquiry to payment and count how many places it gets written down. That number is usually the argument for a single system.

Under the Hood

For the technical evaluators: how this was actually built.
Custom Project 2025 Completed
10+
Operational modules
4
Permission levels
15+
Record types tracked
50+
Distinct capabilities

System Overview

How the platform is put together

A comprehensive Laravel-based booking system with advanced membership management, real-time availability checking, multi-tenant capabilities, and sophisticated business logic for dynamic pricing, membership hour tracking, and automated compliance validation.

The Hard Parts

Most of the engineering effort went into four pieces of business logic that had to be right every time: the pricing engine, the membership period calculation, the real-time availability algorithm, and waiver validation. Each one is backed by explicit rules in a service layer rather than scattered through controllers, so the rules can be changed later without unpicking the rest of the platform.

Platform Modules

What each part of the system handles
Advanced Appointment Booking
  • Multi-user type booking (Public, Members, Trainers, Admins)
  • Real-time availability checking
  • Dynamic pricing engine (day-based, player-based)
  • Multi-simulator/bay selection
  • Flexible duration booking
  • Guest management system
  • Walk-in appointment support
  • Appointment editing & cancellation
  • Calendar integration (iCal/Google)
  • No-show tracking
Membership Management
  • Multiple membership tiers, each with its own monthly hour allowance
  • Monthly hour tracking & validation
  • Dynamic membership period calculation
  • Real-time hour usage monitoring
  • Separate guest rates for members bringing someone with them
  • Overage charge tracking
  • Membership status management
  • Signup date-based renewal cycles
  • Usage statistics & reporting
  • Member impersonation for support
Intelligent Scheduling Engine
  • Dynamic availability calculation
  • Holiday management system
  • Flexible work hours configuration
  • Event-based slot blocking
  • Real-time slot availability API
  • Schedule-based access control
  • Days-out booking restrictions
  • Multi-schedule support
  • Time slot conflict detection
  • Advance notice requirements
Secure Payment Processing
  • Laravel Cashier integration
  • Credit card encryption (Laravel Crypt)
  • Secure payment data storage
  • Billing & invoice management
  • Payment exemption for members/trainers
  • Guest charge calculation
  • Square payment gateway support
  • Payment history tracking
  • Refund management
Multi-Channel Notifications
  • Email notifications (customer & admin)
  • Pushover push notifications
  • Slack integration for team alerts
  • Event-driven notification system
  • Calendar links in emails
  • Appointment confirmation emails
  • Event announcements & reminders
  • Membership welcome emails
  • Waiver signature notifications
Digital Waiver System
  • Multiple waiver type support
  • Version control system
  • Digital signature capture
  • IP address & user agent tracking
  • Waiver validation for members
  • Signature import/export
  • Active/inactive waiver management
  • Membership-specific waiver requirements
  • Signature history tracking
Event Management System
  • Event creation & management
  • Member-only event signups
  • Hour block selection system
  • Bay assignment for events
  • Guest management for events
  • Event announcements & reminders
  • Trainer event views
  • Event signup cancellation
  • Event blocking in availability
Role-Based Access Control
  • Multi-role system (Admin, Trainer, Member, Public)
  • User profiles & dashboards
  • Schedule-based access control
  • Days-out booking restrictions
  • User impersonation for support
  • Client-user relationship management
  • Authentication & authorization
  • Password reset functionality
Admin Dashboard & Analytics
  • Comprehensive appointment management
  • Member management & statistics
  • Usage tracking & reporting
  • Weekly revenue analytics
  • Player count tracking
  • Time request management
  • Location management
  • Holiday & work hours configuration
  • Data export capabilities

Complex Business Logic Implementation

Sophisticated algorithms and calculations
Dynamic Pricing Engine

Pricing is calculated from several factors at once:

  • Day of week (weekday vs weekend)
  • Number of players
  • Duration of booking
  • User type (member discounts)
  • Per-guest charges
Membership Hour Tracking

Complex membership period calculation system:

  • Signup date-based renewal cycles
  • Monthly hour allocation tracking
  • Real-time usage monitoring
  • Overage charge calculations
  • No-show exclusion logic
  • Period reset automation
Availability Algorithm

Intelligent slot availability system:

  • Multi-factor conflict detection
  • Holiday exclusion logic
  • Event-based blocking
  • Schedule-specific availability
  • Advance notice requirements
  • Real-time slot validation
Waiver Validation System

Automated compliance checking:

  • Membership type to waiver mapping
  • Version-based signature validation
  • Pre-booking waiver checks
  • Automatic requirement detection
  • Signature history tracking

How the Application Is Put Together

The parts that matter if you are assessing whether this would hold up in your business
Application structure
  • Built on Laravel, so the booking rules live in one place rather than being scattered through the screens that use them.
  • Availability logic sits in its own service, which is why a pricing or scheduling rule can be changed without touching the booking flow.
  • Notifications and follow-on actions are event-driven, so adding a new alert does not mean editing the booking code.
  • Slower work โ€” emails, exports, notifications โ€” runs on a queue, so the person clicking Book is never left waiting on it.
  • Every incoming form is validated server-side before it reaches the database.
Data and reporting
  • MySQL schema designed around the real relationships between members, bookings, plans and payments.
  • Bookings that touch several records at once are written in a single transaction, so a half-finished booking cannot exist.
  • Queries are written to load related records in one pass, which keeps the calendar fast as the history grows.
  • Sensitive fields are encrypted at rest.
  • Membership usage, guest charges and revenue are calculated from the booking data itself rather than a separate spreadsheet.
Security and access
  • Staff, admin and member accounts each see only what their role allows.
  • Card details never touch the application's own database โ€” payment handling stays with the payment provider.
  • Passwords are hashed, sessions are protected against cross-site request forgery, and inputs are sanitized.
  • Account actions are logged with IP address and device, so a disputed change can be traced.
  • Every route is protected at the framework level rather than by hiding links in the interface.
What it connects to
  • Payments through Stripe and Square, including stored cards for recurring membership billing.
  • Bookings generate calendar invitations that work with Google Calendar, Outlook and Apple Calendar.
  • Staff alerts delivered to Slack and to phones via push notification.
  • Confirmation, reminder and receipt emails sent automatically at the right point in the booking.
  • Integrations are wrapped behind a common interface, so swapping a provider later is a contained change.

Engineering Decisions

Why the system is built the way it is
Scalable Architecture

Built to handle multiple user types, schedules, and locations with clean separation of concerns, service layers, and reusable components. The architecture supports future growth and feature additions.

Real-Time Processing

Instant availability checking and booking confirmation with real-time slot validation, dynamic pricing calculations, and immediate notification delivery - ensuring responsive user experience.

Security First

Encrypted payment data, role-based access control, secure authentication, and comprehensive input validation. Payment details never sit in the database in readable form.

User Experience

Intuitive dashboards for each user role with relevant information, streamlined booking flows, and comprehensive self-service capabilities - designed for productivity and ease of use.

Automation

Event-driven notifications, automated membership tracking, waiver validation, and period reset automation - reducing manual work and ensuring consistency.

Integration Ready

Slack, Pushover, Email, and Payment gateway integrations sit behind abstraction layers, so swapping a provider or adding another channel does not mean rewriting the code that calls it.

Maintainable Code

Clean architecture, service layers, and reusable components following DRY and SOLID principles - ensuring long-term maintainability and scalability.

Complex Business Logic

Pricing, membership hours, availability and waiver validation are each expressed as explicit, testable rules rather than conditions buried in a controller, so the business can change a rule without a rebuild.

Technical Stack

Technologies and tools used
Laravel 10 PHP 8.0+ MySQL Bootstrap 5 RESTful API Laravel Sanctum Laravel Cashier Laravel Mail Slack API Pushover API Calendar Integration

The Capability Behind This Project

If any of that sounded like your business, this is the service it falls under.

Have a process like this in your business?

If your staff are stitching together a calendar, a spreadsheet and a payment terminal to get one job done, that usually means one system could be doing it instead. Tell us what the job looks like.