PristineGreen Cleaning — Business Website & Management Platform
Full-stack Laravel platform with 40+ service pages, blog CMS, Stripe payments, PDF invoicing, ad landing pages with A/B variants, and a custom analytics dashboard.
Timeline: May 2023 – December 2024 (~19 months, 873 commits)
Key Results
40+
Service Pages
Individual SEO-optimized pages covering carpet, upholstery, rugs, hardwood, mattress, and 30+ more specialties
15+
Landing Variants
A/B test variants across carpet, couch, and mattress cleaning ad campaigns
873 commits
Development
19 months of active development across 18+ branches
Automated
Invoice System
PDF generation + email delivery with payment method surcharge calculation
The Problem
PristineGreen Cleaning, a NYC-based professional cleaning company serving New York and New Jersey, needed a comprehensive web platform to establish their online presence, manage customer inquiries, process payments, and support digital advertising campaigns across 40+ cleaning service verticals.
- The business offered 40+ specialized cleaning services but had no centralized platform to showcase each service with dedicated, SEO-optimized pages.
- Customer inquiries via phone, contact forms, and ad campaigns needed a unified system for intake, email notification, and tracking — leads were being lost or handled inconsistently.
- Invoicing was manual — no system existed to generate branded PDF invoices, apply payment method surcharges, and email them directly to clients.
- Paid ad campaigns (Google Ads, TikTok) lacked dedicated landing pages with A/B testing variants, making it difficult to optimize conversion rates across different service verticals.
The Solution
Built a monolithic Laravel 9 application with a Blade + Vue.js frontend serving as both the public-facing website and an authenticated admin dashboard. Supports dynamic content management, Stripe payment processing, automated PDF invoicing, and a multi-variant landing page system for paid advertising.
- 1Built 40+ individual service pages (carpet, upholstery, oriental rugs, hardwood, mattress, auto interior, etc.) each with dynamically loaded FAQ sections from JSON schema files for structured data/SEO.
- 2Developed a full blog CMS in the admin dashboard — CRUD for posts with image uploads (thumbnail generation via Intervention Image), inline images with alt/title editing, FAQ management per post, and SEO metadata.
- 3Implemented Stripe payment processing — PaymentIntent creation, secure checkout with Stripe Elements, subscriber billing with customer creation and payment method storage.
- 4Built an automated invoicing system — multiple line items, package tiers (Gold, Premium, Premium+), automatic payment method surcharge calculation (3.5% credit card, 2.9% Venmo), PDF generation via DomPDF, and email delivery.
- 5Created a multi-location service area system — dynamic pages for NY/NJ service areas with Google Maps embed, GPS coordinates, and 301 redirect management for SEO.
- 6Developed paid advertising landing pages with A/B testing variants (v1, v2, v3, deal1) for carpet, couch, and mattress cleaning — each variant has its own form submission and conversion tracking.
- 7Built a custom analytics dashboard tracking visits, form interactions, and conversions with time-period filtering (today, this week, this month, this year, custom range).
- 8Implemented SEO infrastructure — Spatie sitemap generation, case-insensitive slug redirects via custom middleware, 301 redirect management, structured FAQ schema, and service worker for offline caching.
Architecture Decisions
Key technical decisions made during the project and the reasoning behind them.
Laravel 9 Monolith over Headless/SPA Architecture
Reasoning
The site is primarily content-driven (service pages, blog, landing pages) with SEO as a critical requirement. Server-side rendering with Blade ensures search engines index all content without JavaScript rendering issues. Vue.js is used selectively for interactive components (payment forms, dynamic UI).
Outcome
Full SEO indexability across 40+ service pages and blog posts; fast initial page loads with server-rendered HTML; simpler deployment compared to a decoupled frontend/backend.
JSON-File FAQ System over Database-Only FAQs
Reasoning
Service page FAQs serve dual purpose — displayed on the frontend AND used as structured data (JSON-LD schema) for Google rich results. Storing them as JSON files in /public/ allows direct inclusion as schema markup while also being parsed for display, avoiding data duplication.
Outcome
Each of the 40+ service pages renders FAQ schema markup for search engines; FAQ data is versioned with the codebase rather than requiring database seeds.
Multi-Variant Landing Pages for A/B Testing
Reasoning
Paid ad campaigns (Google Ads, TikTok) require testing different page designs, copy, and offers to optimize cost-per-lead. Building separate Blade templates for each variant with independent form submission routes enables clean A/B testing at the URL level.
Outcome
15+ landing page variants with dedicated tracking per variant; ability to pause/enable specific variants without affecting others; clean conversion attribution per ad campaign.
The Tech Stack
PHP 8.0+ — Blade templating, Eloquent ORM with 15+ tables, middleware pipeline, email notifications, Sanctum auth
Interactive components via Vite — payment forms, dynamic UI, integrated alongside server-rendered Blade templates
15+ tables including blogs, invoices, service_locations, emails, coupons, analysis, gallery, schemas, FAQs, redirects, stripe_payments
PaymentIntent creation, customer creation, payment method storage, subscription billing via Stripe PHP SDK v10
Server-side PDF generation for branded invoices with line items, surcharge calculations, and automatic email attachment
Responsive frontend with custom SCSS theming, Font Awesome icons, PurgeCSS for minimal bundles
Asset bundling — SCSS compilation, JS bundling, Vue SFC compilation, PurgeCSS integration
The Impact
A comprehensive business platform built over 19 months (873 commits) — powering 40+ service pages, automated invoicing, Stripe payments, and multi-variant ad landing pages for a NYC cleaning company.
Related Reading
Deep dives and comparisons related to the technologies used in this project.
Scaling Laravel APIs: From 500 to 10,000 Concurrent Users
Practical techniques for scaling Laravel beyond its reputation — queue-based processing, Redis caching strategies, and database optimization patterns from the Avidnote project.
Laravel vs. Django for Backend APIs — A Developer's Honest Comparison
Senior backend developer compares Laravel (PHP) and Django (Python) for APIs. Real benchmarks, development speed, hosting costs, and when to use each framework.
Hiring a Developer on Upwork vs. Direct Freelance: Which Is Better?
Compare hiring a developer on Upwork vs. hiring directly. We break down cost, risk, communication, and quality so you can choose the best path for your project.
Related Projects
Explore similar case studies with overlapping technologies and challenges.