Added more landing pages for upcoming events (#43412)

## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

Added landing pages for contests and giveaways at upcoming conferences.
Also updated the iPhone 17 Pro Max image with a higher quality one with
proper masking.
This commit is contained in:
Prashant Sridharan authored and GitHub committed 2026-03-04 23:07:02 +00:00
1 parent 8efac5cffa
commit cd0e2c9fa9
11 files changed
+370 -7

No files matched your search

@@ -0,0 +1,60 @@
import type { GoPageInput } from 'marketing'
import Link from 'next/link'
import { Button } from 'ui'
const page: GoPageInput = {
template: 'lead-gen',
slug: 'accenture-reinvention-2026/contest',
metadata: {
title: 'Win an iPhone Pro Max | Supabase at Accenture AI & Data Conference (ReinventionX) 2026',
description:
'Create a Supabase account and load data for a chance to win an iPhone Pro Max. Accenture AI & Data Conference (ReinventionX) 2026.',
},
hero: {
title: 'Win an iPhone Pro Max',
subtitle: 'Supabase at Accenture AI & Data Conference 2026',
description:
'Your team is already building with AI tools. Supabase is the production backend that turns those prototypes into secure, scalable applications. Try it out -- create an account, load some data, and you could win an iPhone Pro Max.',
image: {
src: '/images/landing-pages/stripe-sessions/iphone17-pro-max.png',
alt: 'iPhone Pro Max',
width: 400,
height: 500,
},
ctas: [
{
label: 'Get started',
href: '#how-to-enter',
variant: 'primary',
},
],
},
sections: [
{
type: 'single-column',
id: 'how-to-enter',
title: 'How to enter',
children: (
<div className="flex flex-col items-center gap-6">
<ol className="flex flex-col gap-4 text-foreground-light text-lg list-decimal list-inside">
<li>Create a Supabase account with the same email where you got our post-event note</li>
<li>Load data into a Supabase database</li>
<li>Complete these steps by Monday, May 4, 2026 at 12:00 PM PST</li>
</ol>
<Button asChild type="default" size="medium">
<Link href="https://supabase.com/dashboard">Create your account</Link>
</Button>
<p className="text-xs text-foreground-lighter mt-4">
No purchase necessary. Void where prohibited.{' '}
<Link href="/go/contest-rules" className="underline">
Official rules
</Link>
.
</p>
</div>
),
},
],
}
export default page
@@ -0,0 +1,37 @@
import type { GoPageInput } from 'marketing'
import Link from 'next/link'
import { Button } from 'ui'
const page: GoPageInput = {
template: 'thank-you',
slug: 'postgresconf-sjc-2026/contest/thank-you',
metadata: {
title: "You're entered | Supabase at PostgresConf San Jose 2026",
description:
'Thanks for entering the Supabase contest at PostgresConf San Jose 2026. Good luck!',
},
hero: {
title: 'Thanks for entering',
description:
"Your contest entry is confirmed. Make sure you've created a Supabase account and loaded data before Monday, May 4, 2026 at 12:00 PM PST. We'll reach out to the winner by email.",
},
sections: [
{
type: 'single-column',
title: 'Get started with Supabase',
description: "If you haven't already, create your account and start building.",
children: (
<div className="flex flex-col sm:flex-row items-center justify-center gap-4">
<Button asChild type="default" size="small">
<Link href="https://supabase.com/dashboard">Go to dashboard</Link>
</Button>
<Button asChild type="outline" size="small">
<Link href="https://supabase.com">Visit supabase.com</Link>
</Button>
</div>
),
},
],
}
export default page
@@ -0,0 +1,128 @@
import type { GoPageInput } from 'marketing'
import Link from 'next/link'
import { Button } from 'ui'
const page: GoPageInput = {
template: 'lead-gen',
slug: 'postgresconf-sjc-2026/contest',
metadata: {
title: 'Win an iPhone Pro Max | Supabase at PostgresConf San Jose 2026',
description:
'Sign up for Supabase and enter the contest for a chance to win an iPhone Pro Max. PostgresConf San Jose 2026.',
},
hero: {
title: 'Win an iPhone Pro Max',
subtitle: 'Supabase at PostgresConf San Jose 2026',
description:
'Supabase is Postgres with batteries included -- auth, storage, edge functions, vectors, and real-time, all built on top of the database you already know. Sign up, load some data, and enter below for a chance to win an iPhone Pro Max.',
image: {
src: '/images/landing-pages/stripe-sessions/iphone17-pro-max.png',
alt: 'iPhone Pro Max',
width: 400,
height: 500,
},
ctas: [
{
label: 'Get started',
href: '#how-to-enter',
variant: 'primary',
},
],
},
sections: [
{
type: 'single-column',
id: 'how-to-enter',
title: 'How to enter',
children: (
<div className="flex flex-col items-center gap-6">
<ol className="flex flex-col gap-4 text-foreground-light text-lg list-decimal list-inside">
<li>Create a Supabase account and note the email address you used</li>
<li>Load data into a Supabase database</li>
<li>Fill out the entry form below</li>
<li>Complete these steps by Monday, May 4, 2026 at 12:00 PM PST</li>
</ol>
<Button asChild type="default" size="medium">
<Link href="https://supabase.com/dashboard">Create your account</Link>
</Button>
<p className="text-xs text-foreground-lighter mt-4">
No purchase necessary. Void where prohibited.{' '}
<Link href="/go/contest-rules" className="underline">
Official rules
</Link>
.
</p>
</div>
),
},
{
type: 'form',
id: 'enter-contest',
title: 'Enter the contest',
description: 'Fill out the form below to complete your entry.',
fields: [
{
type: 'text',
name: 'first_name',
label: 'First Name',
placeholder: 'First Name',
required: true,
half: true,
},
{
type: 'text',
name: 'last_name',
label: 'Last Name',
placeholder: 'Last Name',
required: true,
half: true,
},
{
type: 'email',
name: 'email_address',
label: 'Email',
placeholder: 'Email address',
required: true,
},
{
type: 'text',
name: 'company_name',
label: 'Company',
placeholder: 'Company name',
required: true,
},
],
submitLabel: 'Enter contest',
successRedirect: '/go/postgresconf-sjc-2026/contest/thank-you',
disclaimer:
'By submitting this form, I confirm that I have read and understood the [Privacy Policy](https://supabase.com/privacy) and the [Official Rules](/go/contest-rules).',
crm: {
hubspot: {
formGuid: '1f508323-bd39-497d-b4bf-4978a50d9248',
fieldMap: {
first_name: 'firstname',
last_name: 'lastname',
email_address: 'email',
company_name: 'company',
},
consent:
'By submitting this form, I confirm that I have read and understood the Privacy Policy.',
},
customerio: {
event: 'event_attended',
profileMap: {
email_address: 'email',
first_name: 'first_name',
last_name: 'last_name',
company_name: 'company_name',
},
staticProperties: {
event_name: 'PostgresConf San Jose 2026',
},
},
},
},
],
}
export default page
@@ -0,0 +1,60 @@
import type { GoPageInput } from 'marketing'
import Link from 'next/link'
import { Button } from 'ui'
const page: GoPageInput = {
template: 'lead-gen',
slug: 'startup-grind-2026/contest',
metadata: {
title: 'Win an iPhone Pro Max | Supabase at Startup Grind 2026',
description:
'Create a Supabase account and load data for a chance to win an iPhone Pro Max. Startup Grind 2026.',
},
hero: {
title: 'Win an iPhone Pro Max',
subtitle: 'Supabase at Startup Grind 2026',
description:
'Great meeting you at Startup Grind. Supabase gives you Postgres with auth, storage, edge functions, and real-time -- everything you need to ship your product faster. Try it out and you could win an iPhone Pro Max.',
image: {
src: '/images/landing-pages/stripe-sessions/iphone17-pro-max.png',
alt: 'iPhone Pro Max',
width: 400,
height: 500,
},
ctas: [
{
label: 'Get started',
href: '#how-to-enter',
variant: 'primary',
},
],
},
sections: [
{
type: 'single-column',
id: 'how-to-enter',
title: 'How to enter',
children: (
<div className="flex flex-col items-center gap-6">
<ol className="flex flex-col gap-4 text-foreground-light text-lg list-decimal list-inside">
<li>Create a Supabase account with the same email where you got our post-event note</li>
<li>Load data into a Supabase database</li>
<li>Complete these steps by Monday, May 11, 2026 at 12:00 PM PST</li>
</ol>
<Button asChild type="default" size="medium">
<Link href="https://supabase.com/dashboard">Create your account</Link>
</Button>
<p className="text-xs text-foreground-lighter mt-4">
No purchase necessary. Void where prohibited.{' '}
<Link href="/go/contest-rules" className="underline">
Official rules
</Link>
.
</p>
</div>
),
},
],
}
export default page
@@ -37,7 +37,7 @@ const page: GoPageInput = {
children: (
<div className="flex flex-col items-center gap-6">
<ol className="flex flex-col gap-4 text-foreground-light text-lg list-decimal list-inside">
<li>Create a Supabase account with your email address</li>
<li>Create a Supabase account with the same email where you got our post-event note</li>
<li>Load data into a Supabase database</li>
<li>Complete these steps by Monday, May 11, 2026 at 12:00 PM PST</li>
</ol>
+68
View File
@@ -0,0 +1,68 @@
import type { GoPageInput } from 'marketing'
import Link from 'next/link'
import { Button } from 'ui'
const page: GoPageInput = {
template: 'lead-gen',
slug: 'sxsw-2026/contest',
metadata: {
title: 'Win a MacBook Neo | Supabase x Dreambase at SXSW 2026',
description: 'Sign up for Supabase and Dreambase for a chance to win a MacBook Neo. SXSW 2026.',
},
hero: {
title: 'Win a MacBook Neo',
subtitle: 'Supabase x Dreambase at SXSW 2026',
description:
'Thanks for stopping by the Supabase x Dreambase party at SXSW. Supabase and Dreambase have partnered to run a sweepstakes -- sign up for both Supabase and Dreambase, load some data, and you could walk away with a new MacBook Neo.',
image: {
src: '/images/landing-pages/sxsw-2026/macbook-neo.png',
alt: 'MacBook Neo in four colors',
width: 500,
height: 333,
},
ctas: [
{
label: 'Get started',
href: '#how-to-enter',
variant: 'primary',
},
],
},
sections: [
{
type: 'single-column',
id: 'how-to-enter',
title: 'How to enter',
children: (
<div className="flex flex-col items-center gap-6">
<ol className="flex flex-col gap-4 text-foreground-light text-lg list-decimal list-inside">
<li>
Create a Supabase account with the same email address where you got our post-event
note
</li>
<li>Create a Dreambase account using the same email address</li>
<li>Load data into a Supabase database</li>
<li>Complete these steps by Monday, March 30, 2026 at 12:00 PM PST</li>
</ol>
<div className="flex flex-col sm:flex-row items-center gap-4">
<Button asChild type="default" size="medium">
<Link href="https://supabase.com/dashboard">Create your Supabase account</Link>
</Button>
<Button asChild type="outline" size="medium">
<Link href="https://dreambase.ai">Sign up for Dreambase</Link>
</Button>
</div>
<p className="text-xs text-foreground-lighter mt-4">
No purchase necessary. Void where prohibited.{' '}
<Link href="/go/contest-rules" className="underline">
Official rules
</Link>
.
</p>
</div>
),
},
],
}
export default page
+16 -6
View File
@@ -4,18 +4,28 @@ import byocEarlyAccess from './pre-release/byoc-early-access'
import boltWebinar from './webinar/bolt-webinar'
import boltWebinarThankYou from './webinar/bolt-webinar-thank-you'
import contestRules from './legal/contest-rules'
import stripeExecDinner from './events/stripe-exec-dinner'
import stripeExecDinnerThankYou from './events/stripe-exec-dinner-thank-you'
import stripeSessionsContest from './events/stripe-sessions-contest'
import stripeExecDinner from './events/stripe-sessions-2026/exec-dinner'
import stripeExecDinnerThankYou from './events/stripe-sessions-2026/exec-dinner-thank-you'
import stripeSessionsContest from './events/stripe-sessions-2026/contest'
import sxswContest from './events/sxsw-2026/contest'
import accentureContest from './events/accenture-reinvention-2026/contest'
import postgresconfContest from './events/postgresconf-sjc-2026/contest'
import postgresconfContestThankYou from './events/postgresconf-sjc-2026/contest-thank-you'
import startupGrindContest from './events/startup-grind-2026/contest'
const pages: GoPageInput[] = [
byocEarlyAccess,
contestRules,
boltWebinar, // remove after March 31, 2026
boltWebinarThankYou, // remove after March 31, 2026
stripeExecDinner,
stripeExecDinnerThankYou,
stripeSessionsContest,
stripeExecDinner, // remove after May 31, 2026
stripeExecDinnerThankYou, // remove after May 31, 2026
stripeSessionsContest, // remove after May 31, 2026
sxswContest, // remove after April 30, 2026
accentureContest, // remove after May 31, 2026
postgresconfContest, // remove after May 31, 2026
postgresconfContestThankYou, // remove after May 31, 2026
startupGrindContest, // remove after May 31, 2026
]
export default pages
Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 KiB

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB