# Scaffold map — Digital Boutiques

Product thesis: **help for Australian small digital businesses** — domains (.au portfolio, DNS, hosting), AI (bots, assistants, automation), tech (sites, apps, infrastructure), ecommerce, and professional / digital services (branding online, waitlists, landing pages, integrations). Boutique partner attention, not a bloated agency or marketplace.

Placeholder convention (emitted by `db_ai_todo()`):

```html
<!-- AI-TODO[area]: short instruction for next AI -->
<aside class="ai-todo" data-ai-todo="area">…</aside>
```

Also mark sample data with visible `EXAMPLE` badges. Grep: `AI-TODO[` in rendered HTML, or `db_ai_todo(` in PHP source.

## Routes

| Path | File | Purpose |
|------|------|---------|
| `/` | `index.php` | Marketing homepage (digital SMB) |
| `/boutiques` | `boutiques.php` | Directory of EXAMPLE client profiles |
| `/boutique?id=` | `boutique.php` | Client profile + service packages |
| `/makers` | `makers.php` | Client dashboard shell (“For business”) |
| `/shop` | `shop.php` | Packages browse |
| `/cart` | `cart.php` | Session cart + checkout placeholder |
| `/apply` | `apply.php` | Get help → apply.jsonl |
| `/about` | `about.php` | Mission / about |
| `/admin` | `admin.php` | Passcode-gated waitlist/apply viewer |
| `/waitlist.php` | `waitlist.php` | Waitlist + apply POST endpoint |

## Data layer (file CMS)

- `data/boutiques.json` (deployed to `/home/digitalboutiques/data/catalog/boutiques.json`)
- `_inc/catalog.php` — `db_load_boutiques`, `db_get_boutique`, `db_all_products`, filters
- `_inc/cart.php` — session cart helpers
- `/home/digitalboutiques/data/waitlist.jsonl` — shopper/business waitlist
- `/home/digitalboutiques/data/apply.jsonl` — apply / get-help queue
- `/home/digitalboutiques/data/boutique-messages.jsonl` — per-profile contact
- `/home/digitalboutiques/etc/admin.env` — `ADMIN_PASSCODE` (bcrypt hash)

## AI-TODO registry

Status: **done** = wired to file CMS / stub complete · **partial** = usable but not production · **open** = still scaffold

| Area | Status | Note |
|------|--------|------|
| `about-content` | open | Needs Brandan-approved copy |
| `admin-auth` | partial | Passcode + session; needs CSRF/SSO/audit |
| `admin-boutiques` | open | Moderation UI |
| `admin-waitlist` | partial | Lists last 50 masked; needs export/contacted |
| `apply-pipeline` | partial | apply.jsonl split done; mailer/CRM open |
| `boutique-about` | partial | From JSON story/shipping; CMS edit open |
| `boutique-contact` | partial | Form → boutique-messages.jsonl; route to client later |
| `boutique-detail` | partial | Loads by id from JSON; EXAMPLE data |
| `boutique-products` | partial | Packages from JSON + add-to-cart |
| `boutiques-directory` | partial | Catalog + filters; replace JSON with real CMS |
| `homepage-boutiques` | partial | Featured from catalog |
| `makers-auth` | open | No client login yet |
| `makers-orders` | open | Fake placeholder rows |
| `makers-products` | partial | Shows catalog packages; no CRUD |
| `makers-stats` | partial | Product count from catalog; fake orders |
| `shop-browse` | partial | Packages + filters from catalog |
| `shop-cart` | partial | Session cart + checkout placeholder; no payments |

## Shared layout

- `_inc/config.php` — constants, nav labels, `db_ai_todo()`
- `_inc/header.php` / `_inc/footer.php` — chrome, cart badge, mobile nav
- `_inc/catalog.php` / `_inc/cart.php` — file CMS + cart
- `assets/css/site.css` — visual system + `.ai-todo` badges
