(954) 884-8892

Cleaning Services

St. Johns Clean: Booking Portal and Admin Dashboard for a Cleaning Broker

Built a dual-app cleaning broker platform with a public booking portal and a private admin dashboard. Flat-rate pricing engine, service area pages, and full cleaner management from one codebase.

6 zones

Service Area Pages

Under 30s

Booking-to-Quote

12 modules

Admin Functions

4.9 stars

Satisfaction Rate

The Challenge

St. Johns Clean operates as a cleaning broker in St. Johns County, Florida — they connect homeowners with vetted, insured, and background-checked cleaning professionals. The business model requires two completely different user experiences: a public-facing booking site for customers, and an operations dashboard for managing cleaners, assignments, and scheduling. Most off-the-shelf solutions handle one or the other. They needed both.

The Booking Portal

The customer-facing site is built around one goal: get a quote in under 30 seconds. No account creation, no phone tag, no “we’ll get back to you” forms.

  • Flat-rate pricing engine calculated by bedroom and bathroom count — customers see exact prices immediately:
    • Maid Service: $130–$240
    • Deep Cleaning: $275–$350
    • Move-In/Out: $250–$400
    • Airbnb/VRBO Turnover: $125–$200
  • Service type selection with clear scope descriptions so customers know exactly what they’re booking
  • Recurring plan discounts — up to 25% savings for weekly or biweekly schedules
  • 100% satisfaction guarantee displayed prominently to reduce booking hesitation

The Admin Dashboard

The private operations dashboard is where the business actually runs. It’s a separate application with its own authentication, designed for the operations team:

  • Cleaner management — onboarding, availability tracking, background check status, skill ratings
  • Assignment engine — match cleaners to jobs based on location, availability, and service type
  • Schedule overview — calendar view of all upcoming jobs with drag-and-drop rescheduling
  • Customer history — booking records, preferences, notes, and satisfaction scores
  • Financial tracking — revenue per cleaner, payout calculations, recurring vs. one-time breakdowns
  • Service area management — define and adjust coverage zones without code changes

The Dual-App Architecture

Both applications share a single codebase and database but present completely different interfaces:

  • Public site: Astro SSR for fast, SEO-friendly pages that rank in local search
  • Admin dashboard: Protected routes with session-based auth, real-time data views, and CRUD operations
  • Shared database: MariaDB with clean separation between customer-facing data and operational data
  • Single deployment: One build, one server, two apps — no microservice complexity for a business that doesn’t need it

The Stack

  • Astro with TypeScript for both the public site and admin interface
  • Tailwind CSS for consistent styling across both apps
  • MariaDB for reliable relational data (bookings, cleaners, schedules, payments)
  • CloudPanel on Vultr for hosting with nginx reverse proxy

Service Area SEO

Each of the six service zones gets its own dedicated page with locally targeted content:

  • St. Johns County (hub page)
  • Ponte Vedra Beach
  • Nocatee
  • World Golf Village
  • Fruit Cove
  • Julington Creek

Every area page includes local landmarks, neighborhood references, and service-specific content — not just the city name swapped into a template. Schema markup with LocalBusiness and Service types on every page.

Results

The platform handles the full lifecycle: a customer in Nocatee finds the site through local search, gets an instant flat-rate quote, books online, and the admin dashboard automatically routes the job to an available cleaner in that zone. No phone calls, no manual scheduling, no spreadsheets. The 4.9-star rating across 187 reviews reflects a booking experience that actually works end to end.

Want Results Like These?

Free site audit. No contracts. Results in 60 days or less.

Start Your Project

Or call (954) 884-8892