Full-Stack Web

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.

  1. 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.
  2. 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.
  3. 3Implemented Stripe payment processing — PaymentIntent creation, secure checkout with Stripe Elements, subscriber billing with customer creation and payment method storage.
  4. 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.
  5. 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.
  6. 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.
  7. 7Built a custom analytics dashboard tracking visits, form interactions, and conversions with time-period filtering (today, this week, this month, this year, custom range).
  8. 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

Laravel 9

PHP 8.0+ — Blade templating, Eloquent ORM with 15+ tables, middleware pipeline, email notifications, Sanctum auth

Vue 3

Interactive components via Vite — payment forms, dynamic UI, integrated alongside server-rendered Blade templates

MySQL

15+ tables including blogs, invoices, service_locations, emails, coupons, analysis, gallery, schemas, FAQs, redirects, stripe_payments

Stripe

PaymentIntent creation, customer creation, payment method storage, subscription billing via Stripe PHP SDK v10

DomPDF

Server-side PDF generation for branded invoices with line items, surcharge calculations, and automatic email attachment

Bootstrap 5

Responsive frontend with custom SCSS theming, Font Awesome icons, PurgeCSS for minimal bundles

Vite

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.

Deep dives and comparisons related to the technologies used in this project.

Explore similar case studies with overlapping technologies and challenges.