Commit 4363ad0
feat(partners): add dedicated Railway Gold partner landing page (#925)
* feat(partners): add dedicated Railway Gold partner landing page
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>
* ci: apply automated fixes
* feat(partners/railway): polish copy + add mid-page CTAs
Voice + conversion pass before shipping. The hero, feature cards, and
section headings now match TanStack's restrained, pragmatic tone instead
of echoing Railway's own marketing site.
Copy changes:
- Hero paragraph rewritten using the same framing as
`partnerGuidance.railway` in `partner-pages.ts` (drop "all-in-one
intelligent cloud platform trusted by 2M+ developers" — that's
Railway's tagline, not TanStack's voice)
- Feature card descriptions tightened to be outcome-focused
("No YAML to maintain.", "Test routing, data, and server logic
before merging.")
- Replace emoji feature icons with Lucide icons (Rocket,
GitPullRequest, LineChart, Network, Undo2, ShieldCheck, Globe,
Infinity) to match the site's icon language
- Testimonial section heading "Teams are saving big on infrastructure"
→ "What teams say after switching" + a neutral framing line
CTAs:
The page previously had only the hero CTA + final CTA section, leaving
~6 content sections between them with no out-link. Added three mid-page
CTA blocks and varied the labels so no two CTAs read the same:
- Hero primary: "Deploy free in 2 minutes" (+ "No credit card · $5 in
trial credits on signup" microcopy)
- After how-it-works code blocks: "Try the Railway preset" + "Read the
deployment guide"
- After pricing tiers: "Start with $5 in credits" + "Estimate your
costs" (new link to railway.com/pricing)
- After testimonials: "Move your app to Railway" + per-second-billing
microcopy
- Final CTA: "Deploy your TanStack app" + "Open the docs"
Outbound railway.com links: 4 → 9, all distinct labels, all carrying
the partner-page UTM.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ci: apply automated fixes
* fix(partners/railway): use the canonical @tanstack/cli scaffolder
Step 01 was `npx create-tsrouter-app my-app`, which is the older
router-only scaffolder. The TanStack Start docs recommend the unified
CLI for new apps, so match the official getting-started instructions.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>1 parent b8b4cf2 commit 4363ad0
2 files changed
Lines changed: 833 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
| 57 | + | |
57 | 58 | | |
58 | 59 | | |
59 | 60 | | |
| |||
380 | 381 | | |
381 | 382 | | |
382 | 383 | | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
383 | 389 | | |
384 | 390 | | |
385 | 391 | | |
| |||
961 | 967 | | |
962 | 968 | | |
963 | 969 | | |
| 970 | + | |
964 | 971 | | |
965 | 972 | | |
966 | 973 | | |
| |||
1100 | 1107 | | |
1101 | 1108 | | |
1102 | 1109 | | |
| 1110 | + | |
1103 | 1111 | | |
1104 | 1112 | | |
1105 | 1113 | | |
| |||
1246 | 1254 | | |
1247 | 1255 | | |
1248 | 1256 | | |
| 1257 | + | |
1249 | 1258 | | |
1250 | 1259 | | |
1251 | 1260 | | |
| |||
1395 | 1404 | | |
1396 | 1405 | | |
1397 | 1406 | | |
| 1407 | + | |
1398 | 1408 | | |
1399 | 1409 | | |
1400 | 1410 | | |
| |||
1534 | 1544 | | |
1535 | 1545 | | |
1536 | 1546 | | |
| 1547 | + | |
1537 | 1548 | | |
1538 | 1549 | | |
1539 | 1550 | | |
| |||
1679 | 1690 | | |
1680 | 1691 | | |
1681 | 1692 | | |
| 1693 | + | |
1682 | 1694 | | |
1683 | 1695 | | |
1684 | 1696 | | |
| |||
2183 | 2195 | | |
2184 | 2196 | | |
2185 | 2197 | | |
| 2198 | + | |
| 2199 | + | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
2186 | 2205 | | |
2187 | 2206 | | |
2188 | 2207 | | |
| |||
3051 | 3070 | | |
3052 | 3071 | | |
3053 | 3072 | | |
| 3073 | + | |
3054 | 3074 | | |
3055 | 3075 | | |
3056 | 3076 | | |
3057 | 3077 | | |
3058 | 3078 | | |
| 3079 | + | |
3059 | 3080 | | |
3060 | 3081 | | |
3061 | 3082 | | |
| |||
0 commit comments