A custom booking platform built to manage religious service (puja) bookings with real-time slot availability, dynamic scheduling, and structured admin controls. The system pairs a fully custom WordPress plugin for backend management with a reactive Vue.js frontend — replacing a manual, error-prone booking process with a scalable, mobile-friendly experience.
The problem
Traditional booking methods — manual coordination or basic contact forms — created recurring operational issues:
- No real-time slot availability meant double-bookings and scheduling conflicts
- Poor mobile experience discouraged users from completing bookings
- No structured tracking of bookings, priests, or history made admin management slow and error-prone
The goal was a system that handled availability, conflict prevention, pricing, and admin oversight — all without custom development overhead every time a new puja type or schedule was added.
Architecture
Backend — custom WordPress plugin
Rather than forcing bookings into WordPress’s native post types and post meta (which degrades at scale), a fully custom plugin was developed from scratch with dedicated database tables optimised for booking operations.
The plugin manages:
- Puja types via a taxonomy-driven structure — new service types can be added through the admin without code changes
- Booking slots and schedules with conflict detection at the server level
- Priest allocation linked to specific slots and puja types
- User bookings and history stored in custom MySQL tables with proper indexing for query performance
Custom REST API endpoints expose all booking data to the frontend with nonce/token validation on every request.
Frontend — Vue.js (Composition API)
A decoupled Vue.js frontend consumes the WordPress REST API. The Composition API was chosen specifically for its ability to extract and reuse logic across the booking flow — slot selection, availability checks, and validation are each encapsulated as composables rather than scattered across components.
Key interface elements:
- Step-by-step booking flow with instant confirmation feedback
- Dynamic date and time slot picker with real-time availability state
- Puja selection and customisation with dynamic pricing updates
- Live booking summary that updates as the user progresses
Real-time availability
The most technically sensitive part of the system is preventing double-bookings when multiple users attempt to reserve the same slot concurrently. This was solved with server-side validation as the source of truth, combined with frontend polling to keep slot availability state fresh without requiring a page reload. Race conditions are caught and rejected at the API level before any booking is confirmed.
Performance
- Custom MySQL tables with indexing on booking date, slot, and puja type — queries stay fast as data volume grows
- Selective field responses from the API reduce payload size on every request
- Server-side caching for repeated queries (slot availability, puja listings)
- Lazy loading for Vue components — only the active booking step loads in the initial render
Admin capabilities
The WordPress admin panel provides full operational control without developer involvement:
- Create and manage puja types and pricing
- Control slot availability per date and service type
- View, search, and manage all bookings
- Export booking reports
Challenges
Real-time slot conflicts — server-side validation enforces booking integrity, with frontend polling keeping the UI in sync. The server is always the authority; the frontend reflects its state.
WordPress scalability — native post meta would have become a performance bottleneck at booking volume. Custom tables with purpose-built schema and indexing solve this cleanly.
Complex frontend state — the multi-step booking flow manages availability data, user selections, pricing, and validation simultaneously. Vue’s Composition API made this manageable by keeping each concern in its own composable rather than a single sprawling component.
Stack
WordPress Custom Plugin REST API MySQL Vue.js Composition API AJAX
Planned enhancements
- Payment gateway integration
- SMS and WhatsApp booking notifications
- Multi-language support
