Skip to content

Add marketing landing page; move chat app to /chat - #42

Merged
duckyquang merged 1 commit into
mainfrom
feat/landing-page
Jul 16, 2026
Merged

Add marketing landing page; move chat app to /chat#42
duckyquang merged 1 commit into
mainfrom
feat/landing-page

Conversation

@duckyquang

Copy link
Copy Markdown
Owner

Summary

Builds a focused, single-scroll marketing landing page at / and moves the chat app to /chat, matching the launch plan.

  • / → new Landing page, rendered chrome-less (no app sidebar / mobile bar).
  • /chat → the existing chat composer (with app chrome).
  • All other routes unchanged (/s/:id, /s/:id/site, /sessions).

Landing page (frontend/src/pages/Landing.tsx)

GEML "graph-paper academic" aesthetic, light + dark, useReveal scroll-reveal (reduced-motion safe), responsive with no horizontal scroll on mobile. Sections: masthead · hero · how-it-works timeline (Generate → Elo tournament → Evolve → Stress-test → Ranked proposal) · six feature cards · honest framing · closing CTA · footer. Accurate copy only — six specialized agents, live Elo tournament, real citations (OpenAlex/PubMed/arXiv/Europe PMC), self-critique, shareable proposal, free in-browser sim / bring-your-own Groq key, Apache-2.0, by Quang Bui.

Routing & link re-points

  • App.tsx: branch chrome-less on pathname === "/"<Landing/>; add /chat<Chat/>; /new and * → redirect to /chat. Logo/wordmark → / (landing); "New session" / "+ New" → /chat.
  • Dashboard.tsx: "Launch a session", "+ New session", example prompts → /chat (?goal= preserved).
  • CommandPalette.tsx: "Start new research session" → /chat; "Go to dashboard" → /sessions (was incorrectly /).
  • Chat.tsx: "Session not found → New session" → /chat; added aria-label (Pause/Resume/Abort) to icon-only thread controls.

Deep-link refresh already survives via the build:pages 404.html fallback — no deploy/vite change needed.

Testing

  • npm run build (tsc + vite) passes.
  • E2E in dev:demo + browser: landing renders chrome-less in dark, light, and mobile (no horizontal overflow); "Launch the demo" → /chat; /chat?goal= prefills; sending creates a session → /s/:id and runs live; hard-refresh of /chat and /s/:id boot via SPA fallback; Dashboard + command-palette links resolve to /chat.

🤖 Generated with Claude Code

Build a focused single-scroll marketing landing at `/` (hero + how-it-works
timeline + feature cards + honest framing + closing CTA), and move the chat
composer to `/chat`. The landing renders chrome-less (no app sidebar/mobile
bar); all other routes keep the existing app chrome.

- New `pages/Landing.tsx`: GEML aesthetic, light+dark, useReveal scroll-reveal,
  reduced-motion safe, responsive (no horizontal scroll on mobile). Accurate
  copy only (six agents, Elo tournament, OpenAlex/PubMed/arXiv/Europe PMC
  citations, in-browser sim / BYO Groq key, Apache-2.0, by Quang Bui).
- App.tsx: branch chrome-less on `pathname === "/"` → <Landing/>; add
  `/chat` → <Chat/>; `/new` and `*` → redirect to `/chat`. Re-point nav:
  logo/wordmark → `/` (landing), "New session"/"+ New" → `/chat`.
- Dashboard.tsx: "Launch a session", "+ New session", example prompts → `/chat`.
- CommandPalette.tsx: "Start new research session" → `/chat`;
  "Go to dashboard" → `/sessions` (was incorrectly `/`).
- Chat.tsx: "Session not found → New session" → `/chat`; add aria-labels
  (Pause/Resume/Abort) to the icon-only thread control buttons.

Deep-link refresh already survives via build:pages 404.html fallback.

Co-Authored-By: Claude Fable 5 <[email protected]>
@duckyquang
duckyquang merged commit 832724a into main Jul 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant