diff --git a/apps/www/app/(home)/_components/BuiltWithSupabaseSection.tsx b/apps/www/app/(home)/_components/BuiltWithSupabaseSection.tsx
index ca02350e0e3..2daddccf7c7 100644
--- a/apps/www/app/(home)/_components/BuiltWithSupabaseSection.tsx
+++ b/apps/www/app/(home)/_components/BuiltWithSupabaseSection.tsx
@@ -118,80 +118,80 @@ export function BuiltWithSupabaseSection() {
{/* Featured row - 2 large cells */}
-
- {featuredExamples.map((example) => {
- const logo = EXAMPLE_LOGO[example.title]
- const Skeleton = SKELETON_CONTENT[example.title]
- return (
-
-
- {logo && (
-
- )}
-
-
{example.title}
-
- {example.description}
-
+
+ {featuredExamples.map((example) => {
+ const logo = EXAMPLE_LOGO[example.title]
+ const Skeleton = SKELETON_CONTENT[example.title]
+ return (
+
+
+ {logo && (
+
+ )}
+
+
{example.title}
+
+ {example.description}
+
+
+
+
+ {/* Browser frame */}
+
+ {/* Title bar */}
+
+
+
+
+
+ {/* Skeleton content */}
+
+ {Skeleton ? : null}
-
- {/* Browser frame */}
-
- {/* Title bar */}
-
-
-
-
-
- {/* Skeleton content */}
-
- {Skeleton ? : null}
-
-
-
-
- )
- })}
-
+
+
+ )
+ })}
+
{/* Grid row - 4 smaller cells */}
-
- {gridExamples.map((example) => {
- const logo = EXAMPLE_LOGO[example.title]
- return (
-
-
- {logo && (
-
- )}
-
-
{example.title}
-
- {example.description}
-
-
- )
- })}
-
+
+ {gridExamples.map((example) => {
+ const logo = EXAMPLE_LOGO[example.title]
+ return (
+
+
+ {logo && (
+
+ )}
+
+
{example.title}
+
+ {example.description}
+
+
+ )
+ })}
+
)
diff --git a/apps/www/app/(home)/_components/CustomerStoriesSection.tsx b/apps/www/app/(home)/_components/CustomerStoriesSection.tsx
index 475de434158..0fa89bf22b5 100644
--- a/apps/www/app/(home)/_components/CustomerStoriesSection.tsx
+++ b/apps/www/app/(home)/_components/CustomerStoriesSection.tsx
@@ -6,21 +6,6 @@ import { useState } from 'react'
import { Button, cn } from 'ui'
const customerStories = [
- {
- name: 'Resend',
- logo: '/images/customers/logos/resend.png',
- icon: '/images/customers/logos/resend-icon.svg',
- tagline: 'Scaling seamlessly to 5,000+ paying customers and millions of emails sent daily.',
- quote:
- "The Supabase YC Program made it a no-brainer for us. We didn't have to worry about backend costs in the early days, which gave us more runway to focus on product-market fit.",
- author: 'Zeno Rocha, CEO, Resend',
- authorImg: '/images/blog/avatars/zeno-rocha.png',
- slug: 'resend',
- bgColor: '#000000',
- bgGradient: 'linear-gradient(to bottom left, #0a0a0a 0%, #000000 100%)',
- dimBgColor: '#080808',
- textColor: 'light' as 'light' | 'dark',
- },
{
name: 'Firecrawl',
logo: '/images/customers/logos/firecrawl.png',
@@ -32,9 +17,28 @@ const customerStories = [
authorImg: '/images/blog/avatars/caleb-peffer.jpg',
slug: 'firecrawl',
rawIcon: true,
- bgColor: '#7a3818',
- bgGradient: 'linear-gradient(to bottom left, #7a3818 0%, #4a1e08 100%)',
- dimBgColor: '#5a2a10',
+ iconFilter: 'brightness(0) invert(1)',
+ bgColor: 'color(display-p3 0.980392 0.364706 0.098039)',
+ bgGradient:
+ 'linear-gradient(to bottom left, color(display-p3 0.980392 0.364706 0.098039 / 1) 0%, color(display-p3 0.980392 0.364706 0.098039 / 0.9) 100%)',
+ dimBgColor: 'color(display-p3 0.980392 0.364706 0.098039 / 0.9)',
+ textColor: 'light' as 'light' | 'dark',
+ },
+ {
+ name: 'Rally',
+ logo: '/images/customers/logos/rally.png',
+ icon: '/images/customers/logos/rally-icon.svg',
+ rawIcon: true,
+ tagline: 'From first line of code to fully licensed fintech in three months.',
+ quote:
+ "We could not have built this company without Supabase. If I had to go and build all these components myself, we wouldn't even have launched.",
+ author: 'Thiago Peres, Founder & CTO, Rally',
+ authorImg: 'https://avatars.githubusercontent.com/u/914007?v=4',
+ slug: 'rally',
+ bgColor: 'color(display-p3 0.275 0.306 0.8)',
+ bgGradient:
+ 'linear-gradient(to bottom left, color(display-p3 0.275 0.306 0.8 / 1) 0%, color(display-p3 0.118 0.176 0.769 / 1) 100%)',
+ dimBgColor: 'color(display-p3 0.118 0.176 0.769 / 1)',
textColor: 'light' as 'light' | 'dark',
},
{
@@ -63,9 +67,11 @@ const customerStories = [
authorImg: '/images/blog/avatars/vasek-mlejnsky.jpg',
slug: 'e2b',
rawIcon: true,
- bgColor: '#7a4400',
- bgGradient: 'linear-gradient(to bottom left, #7a4400 0%, #4a2800 100%)',
- dimBgColor: '#5a3200',
+ iconFilter: 'brightness(0) invert(1)',
+ bgColor: 'color(display-p3 1 0.533 0)',
+ bgGradient:
+ 'linear-gradient(to bottom left, color(display-p3 1 0.533 0 / 1) 0%, color(display-p3 0.7 0.373 0 / 1) 100%)',
+ dimBgColor: 'color(display-p3 0.7 0.373 0 / 1)',
textColor: 'light' as 'light' | 'dark',
},
{
@@ -89,8 +95,7 @@ const aiBuilderStories = [
{
name: 'Lovable',
logo: '/images/logos/publicity/lovable.svg',
- description:
- 'We store embeddings in a PostgreSQL database. Supabase is a great partner for us as we scale.',
+ description: 'We store embeddings in a PostgreSQL database.',
slug: 'lovable',
photo: '/images/logos/publicity/lovable-team.png',
},
@@ -125,7 +130,8 @@ function IconChip({
}) {
const isLight = story.textColor === 'light'
const s = story as any
- const filter = s.iconFilter ?? (s.rawIcon ? undefined : isLight ? 'brightness(0) invert(1)' : 'brightness(0)')
+ const filter =
+ s.iconFilter ?? (s.rawIcon ? undefined : isLight ? 'brightness(0) invert(1)' : 'brightness(0)')
return (
+
{/* Header row */}
@@ -184,10 +190,16 @@ export function CustomerStoriesSection() {
{isActive && (
-
+
{story.name}
-
+
{story.tagline}
@@ -198,8 +210,15 @@ export function CustomerStoriesSection() {
"{story.quote}"
-
-
+
+
{story.author}
@@ -234,9 +253,9 @@ export function CustomerStoriesSection() {
layout
key={story.slug}
onClick={() => setActiveIdx(index)}
- className="text-left flex flex-col items-start gap-8 overflow-hidden transition-opacity hover:opacity-90"
+ className="text-left flex flex-col items-start gap-8 overflow-hidden"
style={{
- background: isActive ? story.bgGradient : story.dimBgColor,
+ background: story.bgGradient,
borderRadius: 8,
padding: isActive ? ACTIVE_PAD : `${ACTIVE_PAD}px ${INACTIVE_PAD}px`,
boxShadow: isDark
@@ -250,7 +269,8 @@ export function CustomerStoriesSection() {
{/* Top: company name + tagline */}
-
-
+
+
{story.name}
-
-
+
{story.tagline}
-
-
+
+
{/* Bottom: quote + author */}
-
-
+
"{story.quote}"
-
-
+
+
-
{story.author}
-
-
+
+
Read the story →
-
+
)
@@ -314,7 +341,7 @@ export function CustomerStoriesSection() {
{/* AI Builder stories */}
-
+
Powering the next wave
@@ -336,7 +363,7 @@ export function CustomerStoriesSection() {
{/* Photo background */}
{/* Dark gradient overlay — heavier at bottom */}
-
+
+
{/* Logo + description at bottom */}
@@ -362,27 +390,6 @@ export function CustomerStoriesSection() {
))}
-
- {/* Builder logo strip — full width below */}
-
- {[
- { name: 'Lovable', logo: '/images/logos/publicity/lovable.svg' },
- { name: 'Figma', logo: '/images/logos/publicity/figma.svg' },
- { name: 'v0', logo: '/images/logos/publicity/v0.svg' },
- { name: 'Bolt', logo: '/images/logos/publicity/bolt.svg' },
- { name: 'Tempo', logo: '/images/logos/publicity/tempo.svg' },
- { name: 'Gumloop', logo: '/images/logos/publicity/gumloop.svg' },
- { name: 'Pika', logo: '/images/logos/publicity/pika.svg' },
- { name: 'Udio', logo: '/images/logos/publicity/udio.svg' },
- ].map((b) => (
-
- ))}
-
diff --git a/apps/www/public/images/customers/logos/rally-icon.svg b/apps/www/public/images/customers/logos/rally-icon.svg
new file mode 100644
index 00000000000..3d1da318649
--- /dev/null
+++ b/apps/www/public/images/customers/logos/rally-icon.svg
@@ -0,0 +1,3 @@
+
+
+