Files
preview_sites/RULE.md
T

214 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Preview Sites — Agent Rule
How to create client preview websites in this repo. Follow this every time you scaffold or expand a proposal.
**Canonical feature + pricing catalog:** [`features.md`](features.md)
**Human overview:** [`README.md`](README.md)
---
## Goal
Ship a **portable static mockup** that sells the Django product: public marketing site + client portal (with UTM) + optional monetized add-ons. Prospects click through screens and pick features on a pricing page.
Do **not** invent new product features or prices. Read `features.md` and use those names, deps, and dollar amounts.
---
## Hard rules
1. **Static only** — HTML/CSS/JS; relative asset paths; no backend required to view.
2. **No secrets** — no API keys, passwords, real customer PII, or live credentials.
3. **Concept labeled** — fixed “UX Concept Preview” (or proposal) banner on public pages; link to `ux-gallery.html` + `pricing.html`.
4. **Kebab-case folders**`proposals/<client-name>/` (e.g. `eds-plumbing-and-sewer`).
5. **Templates stay generic** — no client names/branding in `templates/`.
6. **Monetization from catalog** — build + monthly fees and dependency rules come from `features.md` only.
7. **UTM is base** — every portal includes UTM; never sell it as a separate add-on.
8. **Deps** — Payments requires Email & SMS; AI social requires Social consolidation (auto-select / block on pricing page).
9. **Vendor credit in footer** — every preview page footer (marketing, portal, gallery, pricing) must include:
`Made by [AI ML Operations, LLC](https://aimloperations.com)`
HTML form:
```html
Made by <a href="https://aimloperations.com" rel="noopener noreferrer" target="_blank">AI ML Operations, LLC</a>
```
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.
---
## Product shape (from features.md)
```text
BASE (always on)
Public: Landing · About · Contact (+ 404 / under construction as needed)
Portal: Login · Dashboard · Leads · Lead detail · UTM analytics
ADD-ONS (build $ + monthly $)
Email & SMS · Direct mail · Blog · Payments (Stripe)
Social consolidation · AI social generator (Ollama)
```
Pricing amounts, screen file hints, and checklists: **open `features.md`** — do not hardcode stale numbers in this rule if they drift; copy from the catalog when writing `SCOPE.md` / `pricing.html`.
---
## New client checklist
```text
proposals/<client-name>/
├── mockup/
│ ├── index.html # marketing entry (or public-home.html)
│ ├── ux-gallery.html # REQUIRED — card per screen, grouped by feature
│ ├── pricing.html # REQUIRED — interactive picker + live totals
│ ├── ux-planned.html # stubs for screens not designed yet
│ ├── assets/css/ux-hub.css # gallery/pricing styles (copy from an existing proposal)
│ └── …public & portal pages
└── proposal/
├── NOTES.md # client facts, sources, contact data status
└── SCOPE.md # recommended features + quote math from features.md
```
### Steps
1. Create folders above.
2. Copy closest `templates/<name>/` into `mockup/` (omit template docs/junk).
3. Brand the **public** site (copy, colors, logo, services, contact). Prefer real approved data; mark placeholders clearly.
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=<key>`.
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
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 |
|------|------|
| `<html lang="en">` | Always set `lang`. |
| Unique `<title>` | Include business name + page topic + city/region when known. Do **not** reuse one generic title on every page. |
| Meta description | 12 sentences, ~120160 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 whats 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`
---
## UX gallery conventions
| Do | Don't |
|----|--------|
| One card per screen | Dump all content on one mega-page |
| Group by feature section | Mix portal + public without labels |
| Mark Ready vs Planned | Leave dead links |
| Keep marketing `index.html` working | Replace marketing home with only the hub without a link back |
Reference pattern: [monica_site proposal hub](https://git.aimloperations.com/ai_ml_operations/monica_site/src/branch/main/proposal/pages/index.html).
---
## Pricing page conventions
- Always show **Public site** + **Client portal + UTM** (checked, disabled).
- Checkboxes for each add-on with **build** and **/mo** from `features.md`.
- Selecting Payments → auto-check Email & SMS (+ short helper text).
- Selecting AI social → auto-check Social (+ helper text).
- Unchecking a required parent → uncheck dependent child.
- Sticky summary: one-time total · monthly total · feature count.
- Label as draft estimate, not a formal contract.
---
## Design (public marketing)
When building/tailoring the public site (not the portal chrome):
- Brand-first first viewport; one composition; full-bleed hero when its a landing.
- Expressive type — avoid Inter/Roboto/Arial/system as the only voice.
- Atmosphere via image/gradient/pattern — not flat single-color only.
- Prefer no cards in the hero; one job per section.
- Mobile + desktop must both work.
- If extending an existing template look, **preserve that templates visual language**.
Portal mocks can be denser/app-like; still match proposal hub styling (`ux-hub.css`).
---
## Done means
- [ ] `NOTES.md` + `SCOPE.md` exist and match `features.md` pricing
- [ ] `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