mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 01:15:03 +03:00
Add /go/ask-supabase-select Select 2026 recap page (#50889)
## Problem Attendees at Supabase Select 2026 need a quick, linkable page that recaps what shipped and points them to the right next step, whether that's a theme blog post, a solution page, or the full features directory. ## Solution Added `/go/ask-supabase-select` using the go-page system (`GoPageInput` config, no bespoke React): - **Hero**: "Build in an instant. Scale to infinity." with a "Read the Recap" CTA - **Our announcements**: three theme cards (Build anything, Scale without limits, Operate with confidence), each with a blurb sourced from the drafted Select 2026 theme blog posts and a CTA to that post - **Explore Supabase for your team**: a 2x2 grid of solution cards (AI Builders, Startups, Developers, Enterprise), each fully clickable to its solutions page - **Supabase features**: closing CTA out to `/features` Also adds `whitespace-pre-line` support to the shared go-page `HeroSection` component so a hero description can wrap onto a second line when the config string includes `\n`. This is additive and doesn't change rendering for existing `/go` pages that don't use a line break. Note: the "Read the Build/Scale/Operate Blog" and "Read the Recap" CTAs currently point to `/docs` as a placeholder — the real blog posts are still in progress and will be swapped in once published. ## Review instructions 1. Run `pnpm --filter www dev` and visit `http://localhost:3000/go/ask-supabase-select`. 2. Confirm the three announcement cards, the four solution cards (hover/click highlight, no button chrome), and the closing features CTA all render and link correctly. ## Checklist - [x] I have read CONTRIBUTING.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added the “Ask Supabase” landing page, with product resources, documentation links, team-solution cards, and a blog post marked as coming soon. * **Improvements** * Hero descriptions now preserve line breaks for clearer text presentation. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Wendie Cheung <wendie.cheung@supabase.io> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
3 files changed
+156
-1
No files matched your search
@@ -29,6 +29,7 @@ import stripeMeetingScheduler from './events/stripe-sessions-2026/meeting-schedu
|
||||
import stripeParty from './events/stripe-sessions-2026/party'
|
||||
import vercelShipSydneyContest from './events/vercel-ship-sydney-2026/contest'
|
||||
import vercelShipSydneyContestThankYou from './events/vercel-ship-sydney-2026/contest-thank-you'
|
||||
import askSupabaseSelect from './lead-gen/ask-supabase-select'
|
||||
import awsActivateOffer from './lead-gen/aws-activate-offer'
|
||||
import exampleLeadGen from './lead-gen/example-lead-gen'
|
||||
import amoe from './legal/amoe'
|
||||
@@ -40,6 +41,7 @@ import supabasePipelinesNewDestinationsThankYou from './pre-release/supabase-pip
|
||||
import supabaseStripeProjects from './stripe-projects/supabase-stripe-projects'
|
||||
|
||||
const pages: GoPageInput[] = [
|
||||
askSupabaseSelect, // maintain forever
|
||||
awsActivateOffer, // maintain forever
|
||||
exampleLeadGen, // sample lead gen page
|
||||
byocEarlyAccess, // maintain until PM says to remove
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
import {
|
||||
BotIcon,
|
||||
Building2Icon,
|
||||
Code2Icon,
|
||||
Hammer,
|
||||
Maximize2,
|
||||
ShieldCheck,
|
||||
TrendingUpIcon,
|
||||
} from 'lucide-react'
|
||||
import type { GoPageInput } from 'marketing'
|
||||
import Link from 'next/link'
|
||||
import { Button } from 'ui'
|
||||
|
||||
type Theme = {
|
||||
name: string
|
||||
description: string
|
||||
cta: { label: string; href: string }
|
||||
icon: typeof Hammer
|
||||
}
|
||||
|
||||
const themes: Theme[] = [
|
||||
{
|
||||
name: 'Build anything',
|
||||
description:
|
||||
"Your agent sets up the backend from code, your users' agents work with your app through its own MCP server, and long-running tasks run in Supabase Compute.",
|
||||
cta: { label: 'Read the Build Blog', href: '/docs' },
|
||||
icon: Hammer,
|
||||
},
|
||||
{
|
||||
name: 'Scale without limits',
|
||||
description:
|
||||
'The app your agent built in minutes stays on the same Postgres, from prototype to petabyte.',
|
||||
cta: { label: 'Read the Scale Blog', href: '/docs' },
|
||||
icon: Maximize2,
|
||||
},
|
||||
{
|
||||
name: 'Operate with confidence',
|
||||
description:
|
||||
'Your agent finds the problem, tests the fix, and reports what it found. You decide what ships.',
|
||||
cta: { label: 'Read the Operate Blog', href: '/docs' },
|
||||
icon: ShieldCheck,
|
||||
},
|
||||
]
|
||||
|
||||
const solutions = [
|
||||
{
|
||||
name: 'AI Builders',
|
||||
description:
|
||||
'Ship AI-powered apps with a Postgres backend built for agents. Your users get one integrated backend, so you spend time building instead of managing infrastructure.',
|
||||
href: '/solutions/ai-builders',
|
||||
icon: BotIcon,
|
||||
},
|
||||
{
|
||||
name: 'Startups',
|
||||
description:
|
||||
'Move fast on a backend that scales with you. Spend your time on the product, not on managing infrastructure.',
|
||||
href: '/solutions/startups',
|
||||
icon: TrendingUpIcon,
|
||||
},
|
||||
{
|
||||
name: 'Developers',
|
||||
description:
|
||||
'Get everything you need to build a backend, in one place. Database, Auth, Storage, and Realtime all run on the same Postgres platform, so you write less glue code.',
|
||||
href: '/solutions/developers',
|
||||
icon: Code2Icon,
|
||||
},
|
||||
{
|
||||
name: 'Enterprise',
|
||||
description:
|
||||
'Run Supabase at scale with the security and support your team needs. Teams like GitHub and PwC trust Supabase to run their most important workloads.',
|
||||
href: '/solutions/enterprise',
|
||||
icon: Building2Icon,
|
||||
},
|
||||
]
|
||||
|
||||
const page: GoPageInput = {
|
||||
template: 'lead-gen',
|
||||
slug: 'ask-supabase-select',
|
||||
metadata: {
|
||||
title: 'Ask Supabase: Select 2026 announcements',
|
||||
description:
|
||||
'Catch up on the product announcements from Supabase Select 2026, plus where to go next for your team.',
|
||||
},
|
||||
hero: {
|
||||
title: 'Build in an instant. Scale to infinity.',
|
||||
subtitle: 'Ask Supabase',
|
||||
description: 'Questions about what shipped?\nFind the Ask Supabase team on the show floor.',
|
||||
ctas: [
|
||||
{
|
||||
label: 'Read the Recap',
|
||||
href: '/docs',
|
||||
variant: 'secondary',
|
||||
},
|
||||
],
|
||||
},
|
||||
sections: [
|
||||
{
|
||||
type: 'three-column',
|
||||
title: 'Our announcements',
|
||||
description: '20+ announcements, catch up on every single one.',
|
||||
children: (
|
||||
<>
|
||||
{themes.map((theme) => (
|
||||
<div
|
||||
key={theme.name}
|
||||
className="flex flex-col gap-6 rounded-lg border border-muted p-8"
|
||||
>
|
||||
<theme.icon className="h-6 w-6 stroke-brand-default" strokeWidth={1.5} />
|
||||
<h3 className="text-lg text-foreground">{theme.name}</h3>
|
||||
<p className="text-sm text-foreground-light">{theme.description}</p>
|
||||
<Button asChild size="small" variant="primary" className="self-center mt-auto">
|
||||
<Link href={theme.cta.href}>{theme.cta.label}</Link>
|
||||
</Button>
|
||||
</div>
|
||||
))}
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
type: 'two-column',
|
||||
title: 'Explore Supabase for your team',
|
||||
children: (
|
||||
<>
|
||||
{solutions.map((solution) => (
|
||||
<Link
|
||||
key={solution.name}
|
||||
href={solution.href}
|
||||
className="flex flex-col gap-2 rounded-lg border border-muted p-4 transition-colors hover:border-foreground-muted hover:bg-surface-100 active:bg-surface-200"
|
||||
>
|
||||
<solution.icon className="h-5 w-5 stroke-brand-default" strokeWidth={1.5} />
|
||||
<h3 className="text-base text-foreground">{solution.name}</h3>
|
||||
<p className="text-sm text-foreground-lighter">{solution.description}</p>
|
||||
</Link>
|
||||
))}
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
type: 'single-column',
|
||||
title: 'Supabase features',
|
||||
description: 'Everything you need to build and ship your next project.',
|
||||
children: (
|
||||
<div className="flex justify-center">
|
||||
<Button asChild size="medium" variant="primary">
|
||||
<Link href="/features">Explore all the latest features</Link>
|
||||
</Button>
|
||||
</div>
|
||||
),
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
export default page
|
||||
@@ -43,7 +43,7 @@ export default function HeroSection({
|
||||
{section.description && (
|
||||
<p
|
||||
className={cn(
|
||||
'text-lg leading-relaxed text-foreground-light text-pretty',
|
||||
'text-lg leading-relaxed text-foreground-light text-pretty whitespace-pre-line',
|
||||
!hasMedia && 'md:text-xl md:text-foreground max-w-2xl'
|
||||
)}
|
||||
>
|
||||
|
||||
Reference in new issue
Block a user