Rugved Chandekar

Engineering ideas into existence

AboutServicesExperienceProjectsBlogContact Buy Me a Coffee Start a Project
Back to Blog
Building a Booking System
Technical
March 13, 2026·8 min read·By Rugved Chandekar

Building a Booking System That Cut Manual Work by 90%

FlaskMySQLBackendAutomation

When I started working on the Raghavendra Swami Mutt project, they were managing bookings manually. Calls, WhatsApp messages, handwritten registers. 30+ hours of staff time per week. I built the system that eliminated most of it.

The Problem

Staff would receive calls, write down seva times, manage cancellations, and send confirmations via WhatsApp and email. It was chaotic, error-prone, and took 30+ hours per week. Double bookings happened. Confirmation delays frustrated devotees. There was no single view of the day's bookings.

The Architecture

I didn't over-engineer it. The principle was simple: one clear path from user request to confirmed booking, with automated notifications at every step.

Frontend → API Layer → Business Logic → Database
(HTML/CSS/JS)  (REST)    (Flask)      (MySQL)

Core System Features

  • Real-time availability — Open seva slots shown instantly. No phone call needed to check.
  • Automated confirmations — WhatsApp messages triggered automatically on booking confirmation. Zero manual sending.
  • Admin dashboard — Staff view all bookings, modify, cancel with one click. Full day/week/month view.
  • Cancellation handling — Slot automatically freed and made available when a booking is cancelled.
  • Duplicate prevention — Database-level constraints prevent double-booking at the schema level, not just in application code.

The Notification Trigger

The single most impactful automation: when a booking is confirmed, a background task fires via Flask's threading module to send a WhatsApp message using the Twilio API. This one automation eliminated 70% of manual staff work:

from twilio.rest import Client
import threading

def send_whatsapp_confirmation(booking):
    def _send():
        client = Client(TWILIO_SID, TWILIO_TOKEN)
        client.messages.create(
            from_='whatsapp:+14155238886',
            to=f'whatsapp:{booking.phone}',
            body=f"✅ Seva confirmed: {booking.seva_name} on {booking.date} at {booking.time}. See you at the Mutt!"
        )
    threading.Thread(target=_send).start()

The Results

  • Manual booking time: 30+ hours/week → ~3 hours/week (90% reduction)
  • Processing time per booking: 15 minutes → under 1 minute (95% reduction)
  • Double bookings: multiple per month → zero
  • User experience: devotees can book at midnight from their phones without anyone being awake to help

Key Learnings

1. Understand the workflow first. I spent a day watching how they managed bookings. That informed every design decision.

2. Automate the bottleneck, not everything. The bottleneck was manual confirmation sending. One automated trigger saved 90% of the work.

3. Choose the right tech, not the coolest tech. Flask, MySQL, and plain HTML/CSS/JS. No need for bleeding-edge frameworks when a straightforward stack delivers results.

Have a similar problem — repetitive manual work, booking chaos, or workflow inefficiency? I build systems like this.

Start Your Project
RC
Rugved Chandekar Full-Stack Developer • Flask & Python • Associate Developer Intern • IEEE Author