diff --git a/.cursor/rules/preview-sites.mdc b/.cursor/rules/preview-sites.mdc index fabd096..c3bf877 100644 --- a/.cursor/rules/preview-sites.mdc +++ b/.cursor/rules/preview-sites.mdc @@ -18,5 +18,7 @@ When creating or expanding client previews in this repo, follow **[`RULE.md`](RU - Reuse patterns from existing proposals under `proposals/*/mockup/` (gallery, pricing, `ux-planned.html`, `ux-hub.css`). - Kebab-case: `proposals//`. Keep `templates/` client-free. - Every page footer must credit: Made by [AI ML Operations, LLC](https://aimloperations.com) (link the company name). +- Public marketing SEO on first shot: unique titles, meta descriptions, descriptive link text (no bare “Learn more”), OG/Twitter + LocalBusiness JSON-LD on homepage; target Lighthouse SEO 100. Details in `RULE.md` → SEO. +- Add each live preview to the Active previews table in `README.md` (business, phone, email, URL). Do not invent features or prices. If `features.md` and a mock disagree, update the mock to match the catalog. diff --git a/README.md b/README.md index 6f53344..26b1d49 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,14 @@ Each client proposal should include: - `mockup/ux-gallery.html` — monica-style card hub (one card per screen/feature) - `mockup/pricing.html` — interactive feature picker with dependency rules +## Active previews + +| Business | Phone | Email | Preview URL | +| --- | --- | --- | --- | +| Ed's Plumbing & Sewer | (630) 663-1444 | info@thegreatestplumber.com | https://ed-preview.aimloperations.com/ | +| Paint to Please | _TBD_ | _TBD_ | https://paint-to-please-preview.aimloperations.com/ | +| Select Electrical Services | (630) 202-8020 | select8020@gmail.com | https://select-electrical-preview.aimloperations.com/ | + ## Repository structure ```text diff --git a/RULE.md b/RULE.md index 7bd0e50..80e40b0 100644 --- a/RULE.md +++ b/RULE.md @@ -32,6 +32,7 @@ Do **not** invent new product features or prices. Read `features.md` and use tho Made by AI ML Operations, LLC ``` Link the company name only. Do not omit on new pages. +10. **SEO on first shot** — public marketing pages must pass Lighthouse SEO (target **100**). Follow the [SEO checklist](#seo-public-marketing) below; do not ship homepage without meta description and descriptive link text. --- @@ -72,12 +73,14 @@ proposals// 1. Create folders above. 2. Copy closest `templates//` into `mockup/` (omit template docs/junk). 3. Brand the **public** site (copy, colors, logo, services, contact). Prefer real approved data; mark placeholders clearly. -4. Add **ux-gallery.html** — monica-style hub: eyebrow per feature (`Public · base`, `Portal · base`, `Portal · Email/SMS`, …). Ready screens link to real HTML; unfinished → `ux-planned.html?p=`. -5. Add **pricing.html** — base rows locked on; add-ons toggleable; enforce deps; show one-time + monthly totals; disclaimer that usage (Stripe/SMS/postage) is extra. -6. Write **SCOPE.md** — recommend add-ons for *this* business; compute totals from `features.md` prices. -7. Write **NOTES.md** — client identity, sources, sitemap, preview reminder, next passes. -8. Banner on marketing pages → gallery + pricing links. -9. Smoke-test locally as static files. +4. Apply **SEO** on every public marketing page (see [SEO checklist](#seo-public-marketing)) — meta description, unique titles, descriptive links, OG/Twitter, LocalBusiness JSON-LD on the homepage. +5. Add **ux-gallery.html** — monica-style hub: eyebrow per feature (`Public · base`, `Portal · base`, `Portal · Email/SMS`, …). Ready screens link to real HTML; unfinished → `ux-planned.html?p=`. +6. Add **pricing.html** — base rows locked on; add-ons toggleable; enforce deps; show one-time + monthly totals; disclaimer that usage (Stripe/SMS/postage) is extra. +7. Write **SCOPE.md** — recommend add-ons for *this* business; compute totals from `features.md` prices. +8. Write **NOTES.md** — client identity, sources, sitemap, preview reminder, next passes. +9. Banner on marketing pages → gallery + pricing links. +10. Add the client row to the **Active previews** table in `README.md` (business, phone, email, preview URL). Use `_TBD_` for unknown phone/email. +11. Smoke-test locally as static files; run Lighthouse SEO on the homepage (target 100). ### Reuse @@ -85,6 +88,76 @@ Copy gallery/pricing/stub patterns from: - `proposals/eds-plumbing-and-sewer/mockup/` - `proposals/paint-to-please/mockup/` +- `proposals/select-electrical/mockup/` + +--- + +## SEO (public marketing) + +Ship Lighthouse SEO **100** on the public homepage on the first pass. Portal / gallery / pricing pages are secondary (still need titles + footer credit). + +### Required on every public HTML page + +| Item | Rule | +|------|------| +| `` | Always set `lang`. | +| Unique `` | Include business name + page topic + city/region when known. Do **not** reuse one generic title on every page. | +| Meta description | 1–2 sentences, ~120–160 chars, business + service + locale. Required on homepage; required on About, Contact, Services, and each service page. | +| Viewport | `width=device-width, initial-scale=1`. **Do not** use `user-scalable=0` or `maximum-scale=1` (hurts a11y; not needed for SEO). | +| Image `alt` | Meaningful alt on content images; decorative icons may use `alt=""`. | +| Crawlable links | Real `href` to real pages (or `#section`). Prefer no empty `#` CTAs for primary nav/services. | + +### Homepage extras (do these on `index.html`) + +```html +<meta name="robots" content="index, follow"> +<link rel="canonical" href="https://<client>-preview.aimloperations.com/"> +<meta property="og:type" content="website"> +<meta property="og:title" content="…same as title…"> +<meta property="og:description" content="…"> +<meta property="og:url" content="https://<client>-preview.aimloperations.com/"> +<meta property="og:locale" content="en_US"> +<meta name="twitter:card" content="summary"> +<meta name="twitter:title" content="…"> +<meta name="twitter:description" content="…"> +``` + +Add **JSON-LD** (`application/ld+json`) for the local business — use the closest schema.org type (`PlumbingService`, `Electrician`, `HousePainter`, `LocalBusiness`, etc.) with `name`, `url`, `telephone`, `email` (if known), `address`, `areaServed`, and a short `description`. Match phone/email to what’s shown on the page and to the README Active previews row. + +### Descriptive link text (Lighthouse `link-text`) + +**Never** use these as the only visible link text: + +- Learn more / Learn More / LEARN MORE +- Click here / Click this +- More / Here / This / Go / Start / Right here + +**Do** name the destination, e.g.: + +- `Water heater services` → `water-heaters.html` +- `Lighting installation details` → `lighting-installation.html` +- `View plumbing services` → `services.html` + +Service-card links must point to the **correct** service page (not one shared wrong URL for every card). + +### Quick Lighthouse check + +```bash +npx lighthouse@12 "https://<preview-host>/" --only-categories=seo --chrome-flags="--headless --no-sandbox" +# or local: +python3 -m http.server 8765 +npx lighthouse@12 "http://127.0.0.1:8765/proposals/<client>/mockup/" --only-categories=seo --chrome-flags="--headless --no-sandbox" +``` + +Fix any SEO audit with score < 1 before calling the mockup done. + +### Reference implementations + +Homepages that already follow this pattern: + +- `proposals/eds-plumbing-and-sewer/mockup/index.html` +- `proposals/paint-to-please/mockup/index.html` +- `proposals/select-electrical/mockup/index.html` --- @@ -134,5 +207,7 @@ Portal mocks can be denser/app-like; still match proposal hub styling (`ux-hub.c - [ ] `ux-gallery.html` covers base + every add-on screen (ready or planned) - [ ] `pricing.html` totals correct; deps work - [ ] Public marketing is client-branded and concept-bannered +- [ ] SEO: homepage Lighthouse SEO 100; unique titles + meta descriptions on public pages; no vague “Learn more” links; OG/Twitter + JSON-LD on homepage +- [ ] `README.md` Active previews table has business, phone, email, preview URL - [ ] Footer credit: Made by [AI ML Operations, LLC](https://aimloperations.com) - [ ] No secrets committed; relative paths; opens without a server framework diff --git a/proposals/eds-plumbing-and-sewer/mockup/about.html b/proposals/eds-plumbing-and-sewer/mockup/about.html index 2bb034d..871df5d 100755 --- a/proposals/eds-plumbing-and-sewer/mockup/about.html +++ b/proposals/eds-plumbing-and-sewer/mockup/about.html @@ -3,7 +3,9 @@ <head> <meta charset="utf-8"> -<title>Ed's Plumbing & Sewer | Chicagoland Plumbing & Home Repairs +About Ed's Plumbing & Sewer | Darien, IL + + @@ -17,7 +19,7 @@ - + diff --git a/proposals/eds-plumbing-and-sewer/mockup/commercial-industrial.html b/proposals/eds-plumbing-and-sewer/mockup/commercial-industrial.html index fb9af59..0c3d0ac 100755 --- a/proposals/eds-plumbing-and-sewer/mockup/commercial-industrial.html +++ b/proposals/eds-plumbing-and-sewer/mockup/commercial-industrial.html @@ -2,7 +2,9 @@ -Ed's Plumbing & Sewer | Chicagoland Plumbing & Home Repairs +Commercial & Industrial Plumbing | Ed's Plumbing · Darien, IL + + @@ -16,7 +18,7 @@ - + diff --git a/proposals/eds-plumbing-and-sewer/mockup/contact.html b/proposals/eds-plumbing-and-sewer/mockup/contact.html index 170e53d..7b8cddd 100755 --- a/proposals/eds-plumbing-and-sewer/mockup/contact.html +++ b/proposals/eds-plumbing-and-sewer/mockup/contact.html @@ -4,7 +4,9 @@ -Ed's Plumbing & Sewer | Chicagoland Plumbing & Home Repairs +Contact Ed's Plumbing & Sewer | Schedule Service · Darien, IL + + @@ -18,7 +20,7 @@ - + diff --git a/proposals/eds-plumbing-and-sewer/mockup/drain-sewer.html b/proposals/eds-plumbing-and-sewer/mockup/drain-sewer.html index 8edc22b..76a7883 100755 --- a/proposals/eds-plumbing-and-sewer/mockup/drain-sewer.html +++ b/proposals/eds-plumbing-and-sewer/mockup/drain-sewer.html @@ -2,7 +2,9 @@ -Ed's Plumbing & Sewer | Chicagoland Plumbing & Home Repairs +Drain & Sewer Cleaning | Ed's Plumbing · Darien, IL + + @@ -16,7 +18,7 @@ - + diff --git a/proposals/eds-plumbing-and-sewer/mockup/fixtures.html b/proposals/eds-plumbing-and-sewer/mockup/fixtures.html index 5ee9902..f79eb99 100755 --- a/proposals/eds-plumbing-and-sewer/mockup/fixtures.html +++ b/proposals/eds-plumbing-and-sewer/mockup/fixtures.html @@ -3,7 +3,9 @@ -Ed's Plumbing & Sewer | Chicagoland Plumbing & Home Repairs +Fixtures & Plumbing Repairs | Ed's Plumbing · Darien, IL + + @@ -17,7 +19,7 @@ - + diff --git a/proposals/eds-plumbing-and-sewer/mockup/gas-lines.html b/proposals/eds-plumbing-and-sewer/mockup/gas-lines.html index fa4516b..4825757 100755 --- a/proposals/eds-plumbing-and-sewer/mockup/gas-lines.html +++ b/proposals/eds-plumbing-and-sewer/mockup/gas-lines.html @@ -3,7 +3,9 @@ -Ed's Plumbing & Sewer | Chicagoland Plumbing & Home Repairs +Gas Line Services | Ed's Plumbing · Darien, IL + + @@ -17,7 +19,7 @@ - + diff --git a/proposals/eds-plumbing-and-sewer/mockup/home-repairs.html b/proposals/eds-plumbing-and-sewer/mockup/home-repairs.html index f0e96eb..4b9d360 100755 --- a/proposals/eds-plumbing-and-sewer/mockup/home-repairs.html +++ b/proposals/eds-plumbing-and-sewer/mockup/home-repairs.html @@ -3,7 +3,9 @@ -Ed's Plumbing & Sewer | Chicagoland Plumbing & Home Repairs +Home Repairs & Remodeling | Ed's Plumbing · Darien, IL + + @@ -17,7 +19,7 @@ - + diff --git a/proposals/eds-plumbing-and-sewer/mockup/index.html b/proposals/eds-plumbing-and-sewer/mockup/index.html index eb7e91b..427386b 100755 --- a/proposals/eds-plumbing-and-sewer/mockup/index.html +++ b/proposals/eds-plumbing-and-sewer/mockup/index.html @@ -3,6 +3,17 @@ Ed's Plumbing & Sewer | Plumbing, Sewer & Home Repairs · Darien, IL + + + + + + + + + + + @@ -16,9 +27,36 @@ - + +