# Williams Pressure Washing Services — Progress

## Completed
- [x] Initial website build
- [x] Responsive multi-section design (hero, services, about, why-us, contact)
- [x] Professional blue/cyan gradient theme with water drop animations
- [x] Contact form with validation (PHP → SMTP relay)
- [x] Mobile nav toggle + floating CTA button
- [x] Phone number formatting + clickable tel: links
- [x] Git repo created and pushed to Gitea
- [x] **SEO fundamentals** — OG tags, Twitter cards, structured data (LocalBusiness), canonical URL, robots meta, favicon, description/keywords meta
- [x] **How It Works** section — 3-step visual process (Contact → Quote → Clean)
- [x] **Before & After Gallery** — 3 comparison cards (truck fleet, house, storefront) with hover reveal effect
- [x] **Testimonials** — 3 placeholder testimonial cards with star ratings
- [x] **Placeholder images** — Generated via ImageMagick (all real files, replace with real photos before going live)
- [x] **Service area** — Coshocton, OH & surrounding areas referenced throughout
- [x] **Privacy-respecting analytics** — Script placeholder commented in `<head>`, ready for Plausible/Umami
- [x] **Hosting deployment** — Site deployed to 10.10.9.230 (hostname: `dotnet`), nginx serving, PHP 8.2 FPM installed
- [x] **Nginx config** — `/etc/nginx/sites-available/WilliamsPressureWashingServices.com` active, security headers, static asset caching
- [x] **Site live on IP** — http://10.10.9.230 serving full site with all assets (200 OK)

## Pending

### 🚨 SEO (HIGH PRIORITY — must be done before going live)
- [x] **Real favicon** — created 💧 water droplet favicon matching site header icon (`favicon.png` 32x32 + `apple-touch-icon.png` 180x180)
- [ ] **Real OG banner image** — replace placeholder `img/og-banner.jpg` with a proper 1200×630 branded image
- [ ] **Google Search Console verification** — add meta tag or HTML file (domain purchased, DNS configured)
- [ ] **Google Business Profile** — set up (domain now live with SSL)
- [x] **Real photos in gallery** — replaced placeholder before/after slider with 'Our Work' section (5 real photos from Walter)
- [ ] **Alt text review** — ensure all real images have descriptive, keyword-rich alt text (Walter's input preferred)
- [ ] **Page load optimization** — compress real images, minify CSS/JS
- [ ] **Content review** — Walter to review all copy for accuracy before going live

### Contact Form / Email
- [x] **SMTP relay configuration** — PHPMailer connected to hMailserver on 10.10.9.31:25 (no auth, no TLS)
- [x] **Test form end-to-end** — verified working (POST returns `{"success":true}`)
- [x] **Email delivery** — confirmed emails arrive at waltwilliams87@gmail.com
- [x] **Form spam protection** — honeypot field (`website_url`) — bots fill it, returns success silently

### Hosting & Domain
- [x] **Purchase domain** — WilliamsPressureWashingServices.com
- [x] **DNS setup** — domain points to public IP, resolves correctly
- [x] **SSL certificate** — Let's Encrypt via Nginx Proxy Manager, valid through July 31 2026
- [ ] **PHP `mail()` config** — verify Postfix on 10.10.9.31 can relay for this server (10.10.9.230)

### Content & Branding
- [ ] **Walter's before/after photos** — replace placeholder images with real job photos
- [ ] **Real testimonials** — replace placeholder testimonials with Walter's actual customer quotes
- [ ] **Walter's logo** — if he has one, add to nav and footer
- [ ] **Service area specifics** — confirm which towns/counties to list
- [ ] **Hours of operation** — verify Mon–Sat 7AM–7PM accuracy
- [ ] **Gallery photos** — get 3+ more before/after pairs if Walter has them

### Analytics
- [ ] **Choose analytics provider** — see options below
- [ ] **Add tracking script** — uncomment and configure Plausible or Umami
- [ ] **Privacy policy page** — add if required by analytics terms of service

## Open Questions
- Does Walter have hosting, or are we providing it? ✅ WE ARE PROVIDING (10.10.9.230)
- Domain purchased? ✅ WilliamsPressureWashingServices.com
- DNS configured? ✅ Points to public IP, SSL active
- SSL? ✅ Let's Encrypt via NPM, valid until July 31
- Contact form spam protection? ✅ Honeypot field active
- Email delivery? ✅ Confirmed at waltwilliams87@gmail.com
- Favicon? ✅ 💧 water droplet icon created and deployed
- Specific images/branding from Walter? ⏳ Still collecting
- Service area confirmed? ✅ Coshocton & surrounding areas
- Hours of operation? ✅ Mon–Sat 7AM–7PM (placeholder, confirm with Walter)

## Hosting Details
- **Target server:** 10.10.9.230 (hostname: `dotnet`)
- **SSH:** `sage@10.10.9.230` using `~/.ssh/id_ed25519` ✅ **AUTHORIZED**
- **OS:** Debian 12, bare metal, nginx 1.22.1, PHP 8.2 FPM, Postfix
- **Site files:** `/var/www/williamspw/`
- **Nginx config:** `/etc/nginx/sites-available/WilliamsPressureWashingServices.com`
- **Currently serving:** AssetTrackr.co (proxy to :5000), loperboys.com, WilliamsPressureWashingServices.com
- **Access:** `http://10.10.9.230` (serving correctly, all assets 200 OK)
- **Disk:** 50GB total, ~655MB used — plenty of space
- **Existing services:** AssetTrackr.co, loperboys.com (both nginx static/proxy)

## Analytics Options (Privacy-Respecting)

### Plausible (recommended)
- https://plausible.io (self-hostable free)
- Lightweight JS (~1KB), no cookie consent required
- Self-host: `docker run -d --name plausible -p 8000:8000 ghcr.io/plausible/community-edition`
- Data stays on John's server — fully private

### Umami
- https://umami.is (self-hostable free, open source)
- Clean dashboard, privacy-focused, no cookies
- Self-host: `docker run -d -p 3000:3000 ghcr.io/umami-software/umami:postgresql-latest`
- Slightly more features than Plausible (user accounts, team sharing)

### Fathom (paid, but simple)
- https://usefathom.com — $14/mo, no self-host option
- Very clean, minimal JS, GDPR compliant
- Good if John wants to avoid managing another server

**Recommendation:** Plausible self-hosted — same philosophy as everything else (self-hosted, private, no tracking cookies). Can run on 10.10.9.230 alongside the site.
