Rework landing page and design systems, added pricing section#15
Rework landing page and design systems, added pricing section#15carsonSgit wants to merge 17 commits into
Conversation
…g with StyleManifest; remove unused components
… and update StyleManifest with alternating features; include background images
…ions, enhance layout, and update contributor information
…oader, and improve SiteHeader styling
…tyling, and improve button appearance
…styles, and remove loading animations from Home component Co-authored-by: Copilot <copilot@github.com>
…n, update grid dimensions, and improve visual variants in PricingSection
…ion, improve layout, and refine button animations
…e animation for button background
…cture, add yearly/monthly toggle, and enhance layout
PR Review: Rework landing page and design systems, added pricing sectionOverviewThis PR does three distinct things:
The demo mode work in particular is well-architected and the mock data is thorough. A few issues worth addressing before merge: Bugs / Correctness
const { successRate: _s, ...rest } = mockStats.jobStats;
return NextResponse.json(rest);The production path presumably returns
Performance
Consider using Same note applies to Code Quality
export { BrowserComponent };
Unused font load in Minor
What's Working Well
SummaryThe demo mode system is solid and the landing redesign is cleaner. The main actionable items are: fix the |
Code Review — PR #15: Landing Page Rework + Demo ModeOverviewThis PR does two distinct things:
Overall the work is solid and well-scoped. The demo mode layer is the more complex half, and there are a few issues worth addressing. Demo Mode InfrastructurePotential bug —
export const isDemoMode = process.env.DEMO_MODE === "true";This is evaluated once at module load. On serverless/edge runtimes (Vercel), that is fine — each cold start reads the env var. But the same constant is also imported in client components (e.g. Recommendation: Prefix the variable with
Demo mode bypasses auth/input validation early Several API routes return demo responses before input validation (e.g. Landing Page / UI
Pricing buttons have no The pricing tier buttons (
Each pricing card runs a Inline <style>{`@keyframes braille-gradient-shift { … }`}</style>This injects a
<div className="w-[100px]" /> {/* Spacer */}The comment is outside the self-closing tag so it renders as a text node. Minor cosmetic issue. Code Quality
let event: any = null;The rest of the file has typed data. The
In
Hiding section labels entirely may affect accessibility (screen-reader users lose the group structure). Consider .gitignoreThe new entries are missing a newline at end of file (flagged by git). Minor, but will cause a linting warning. No test coverageNo tests are included for the new demo mode paths. Given that these branches are active on the public deployment, a few unit tests for the flag and mock data helpers would improve confidence — especially for the report store mutation logic and the chat store. Summary
The demo mode layer is the right approach for a public deployment — the main thing to nail down is the build-time vs runtime env var split for client components. |
…layout with PageContainer and PageHeader
Code Review — PR #15: Landing page rework, design system, pricing sectionGreat scope for a single PR — the changes are coherent and the direction is clearly an improvement. Notes below are ordered roughly by severity. OverviewThis PR does three things:
Bugs / Correctness1. Pricing CTA buttons are dead All four pricing tier buttons in pricing-section.tsx are bare button elements with no onClick and no href. Clicking "Get Started" or "Contact Sales" does nothing. Either wire them up or mark them disabled with a tooltip. 2. Missing background image assets FeaturesAlternating in style-manifest.tsx references /assets/bg1.webp through /assets/bg5.webp as Image fill backgrounds. These files do not appear to be added in this PR. If absent from public/assets/, feature blocks will render with broken images. Either add the assets or fall back gracefully. 3. Demo markdown conversion is lossy In demo mode, POST /api/reports wraps raw markdown as a single plain-text paragraph node rather than running it through marked + generateJSON. Markdown headings/lists/bold will appear as literal characters in the Tiptap editor. Performance4. MiniBrailleBg — 4 concurrent setInterval timers at 20 fps Each pricing card mounts a MiniBrailleBg that runs setInterval at 50ms unconditionally, computing a 25x45 grid every tick. With four cards on screen that is 4x20 fps of continuous setState calls whether or not the card is hovered. CSS opacity: 0 hides them visually but timers keep running. Suggested fix: gate the interval on a hover state or IntersectionObserver. 5. ButtonBrailleBg animates continuously Same issue — ButtonBrailleBg runs its timer even when the parent card is not hovered. Accessibility6. CtaLink disabled link is still keyboard-reachable When href is set and disabled is true, CtaLink renders a Link with aria-disabled and pointer-events-none. That blocks mouse clicks but the element remains focusable via Tab and activatable via Enter. Adding tabIndex={-1} when disabled would also block keyboard navigation. 7. SurfaceTitle renders as a div, not a heading SurfaceTitle outputs a div. PageHeader correctly uses h1 for the page-level title, so Surface sections would benefit from h2/h3 for screen-reader navigation. Minor8. .gitignore missing newline at EOF 9. Mobile nav links condensed to long single lines — Biome should fix this on format. 10. useChartAnimation module-level Set survives HMR — chart animations will not replay after a hot-module reload in development. Positives
SummaryThe two issues that should block merge are dead CTA buttons (#1) and potentially missing background assets (#2). The MiniBrailleBg timer problem (#4) is worth addressing before the page gets real traffic. Everything else is low-priority polish. Generated with Claude Code |
PR Review: Rework landing page and design systems, added pricing sectionNice cohesive design refresh. The new 🔴 Likely bugs1.
Fix: rename to 2. Demo Claude model mappings are out of date 3. 🟡 Code quality4. Broad 5. 6. 7. Duplicated headings 🟠 Performance8. 9. 10. 🔐 Security / correctness11. Stream key in URL query string 12. ♿ Accessibility13. Click-to-watch results in 14. ✅ Things I liked
🧪 Test coverageNo tests were added or modified; the repo doesn't appear to have a test suite, so this is consistent with existing practice. The env-flag plumbing (#1) would be a great candidate for the first unit test. Overall: design refresh is in good shape — the blocker is the |
No description provided.