Splash Jacks Pools
A full service-business platform built from a blank repo to a paying-customer launch in two weeks. Marketing site, SEO city landing pages, AI chatbot, customer portal with self-reschedule, operator admin app with route scheduler and photo proof, and Stripe billing wired end-to-end.
Marketing site
Custom-designed homepage, services & pricing, city-targeted landing pages (Naples, Bonita Springs, Estero, Fort Myers, Cape Coral), AI chatbot trained on services + chemistry, lead capture, mobile-first, PWA-installable, dynamic OG images per page.
Customer portal
Magic-link sign-in (no passwords), visit history with photos & chemistry readings, account info, invoices, ability to reschedule or pause service, request a quote, leave a note for the tech.
Admin app
Customer + lead + visit CRUD, route-aware day-of-week scheduler, photo proof with GPS + timestamp watermarking, quote system, PDF invoicing, daily admin digest, broadcast SMS, CSV exports, global search, 'needs attention' widgets, analytics dashboards.
The complete feature list. Every one of these is live.
Marketing surface
- Custom-designed homepage with hero, services, pricing, trust strip
- 5 SEO city landing pages with per-city OG images
- About, contact, FAQ, gallery, privacy, terms
- Free homeowner calculators (chlorine, salt cell, gallons, chemistry, cost, storm prep)
- AI chatbot grounded in services + pricing
- Lead capture form → ops dashboard + operator email
- PWA install, mobile-first, dynamic OG images per page
- Stealth-mode robots gate that flips at launch
Customer portal
- Supabase magic-link auth — no passwords, no support tickets
- Visit history with photos + chemistry readings + notes
- Live next-visit ETA when a tech is en route
- Self-reschedule, pause, request quote, leave note for tech
- Stripe-managed invoices and payment methods
- Email + SMS notifications via Resend + Twilio
- Mobile-first responsive — installable as PWA
- Account, billing, message inbox
Operator admin app
- Customer + lead + visit/job CRUD with global search
- Route-aware auto-scheduler keyed off day-of-week and zone
- Photo proof pipeline: EXIF GPS + timestamp watermarked on upload
- Chemistry input with normalization + flag thresholds
- Quotes → invoices → PDF receipt generation
- Daily admin digest email summarizing the day's ops
- Broadcast SMS to filtered customer segments
- CSV exports for accounting / handoff
- 'Needs attention' widgets surfacing overdue + unhealthy customers
- Analytics dashboards (revenue, customer churn, chemistry trends)
- Role-based auth with operator-only admin gate
Integrations & infra
- Stripe subscriptions + invoicing + webhook handlers
- Supabase Postgres with Prisma schema + migrations
- Resend transactional email with branded templates
- Twilio SMS for visit reminders + ops broadcasts
- sharp for photo processing, exifr for GPS extraction
- Anthropic SDK for the customer-facing AI chatbot
- Vercel hosting with preview deploys per branch
- Server actions with 50MB body limit for photo uploads
Same stack we use on every build. No experimenting per project.
- Framework
- Next.js 14 (App Router)
- Language
- TypeScript strict, noUncheckedIndexedAccess
- Database
- Postgres on Supabase + Prisma
- Auth
- Supabase magic link
- Billing
- Stripe (subscriptions + invoicing)
- Resend
- SMS
- Twilio
- Images
- sharp + exifr
- AI
- Anthropic SDK
- Hosting
- Vercel
- Styling
- Tailwind CSS
- Lines of code
- ~25k TS/TSX
Day by day, what shipped.
- Day 1Repo + scaffold + Vercel preview live, basic homepage
- Day 2–3Customer + visit + chemistry data model, Prisma schema, seed data
- Day 4–5Operator admin app: customer CRUD, visit logging, photo upload pipeline
- Day 6–7Auto-scheduler + route view + daily digest email
- Day 8Customer portal: magic-link auth, visit history, self-reschedule
- Day 9Stripe subscriptions + invoicing + webhook handlers
- Day 10AI chatbot, SEO city pages, OG image generation per city
- Day 11Twilio SMS, Resend transactional templates, broadcast tool
- Day 12Analytics dashboards, 'needs attention' widgets, CSV exports
- Day 13QA pass, polish, mobile audit, performance tuning
- Day 14Domain pointed, Stripe live mode flipped, first paying customer
Live, public, paying.
The site has been live since launch day. Real customers are paying through it. The operator runs the entire business — route, chemistry, photo proof, billing — from the admin app. No spreadsheets, no scribbled chemistry sheets, no manual invoicing.
Want one built like this for your business?
Three slots open this month for Southwest Florida service operators. 30-minute intro call, fixed price, signed order form same day if it’s a fit.