feat(partners): add dedicated Railway Gold partner landing page#925
feat(partners): add dedicated Railway Gold partner landing page#925jhislop-design wants to merge 2 commits into
Conversation
Replaces the generic `partners.$partner` template for Railway with a
purpose-built landing route at `/partners/railway`, in line with the
Gold-tier sponsorship agreement.
The page is built almost entirely from existing tanstack.com primitives
to stay visually and behaviorally consistent with the rest of the site:
- `CodeBlock` (Shiki) for the config and terminal snippets (replaces a
hand-rolled `<pre>` which inherited the global `text-black` rule and
rendered invisible on dark backgrounds)
- `Card` for feature, step, library-fit, pricing and testimonial panels
- `Button` (`as="a"`) for every CTA, with brand-tinted overrides on the
hero and dark CTA section
- `Collapsible` / `CollapsibleTrigger` / `CollapsibleContent` for the
FAQ accordion, controlled by a parent `openFaq` state so only one
answer expands at a time
- `seo()` for title/description/OG/Twitter Card meta
- Existing `PartnerImage` and `railway-{black,white}.svg` brand marks
for the hero
SEO additions:
- Page-specific title + description targeting "deploy tanstack to
railway" and related queries
- Two `application/ld+json` blocks in SSR: the existing partner
`WebPage` schema plus a new `FAQPage` schema generated from the
on-page FAQ for Google rich results + AI search agents
Analytics:
- Fires `partner_viewed` on mount with `placement: 'detail'`
- Fires `partner_clicked` with `destination_host: 'railway.com'` on
every outbound Railway CTA, matching the existing taxonomy in
`analytics/events.ts`
All outbound Railway links carry
`utm_medium=sponsor&utm_source=tanstack&utm_campaign=partner-page`.
The static `/partners/railway` route takes file-routing precedence
over the parametric `/partners/$partner` template, so the legacy
template is preserved untouched for every other partner.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThis pull request adds a new Railway Gold Partner landing page to TanStack Router. It registers a child route at ChangesRailway Gold Partner Page
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint skipped: no ESLint configuration detected in root package.json. To enable, add Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Replaces the generic
/partners/$partnertemplate for Railway with a purpose-built landing page at/partners/railway, fulfilling the Gold-tier sponsorship agreement. The static file-routed/partners/railwaytakes precedence over/partners/$partner, so the legacy template stays untouched for every other partner.What's on the page
PartnerImage), Gold Sponsor metadata, headline, intro copy, customer quote, two CTAstanstack.config.tsand terminal)CollapsiblecomponentBuilt from existing tanstack.com primitives
To stay visually and behaviorally consistent with the rest of the site, the page uses:
CodeBlock(Shiki) for code snippets — fixes a hand-rolled<pre>that was being clobbered by the globalpre { @apply text-black }rule inapp.cssand rendering invisible on dark backgroundsCardfor every panel (feature, step, library, pricing, testimonial)Button(as="a") for every CTA, with brand-tinted className overridesCollapsible/CollapsibleTrigger/CollapsibleContentfor the FAQseo()for meta tags (title, description, OG, Twitter Card)PartnerImage+ existingrailway-{black,white}.svgassets for the hero wordmarkSEO
application/ld+jsonblocks emitted in SSR'd HTML:WebPageschema fromgetPartnerJsonLd()FAQPageschema generated from the on-page FAQ — for Google rich results and AI search agents (ChatGPT / Claude / Perplexity)Analytics
partner_viewedfires on mount withplacement: 'detail'partner_clickedfires on every outbound Railway CTA withdestination_host: 'railway.com', matching the existing taxonomy insrc/utils/analytics/events.tsUTM tracking
All four outbound Railway links carry
utm_medium=sponsor&utm_source=tanstack&utm_campaign=partner-page.Test plan
/partners/railwayin dev — hero, stats, features, code blocks, pricing tiers, FAQ, and dark CTA all render.aurora-xin dark moderailway.comwith the partner-page UTM intact<script type="application/ld+json">blocks presentpartner_viewed+partner_clickedevents show up in GA4 DebugView withpartner_id=railway,placement=detail/partners/netlifyto confirm the generic/partners/\$partnertemplate still works for every other partner🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes