Skip to content

Add Lovable Gold-partner page#1028

Open
jhislop-design wants to merge 2 commits into
mainfrom
jonny/fervent-goldberg-e902aa
Open

Add Lovable Gold-partner page#1028
jhislop-design wants to merge 2 commits into
mainfrom
jonny/fervent-goldberg-e902aa

Conversation

@jhislop-design

@jhislop-design jhislop-design commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

What

Adds a dedicated, SEO- and conversion-focused partner page at /partners/lovable for our new Gold-tier sponsor, Lovable. It mirrors the structure of the existing Railway partner page (partners.railway.tsx) using Lovable's own product data.

New file: src/routes/partners.lovable.tsx (a static /partners/lovable route auto-overrides the dynamic $partner fallback; routeTree.gen.ts regenerated).

Why

Fulfills the Lovable Gold sponsorship. Replaces the sparse auto-generated partner detail page with a rich developer resource optimized for search + AI agents and for driving signups to lovable.dev.

Details

  • Reuses site conventionsCard, Button, Collapsible, CodeBlock, PartnerImage, Tailwind, dark mode, and analytics (partner_viewed / partner_clicked). No inline styles.
  • Framing — Lovable generates TanStack Start apps from a prompt and ships them to Lovable Cloud (deploy/hosting angle). Leans on the real hook that new Lovable projects are built on TanStack Start.
  • Social proof — uses verifiable aggregate stats (8M+ builders, 25M+ apps, $500M ARR, 80% non-technical) rather than attributed testimonials, since we don't have Lovable-approved customer quotes.
  • SEOseo() meta (title, description, keywords, OG, Twitter card) plus two JSON-LD blocks in SSR HTML: WebPage (partner) + FAQPage (6 Q&As) for rich results / AI search.
  • UTM — all 9 outbound links carry ?utm_medium=sponsor&utm_source=tanstack&utm_campaign=partner-page.

Verified

Rendered in light + dark mode (HTTP 200, no console errors); FAQ accordion toggles; copy buttons work; UTM params present on every link; both JSON-LD blocks parse. Pre-commit hook: format + full test suite green (23 pass), 0 lint errors.

Reviewer notes / please confirm

  1. Pricing — Free $0 (5 daily credits) / Pro $25 (100 credits) / Business $50 / Enterprise custom are from 2026 third-party sources. Worth confirming against lovable.dev/pricing (esp. the Pro credit count).
  2. Docs link — "Read the docs" / CTA point at docs.lovable.dev. Swap in a TanStack-specific Lovable guide if one exists.
  3. Brand treatment — kept the neutral dark CTA/buttons to match the site + Railway page, with Lovable pink used only as an accent (status dot, "Most popular" border).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added a new partner landing page at /partners/lovable.
    • Included enhanced page metadata and structured data for better search visibility.
    • Added multiple content sections, including features, pricing, FAQs, and calls to action.
    • Outbound partner link clicks and page visits are now tracked for analytics.

Build out /partners/lovable as a dedicated, SEO/conversion-focused
partner page, mirroring the structure of the existing Railway page
(partners.railway.tsx) with Lovable's own product data.

- Reuses site components (Card, Button, Collapsible, CodeBlock,
  PartnerImage), Tailwind conventions, dark mode, and analytics
  tracking (partner_viewed / partner_clicked).
- Framing: Lovable generates TanStack Start apps from a prompt and
  ships them to Lovable Cloud (deploy/hosting angle).
- Real product data: 8M+ builders, 25M+ apps, credit-based pricing
  (Free $0 / Pro $25 / Business $50 / Enterprise custom).
- Social-proof section uses verifiable aggregate stats rather than
  attributed testimonials.
- SEO: seo() meta (title, description, keywords, OG, Twitter) plus
  JSON-LD WebPage (partner) + FAQPage (6 Q&As) for rich results and
  AI search agents.
- All outbound links carry
  ?utm_medium=sponsor&utm_source=tanstack&utm_campaign=partner-page.

A static /partners/lovable route auto-overrides the dynamic
$partner fallback; routeTree.gen.ts regenerated accordingly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR adds a new TanStack Router route at /partners/lovable. The generated route tree registers the route, its imports, and type maps. A new page component renders a full Lovable partner landing page with hero, features, pricing, FAQ, and CTA sections, plus SEO/JSON-LD head metadata and analytics tracking for views and outbound clicks.

Changes

Lovable Partner Route

Layer / File(s) Summary
Route tree registration
src/routeTree.gen.ts
Registers PartnersLovableRoute for /partners/lovable, wiring it into route imports, FileRoutesByFullPath, FileRoutesByTo, FileRoutesById, FileRouteTypes unions, FileRoutesByPath module augmentation, and PartnersRouteChildren.
Page content, SEO, and route head
src/routes/partners.lovable.tsx
Defines static content (features, steps, pricing, faqs, stats, code snippets), page constants, an FAQ JSON-LD generator, and the route's head function producing SEO metadata and partner/FAQ JSON-LD.
Component state, helpers, and hero section
src/routes/partners.lovable.tsx
Implements CheckBadge, trackLovableClick, LovableCodeExample helpers, page state/effects (FAQ accordion state, partner_viewed tracking, partner lookup), and the hero section UI.
Content sections: stats, features, how-it-works, library fit
src/routes/partners.lovable.tsx
Renders stats grid, feature cards, a 4-step how-it-works section with code examples, and a library fit section with tags and capability cards.
Pricing, social proof, FAQ, and CTA sections
src/routes/partners.lovable.tsx
Renders pricing plan cards, social proof stats, a controlled FAQ accordion, main CTA section, closing sponsor paragraph, and shared Footer.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant LovablePartnerPage
  participant Analytics
  participant PartnerData

  User->>LovablePartnerPage: navigate to /partners/lovable
  LovablePartnerPage->>PartnerData: getPartnerById('lovable')
  PartnerData-->>LovablePartnerPage: partner record
  LovablePartnerPage->>Analytics: track partner_viewed
  User->>LovablePartnerPage: click outbound Lovable link
  LovablePartnerPage->>Analytics: trackLovableClick (partner_clicked)
Loading

Possibly related PRs

  • TanStack/tanstack.com#925: Same route-tree wiring pattern registering a new dedicated /partners/<partner> route (railway vs lovable).
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding the Lovable Gold-partner page.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jonny/fervent-goldberg-e902aa

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 3, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
tanstack-com 31b3728 Commit Preview URL

Branch Preview URL
Jul 03 2026, 04:56 PM

@jhislop-design jhislop-design marked this pull request as ready for review July 3, 2026 17:03

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
src/routes/partners.lovable.tsx (1)

389-405: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Repeated CTA button className/handler could be extracted into a shared component.

The bg-gray-950 text-white border-gray-950 hover:bg-gray-800 dark:bg-white dark:text-gray-950 dark:border-white dark:hover:bg-gray-200 class string plus target="_blank" rel="noreferrer" onClick={trackLovableClick} combo is repeated verbatim on every primary CTA button across the page (e.g. lines 497-507, 620-630, 667-677, 742-753). Extracting a small LovablePrimaryCTA wrapper would reduce duplication and centralize future styling/tracking changes.

♻️ Sketch
+function LovablePrimaryCTA({
+  href,
+  onClick = trackLovableClick,
+  children,
+  size,
+}: { href: string; onClick?: () => void; children: React.ReactNode; size?: 'lg' }) {
+  return (
+    <Button
+      as="a"
+      href={href}
+      target="_blank"
+      rel="noreferrer"
+      onClick={onClick}
+      size={size}
+      className="bg-gray-950 text-white border-gray-950 hover:bg-gray-800 dark:bg-white dark:text-gray-950 dark:border-white dark:hover:bg-gray-200"
+    >
+      {children}
+    </Button>
+  )
+}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/routes/partners.lovable.tsx` around lines 389 - 405, The repeated primary
CTA button styling and tracking setup should be centralized to avoid duplication
across the page. Extract the shared `Button` configuration from the
`partners.lovable.tsx` CTAs into a small reusable `LovablePrimaryCTA` component
(or equivalent wrapper) that encapsulates the `LOVABLE_HREF`, `target="_blank"`,
`rel="noreferrer"`, `onClick={trackLovableClick}`, and shared className, then
replace each repeated usage with that component while keeping the label/icon
flexible.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/routes/partners.lovable.tsx`:
- Around line 239-240: Shorten the PAGE_DESCRIPTION constant in the
partners.lovable route so it fits within the typical 155–160 character meta
description limit and won’t be truncated in search results. Keep the core SEO
message about Lovable, TanStack Start apps, and cloud deployment, but trim
excess detail from the PAGE_DESCRIPTION string in partners.lovable.tsx.
- Around line 296-303: `trackLovableClick` currently hardcodes
`destination_host` to `lovable.dev`, so docs CTA clicks are misreported; update
the helper in `partners.lovable.tsx` to accept the host as an argument and pass
it through to `trackEvent`, then update every docs-link `onClick` that uses
`LOVABLE_DOCS_HREF` to call `trackLovableClick('docs.lovable.dev')` while
keeping the existing `partner_clicked` payload shape.

---

Nitpick comments:
In `@src/routes/partners.lovable.tsx`:
- Around line 389-405: The repeated primary CTA button styling and tracking
setup should be centralized to avoid duplication across the page. Extract the
shared `Button` configuration from the `partners.lovable.tsx` CTAs into a small
reusable `LovablePrimaryCTA` component (or equivalent wrapper) that encapsulates
the `LOVABLE_HREF`, `target="_blank"`, `rel="noreferrer"`,
`onClick={trackLovableClick}`, and shared className, then replace each repeated
usage with that component while keeping the label/icon flexible.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 81646703-c98d-430a-8f13-a7e4147f8cae

📥 Commits

Reviewing files that changed from the base of the PR and between 00d096e and 31b3728.

📒 Files selected for processing (2)
  • src/routeTree.gen.ts
  • src/routes/partners.lovable.tsx

Comment on lines +239 to +240
const PAGE_DESCRIPTION =
'Lovable is the AI app builder that generates production TanStack Start apps from a prompt — file-based routing, SSR, and type safety included — then deploys them to Lovable Cloud with one click. Trusted by 8M+ builders.'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Meta description is too long and will likely be truncated in search results.

PAGE_DESCRIPTION runs well past the ~155–160 character window Google typically displays before truncating snippets, undercutting the SEO goal of this page.

✏️ Suggested trim
-const PAGE_DESCRIPTION =
-  'Lovable is the AI app builder that generates production TanStack Start apps from a prompt — file-based routing, SSR, and type safety included — then deploys them to Lovable Cloud with one click. Trusted by 8M+ builders.'
+const PAGE_DESCRIPTION =
+  'Lovable is the AI app builder that generates production TanStack Start apps from a prompt, then deploys them to Lovable Cloud with one click. Trusted by 8M+ builders.'
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const PAGE_DESCRIPTION =
'Lovable is the AI app builder that generates production TanStack Start apps from a prompt — file-based routing, SSR, and type safety included — then deploys them to Lovable Cloud with one click. Trusted by 8M+ builders.'
const PAGE_DESCRIPTION =
'Lovable is the AI app builder that generates production TanStack Start apps from a prompt, then deploys them to Lovable Cloud with one click. Trusted by 8M+ builders.'
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/routes/partners.lovable.tsx` around lines 239 - 240, Shorten the
PAGE_DESCRIPTION constant in the partners.lovable route so it fits within the
typical 155–160 character meta description limit and won’t be truncated in
search results. Keep the core SEO message about Lovable, TanStack Start apps,
and cloud deployment, but trim excess detail from the PAGE_DESCRIPTION string in
partners.lovable.tsx.

Comment on lines +296 to +303
function trackLovableClick() {
trackEvent('partner_clicked', {
partner_id: 'lovable',
placement: 'detail',
destination: 'external',
destination_host: 'lovable.dev',
})
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

trackLovableClick always reports destination_host: 'lovable.dev', even for docs links.

This helper is reused for every outbound CTA on the page, including LOVABLE_DOCS_HREF (https://docs.lovable.dev/...) buttons at lines 508-517 and 754-764. Since destination_host is hardcoded to 'lovable.dev', clicks to docs.lovable.dev will be misattributed in analytics.

🐛 Proposed fix
-function trackLovableClick() {
-  trackEvent('partner_clicked', {
-    partner_id: 'lovable',
-    placement: 'detail',
-    destination: 'external',
-    destination_host: 'lovable.dev',
-  })
-}
+function trackLovableClick(destinationHost: string = 'lovable.dev') {
+  trackEvent('partner_clicked', {
+    partner_id: 'lovable',
+    placement: 'detail',
+    destination: 'external',
+    destination_host: destinationHost,
+  })
+}

Then update the docs-link buttons: onClick={() => trackLovableClick('docs.lovable.dev')}.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/routes/partners.lovable.tsx` around lines 296 - 303, `trackLovableClick`
currently hardcodes `destination_host` to `lovable.dev`, so docs CTA clicks are
misreported; update the helper in `partners.lovable.tsx` to accept the host as
an argument and pass it through to `trackEvent`, then update every docs-link
`onClick` that uses `LOVABLE_DOCS_HREF` to call
`trackLovableClick('docs.lovable.dev')` while keeping the existing
`partner_clicked` payload shape.

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