# The Ayesha project — the complete worked example

Every file produced by Part 6 of **Made, Not Generated: A Website Design Crash Course**.

Nothing here is a mock-up. The site renders. The screenshots are of this site.
The checker was run against these files, and the defect log lists what it found.

## Try it in three minutes

```bash
npm run check      # the checker: passes
open site/index.html   # or: npm run serve
```

Now break something on purpose and watch the checker earn its place:

```bash
# delete one alt="..." in site/index.html, then:
npm run check      # MISSING DESCRIPTION  site/index.html   → exits with an error
```

That failure message is what your AI reads and fixes, with nobody in the middle.
**The rules file asks; the script decides.**

## What is in here

```
site/index.html          the finished website: six beats, one scroll
site/404.html            a designed "page not found", because it is a page too
site/og.png              the 1200x630 card that appears when the link is shared
site/sitemap.xml         so search engines can find every page
site/robots.txt
assets/                  the pictures, named by story beat, each under 500KB

docs/story-spine.md      the six beats, agreed with the client before building
docs/design.md           her brand rules, and the direction from two studied sites
docs/audit-findings.md   Hallmark audit: seven findings, then zero
docs/independent-review.md   a different company's AI reviewing the build
docs/defect-log.md       every defect, and what caught it   ← read this one
docs/cost-record.md      what the project actually cost
docs/screenshot-*.png    full-page screenshots at 1440px and 390px

CLAUDE.md                the rules file
check-site.mjs           the checker — six rules, cross-platform
shoot.mjs                the screenshot script
vercel.json              publishing settings (clean URLs)
```

## The checker's six rules

1. Every picture has a text description
2. No file over 500KB
3. Every page carries the same menu
4. The home page has a real title, a description, and sharing tags
5. The last beat contains a working contact link, not a dead button
6. The sharing card exists

Run `npm run check` before you publish. Add a rule every time you find a new
way to get it wrong.

## Publishing

```bash
npx vercel          # a preview link to send the client
npx vercel --prod   # the real address, after they approve
node shoot.mjs https://your-preview-url   # check the LIVE page, not your laptop
```

## Honest notes

The two photographs are placeholder illustrations, not real photographs of a real
accountant. In a real project, beats 1, 2, and 4 come from a free photo library
and beat 5 is taken on a phone in the client's actual office.

The WhatsApp number is fictional. Everything else — the story, the structure, the
brand rules, the checks, the defects — is exactly what the course describes.
