feat: add /pro landing + fix OG image pre-warm URL#109
Open
techgangboss wants to merge 13 commits intomainfrom
Open
feat: add /pro landing + fix OG image pre-warm URL#109techgangboss wants to merge 13 commits intomainfrom
techgangboss wants to merge 13 commits intomainfrom
Conversation
The pre-warm fetch in SwapToast was hitting /og/preconfirm/:time which doesn't exist, so the OG image was never cached before X's crawler requested it. Fixed to hit /s/:time/opengraph-image (the actual route). Removed share/preconfirm/route.ts which referenced a nonexistent /og-preconfirm.png static file — dead code from before the migration to Next.js opengraph-image convention. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Port fast-trade-proof landing (sb-industries/fast-trade-proof) into fastprotocolapp as /pro — a focused marketing page showing execution quality, block-position advantage, and mev returned vs Uniswap/aggregators. Changes: - New route: src/app/pro with its own layout loading Sora via next/font - 8 landing components under src/components/pro (Hero, LiveMetrics, Comparison, BlockPosition, WhyItWorks, Earnings, Speed, FinalCTA) - Assets: public/pro/logo-secondary.png, block-position-diagram.png - tailwind.config: add font-sora family + pulse-glow, value-flash animations used by the landing Audit adjustments vs upstream: - Vite SPA → Next.js App Router (remove react-router, use next/link) - text-positive → text-success (matches fastprotocolapp color tokens) - MEV → mev per brand style guide (hero, tooltip, metric labels, OG) - CTAs linked to / (main swap) via next/link - next/image for logo + block-position diagram - Removed fake Etherscan tx links (0x1a2b… placeholder hashes) Note for review: the Comparison table uses illustrative hardcoded trade data. Recommend replacing with indexer-backed live comparisons, or softening "Verified against live swaps" copy before public launch. Piggybacking on the OG pre-warm PR so both can be reviewed together. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Hero: correct logo intrinsic dimensions (922x500) to prevent CLS
- Hero/FinalCTA: wrap → arrows in aria-hidden spans
- Comparison: key={trade.label} instead of index for stable identity
- Comparison: wrap clipboard.writeText in try/catch
- Comparison: td flex → inner div wrapper (valid HTML)
- Comparison: add aria-label + type=button on share/copy buttons
- Comparison/BlockPosition: disconnect IntersectionObserver on first
trigger instead of keeping it alive; drop animated from deps
- Speed: motion-safe: prefix on pulse-glow for reduced-motion users
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero headline: "You keep the mev" → "Earn mev rewards" — more accurate,
defensible, and still confident. Reviewed by proCMO + primevCEO agents;
both agreed the original overclaims.
SEO changes:
- Title: keyword-targeted "Best Execution Ethereum Swaps — Preconfirmed
in Under 500ms | Fast Protocol"
- Meta description: comparison-focused with target keywords
- OG/Twitter: updated to match, removed overclaim copy
- Added /pro to sitemap.ts with priority 0.9
- Added WebPage structured data (schema.org JSON-LD)
- H2s updated with keyword-rich variants:
- "See the difference" → "Execution quality: Fast Protocol vs Uniswap"
- "Why execution position matters" → "Why block position determines
swap price"
- "Your swaps recover lost value" → "mev rewards calculator"
- "Milliseconds vs seconds" → "Sub-second confirmation vs standard DEX"
- LiveMetrics: removed fake "Updated ~X min ago" timer and client-side
state; now a server component labeled "Based on recent performance"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- New ProHeader: sticky header matching main site's gate view — Fast Protocol logo upper-left, "Launch App" button upper-right - Uses same logo assets as main site (/assets/fast-icon.png mobile, /assets/fast-protocol-logo-icon.png desktop) - Hero: removed large center logo (now in header), reduced vertical padding so headline + CTAs fit above the fold - Hero is now a server component (no more "use client" / Image import) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The favicon (src/app/icon.png) was 922x500 — the full logo with text, which browsers squish into a square. Replaced with the 400x400 fast-icon.png (bolt icon only) for a clean square favicon. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ord, or email) Was: wallet + X + Discord + email all required (too much friction) Now: wallet required + at least one of X/Discord/email Lower barrier to entry for outreach conversions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Was: "Just minted my Fast Genesis SBT" / "switch to Fast RPC" Now: "Sub-second swaps on L1" / "mev → Miles" / "early access filling up" Every share becomes a swap-driving CTA linking to fastprotocol.io Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Contributor
Author
|
New commits added: Simplified signup — early access form now requires wallet + just one contact method (email OR X OR Discord). Was: all 4 required. Lower friction for outreach conversions. Referral tweet rewrite — share copy now drives swaps instead of SBT minting:
Previously was: "Just minted my Fast Genesis SBT. Switch your send path to Fast RPC." |
- Remove .claude/homunculus observation logs (debug artifacts) - Remove unused logo-secondary.png from public/pro - Remove tsconfig.tsbuildinfo and add to .gitignore - Soften copy from "live/verified" to "based on real data" language
- Comparison: replace horizontal carousel with stacked card layout on mobile — each metric row shows Fast value prominently with inline baseline comparison, full 4-column table on sm+ - Hero: full-width CTA buttons on mobile, responsive gradient blob - ProHeader: smaller icon and tighter padding on narrow screens - LiveMetrics: even 3-column grid on mobile instead of flex-wrap - Speed: reduced cell padding on mobile for breathing room - WhyItWorks: 3-col grid deferred to md (was sm, too cramped at 480px) - FinalCTA: remove hard <br>, full-width button on mobile - BlockPosition: tighter vertical spacing on mobile - Lint formatting on early-access route and form
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two changes bundled for review together.
1. New /pro landing page
Port of sb-industries/fast-trade-proof (written separately from the main app in Vite + Lovable) into fastprotocolapp as a Next.js route at
fastprotocol.io/pro. Focused marketing page showing execution quality, block-position advantage, and mev returned vs Uniswap/aggregators.New files
src/app/pro/{layout,page}.tsx— dedicated route with Sora loaded vianext/font/googlesrc/components/pro/*— 8 landing sections (Hero, LiveMetrics, Comparison, BlockPosition, WhyItWorks, Earnings, Speed, FinalCTA)public/pro/{logo-secondary,block-position-diagram}.pngtailwind.config.ts— addedfont-sora,animate-pulse-glow,animate-value-flashAudit adjustments vs upstream
react-router-dom,next/linkfor CTAs routing to/)text-positive→text-success(matches fastprotocolapp color tokens)MEV→mevper brand style guide across hero, tooltip, metric labels, OG<img>→next/imagefor logo + block-position diagram0x1a2b…hashes that would 404)/proOG + canonical metadataComparison.tsxuses hardcoded sample trade data ($10,041.87,+0.42%, etc.) presented alongside "Verified against live swaps vs Uniswap and aggregators." Before public launch we should either (a) wire to the indexer for real recent trades or (b) soften the copy to "illustrative example." Keeping hardcoded for now so the page is reviewable — happy to follow up with either direction.2. OG image pre-warm fix (original PR)
/og/preconfirm/:time(doesn't exist) to/s/:time/opengraph-image(the actual Next.js opengraph-image route)share/preconfirm/route.tsthat referenced nonexistent/og-preconfirm.pngTest plan
/pro— verify Hero, live metrics, comparison cards, block-position diagram, speed table, final CTA all render/promobile — horizontal scroll snap on comparison cards, responsive hero/proroute to/(main swap)fastprotocol.io/proon X — confirm card title "You keep the mev"fastprotocol.io/s/2.3— confirm the branded preview image shows immediately (the original fix)/s/2.3/opengraph-imagedirectly — confirm image renders🤖 Generated with Claude Code