Commit Graph
2 Commits
Author SHA1 Message Date
westfarnandCursor f9d39f6589 Give public pages crawler-ready HTML and production analytics.
Unit Tests / test (pull_request) Successful in 37s
Crawlers were reading one shared shell, so titles, descriptions, links, and markup were missing or the same on every URL. HeyCatch and Google Analytics load only on the production site and the iOS and Android apps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-19 09:56:49 -05:00
westfarn fa91c4969f Public homepage, pricing, privacy, changelog, and SEO (#117)
Deploy Beta / unit-tests (push) Successful in 13s
Unit Tests / test (push) Successful in 12s
Deploy Beta / deploy-beta (push) Successful in 5m0s
## Summary
- Logged-out `/` is a public landing page. Signed-in `/` still opens chat.
- Adds `/pricing/`, `/privacy/`, and `/changelog/`, plus header and footer links.
- Primary path is **Create account** when registration is on, and an email **waitlist** when it is off.
- Titles, canonicals, Organization and Product JSON-LD, `sitemap.xml`, `robots.txt`, and `llms.txt`.
- Usage counts render only from `GET /api/public/usage/`. No avatars. No founder block. No testimonials.
- Closes #113, #114, #115, and #116.

Needs [chat_backend#75](https://git.aimloperations.com/ai_ml_operations/chat_backend/pulls) for the waitlist and usage API, and the server-infra crawler-file change so those root files are not the SPA shell.

The account and document numbers in the screenshots come from a local mock of the usage API, not production.

## Screenshots

### Landing, registration off
![Landing waitlist desktop](https://git.aimloperations.com/ai_ml_operations/chat_web_app/raw/branch/feat/113-public-site/llm-fe/docs/ux/landing-desktop.png)

### Landing, mobile
![Landing mobile](https://git.aimloperations.com/ai_ml_operations/chat_web_app/raw/branch/feat/113-public-site/llm-fe/docs/ux/landing-mobile.png)

### Landing, registration on
![Landing create account](https://git.aimloperations.com/ai_ml_operations/chat_web_app/raw/branch/feat/113-public-site/llm-fe/docs/ux/landing-signup.png)

### Pricing
![Pricing](https://git.aimloperations.com/ai_ml_operations/chat_web_app/raw/branch/feat/113-public-site/llm-fe/docs/ux/pricing.png)

### Privacy
![Privacy](https://git.aimloperations.com/ai_ml_operations/chat_web_app/raw/branch/feat/113-public-site/llm-fe/docs/ux/privacy.png)

### Changelog
![Changelog](https://git.aimloperations.com/ai_ml_operations/chat_web_app/raw/branch/feat/113-public-site/llm-fe/docs/ux/changelog.png)

### Sign in unchanged
![Sign in](https://git.aimloperations.com/ai_ml_operations/chat_web_app/raw/branch/feat/113-public-site/llm-fe/docs/ux/signin.png)

## Test plan
- [x] `react-scripts test` — 234 passed
- [ ] Incognito `/` shows the landing page, not Sign In
- [ ] Signed-in `/` still opens chat
- [ ] `/account/` still redirects to `/signin/` when logged out
- [ ] Waitlist POST and usage GET against the new API
- [ ] `/robots.txt`, `/sitemap.xml`, and `/llms.txt` return plain text, not HTML

Reviewed-on: #117
2026-10-17 08:15:02 -07:00