mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 01:15:03 +03:00
chore(www): rename customer logo folders to on-dark and on-light (#48962)
## What kind of change does this PR introduce?
Chore: rename customer logo folders and document the theme contract. No
intended visual change, aside from Phoenix Energy whose two marks were
in the wrong folders.
## What is the current behavior?
Customer logos live at:
- `/images/customers/logos/{slug}.png` (`logo`, light mode)
- `/images/customers/logos/light/{slug}.png` (`logo_inverse`, dark mode)
`light/` actually means “use me on a dark background”.
## What is the new behavior?
Same assets, clearer paths:
- `/images/customers/logos/on-light/{slug}.png` → dark/black mark →
`logo` → light mode
- `/images/customers/logos/on-dark/{slug}.png` → light/white mark →
`logo_inverse` → dark mode
Icon chips stay at `/images/customers/logos/{slug}-icon.svg`. Old
`/images/customers/logos/light/*` URLs redirect to `on-dark`. www README
now has the contract.
# To test
Use the [www
preview](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app).
Toggle light/dark from the site header on each page. Logos should stay
readable (no white-on-white or black-on-black).
1. [Customers
grid](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/customers)
— main `logo` / `logo_inverse` surface. Spot-check Juniver, Phoenix
Energy, and one other card.
2. [Phoenix Energy
story](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/customers/phoenix-energy)
— story header uses `logo` only (on-light, plus a dark-mode brightness
filter). We swapped this pair.
3.
[Homepage](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/)
— “How industry leaders…” section. Icon chips only (`*-icon.svg`); the
wordmark `logo` field is unused here.
4. [Solutions /
Agents](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/agents)
— Chatbase quote near the top shows both theme variants. Same pattern on
[/healthcare](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/healthcare),
[/finserv](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/finserv),
and
[/b2b-saas](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/b2b-saas).
5. [Contact
sales](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/contact/sales)
— Good Tape / Xendit / Chatbase wordmarks (`on-light`). Same logos on
the demo form at
[/solutions/enterprise](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/enterprise).
6.
[Enterprise](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/solutions/enterprise)
— Mozilla / Epsilon3 / Pebblely icons in the use-cases section
(`on-dark`).
7.
[Vector](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/modules/vector)
— customer quotes. This is the only page that builds `on-light` /
`on-dark` paths at runtime from the customer slug.
8. [Mobbin
event](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/events/migrating-from-firebase-mobbin)
— company logo uses event `logo` / `logo_light` (dark vs light).
Optional second:
[/events/scale-to-millions-goodtape-auth](https://zone-www-dot-com-git-dnywh-chorecustomer-logo-o-0d7bc1-supabase.vercel.app/events/scale-to-millions-goodtape-auth).
Quick extra: hover **Product** in the site nav. The customer story
thumbnail uses `imgUrl` (`on-light`).
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Documentation
- Clarified customer logo requirements, including separate light and
dark asset locations, monochrome formats, and dark PNG assets for image
generation.
## Updates
- Standardized customer logos across stories, events, sales pages,
solution pages, testimonials, and generated images.
- Improved logo rendering across light and dark themes with dedicated
variants.
- Added permanent redirects for legacy logo URLs while preserving
filename suffixes.
## Tests
- Added coverage verifying legacy logo redirects resolve correctly,
including supported exceptions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
1 parent
cd906a176a
commit
2e7a8a3362
164 files changed
+348
-236
No files matched your search
+21
-4
@@ -12,7 +12,7 @@ To get started copy the example env file using `cp .env.local.example .env.local
|
||||
|
||||
- **Resize images**: All new images should be resized to only the maximum resolution needed when rendering on the frontend. Don't upload images larger than what will be displayed.
|
||||
- **Compress images**: All new images should be compressed before committing. Use tools like Clop or ImageOptim to reduce file size without noticeable quality loss.
|
||||
- **Image locations**: Store blog post images in `apps/www/public/images/blog/`. Event images go in `apps/www/public/images/events/`.
|
||||
- **Image locations**: Store blog post images in `apps/www/public/images/blog/`. Event images go in `apps/www/public/images/events/`. Customer logos go in `apps/www/public/images/customers/logos/on-light/` and `on-dark/` (see Customer Stories below).
|
||||
|
||||
### OG image generation
|
||||
|
||||
@@ -196,6 +196,21 @@ Customer stories are defined in MDX files (`apps/www/_customers/*.mdx`) and use
|
||||
|
||||
Do not include an `og_image` field in customer story frontmatter. It will be ignored. OG images are always generated dynamically.
|
||||
|
||||
**Logos**
|
||||
|
||||
Customer logos are monochrome and transparent. Prefer SVG; PNG is also fine. Put each theme variant in the folder named for the background it sits on:
|
||||
|
||||
| Folder | Mark | Frontmatter | Shown in |
|
||||
| ----------------------------------- | ----------- | -------------- | ---------- |
|
||||
| `/images/customers/logos/on-light/` | Dark/black | `logo` | Light mode |
|
||||
| `/images/customers/logos/on-dark/` | Light/white | `logo_inverse` | Dark mode |
|
||||
|
||||
Do not use coloured brand marks. Preview `/customers` in both themes before merging.
|
||||
|
||||
Icon-only assets (homepage chips, etc.) stay at `/images/customers/logos/{slug}-icon.svg`.
|
||||
|
||||
Customer story OG images are generated by the `og-images` Edge Function, which fetches `https://supabase.com/images/customers/logos/on-dark/{slug}.png`. Satori cannot rasterise SVG, so stories still need an `on-dark/{slug}.png` even if the site uses SVG.
|
||||
|
||||
**Example** (in `apps/www/_customers/company-abc.mdx`):
|
||||
|
||||
```yaml
|
||||
@@ -203,7 +218,8 @@ Do not include an `og_image` field in customer story frontmatter. It will be ign
|
||||
name: Company ABC
|
||||
title: Company ABC built their platform with Supabase
|
||||
# DO NOT include og_image - it's generated automatically
|
||||
logo: /images/customers/logos/company-abc.png
|
||||
logo: /images/customers/logos/on-light/company-abc.svg
|
||||
logo_inverse: /images/customers/logos/on-dark/company-abc.svg
|
||||
---
|
||||
```
|
||||
|
||||
@@ -221,8 +237,9 @@ logo: /images/customers/logos/company-abc.png
|
||||
title: 'Company ABC built their platform with Supabase',
|
||||
description: '...',
|
||||
organization: 'Company ABC',
|
||||
imgUrl: 'images/customers/logos/company-abc.png', // Full path from public/
|
||||
logo: '/images/customers/logos/company-abc.png',
|
||||
imgUrl: 'images/customers/logos/on-light/company-abc.svg', // Full path from public/
|
||||
logo: '/images/customers/logos/on-light/company-abc.svg',
|
||||
logo_inverse: '/images/customers/logos/on-dark/company-abc.svg',
|
||||
url: '/customers/company-abc',
|
||||
}
|
||||
```
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/asap-work.png
|
||||
logo_inverse: /images/customers/logos/light/asap-work.png
|
||||
logo: /images/customers/logos/on-light/asap-work.png
|
||||
logo_inverse: /images/customers/logos/on-dark/asap-work.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-02-28'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: paul_copplestone
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/berriai.png
|
||||
logo_inverse: /images/customers/logos/light/berriai.png
|
||||
logo: /images/customers/logos/on-light/berriai.png
|
||||
logo_inverse: /images/customers/logos/on-dark/berriai.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-06-06'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/bree.png
|
||||
logo_inverse: /images/customers/logos/light/bree.png
|
||||
logo: /images/customers/logos/on-light/bree.png
|
||||
logo_inverse: /images/customers/logos/on-dark/bree.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-04-08'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/brevo.png
|
||||
logo_inverse: /images/customers/logos/light/brevo.png
|
||||
logo: /images/customers/logos/on-light/brevo.png
|
||||
logo_inverse: /images/customers/logos/on-dark/brevo.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-12-18'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/chatbase.png
|
||||
logo_inverse: /images/customers/logos/light/chatbase.png
|
||||
logo: /images/customers/logos/on-light/chatbase.png
|
||||
logo_inverse: /images/customers/logos/on-dark/chatbase.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2026-05-18T08:00:00Z'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/cofounder.png
|
||||
logo_inverse: /images/customers/logos/light/cofounder.png
|
||||
logo: /images/customers/logos/on-light/cofounder.png
|
||||
logo_inverse: /images/customers/logos/on-dark/cofounder.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2026-05-04'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/delightai.png
|
||||
logo_inverse: /images/customers/logos/light/delightai.png
|
||||
logo: /images/customers/logos/on-light/delightai.png
|
||||
logo_inverse: /images/customers/logos/on-dark/delightai.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2026-07-08'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/deriv.png
|
||||
logo_inverse: /images/customers/logos/light/deriv.png
|
||||
logo: /images/customers/logos/on-light/deriv.png
|
||||
logo_inverse: /images/customers/logos/on-dark/deriv.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-03-06'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/drew-crew.png
|
||||
logo_inverse: /images/customers/logos/light/drew-crew.png
|
||||
logo: /images/customers/logos/on-light/drew-crew.png
|
||||
logo_inverse: /images/customers/logos/on-dark/drew-crew.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2026-07-08'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: paul_copplestone
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/e2b.png
|
||||
logo_inverse: /images/customers/logos/light/e2b.png
|
||||
logo: /images/customers/logos/on-light/e2b.png
|
||||
logo_inverse: /images/customers/logos/on-dark/e2b.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2024-12-09'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: rory_wilding
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/epsilon3.png
|
||||
logo_inverse: /images/customers/logos/light/epsilon3.png
|
||||
logo: /images/customers/logos/on-light/epsilon3.png
|
||||
logo_inverse: /images/customers/logos/on-dark/epsilon3.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-02-14'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/euka.png
|
||||
logo_inverse: /images/customers/logos/light/euka.png
|
||||
logo: /images/customers/logos/on-light/euka.png
|
||||
logo_inverse: /images/customers/logos/on-dark/euka.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-04-29'
|
||||
|
||||
@@ -7,8 +7,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/exprealty.png
|
||||
logo_inverse: /images/customers/logos/light/exprealty.png
|
||||
logo: /images/customers/logos/on-light/exprealty.png
|
||||
logo_inverse: /images/customers/logos/on-dark/exprealty.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-12-17'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: paul_copplestone
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/firecrawl.png
|
||||
logo_inverse: /images/customers/logos/light/firecrawl.png
|
||||
logo: /images/customers/logos/on-light/firecrawl.png
|
||||
logo_inverse: /images/customers/logos/on-dark/firecrawl.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-05-05'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: paul_copplestone
|
||||
author_title: CEO and Cofounder
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/good-tape.png
|
||||
logo_inverse: /images/customers/logos/light/good-tape.png
|
||||
logo: /images/customers/logos/on-light/good-tape.png
|
||||
logo_inverse: /images/customers/logos/on-dark/good-tape.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-10-31'
|
||||
|
||||
@@ -7,8 +7,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/govsignals.png
|
||||
logo_inverse: /images/customers/logos/light/govsignals.png
|
||||
logo: /images/customers/logos/on-light/govsignals.png
|
||||
logo_inverse: /images/customers/logos/on-dark/govsignals.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-12-16'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: rory_wilding
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/happyteams.png
|
||||
logo_inverse: /images/customers/logos/light/happyteams.png
|
||||
logo: /images/customers/logos/on-light/happyteams.png
|
||||
logo_inverse: /images/customers/logos/on-dark/happyteams.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-02-16'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: paul_copplestone
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/humata.png
|
||||
logo_inverse: /images/customers/logos/light/humata.png
|
||||
logo: /images/customers/logos/on-light/humata.png
|
||||
logo_inverse: /images/customers/logos/on-dark/humata.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2024-10-01'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/hyper.png
|
||||
logo_inverse: /images/customers/logos/light/hyper.png
|
||||
logo: /images/customers/logos/on-light/hyper.png
|
||||
logo_inverse: /images/customers/logos/on-dark/hyper.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-12-19'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/juniver.png
|
||||
logo_inverse: /images/customers/logos/light/juniver.png
|
||||
logo: /images/customers/logos/on-light/juniver.png
|
||||
logo_inverse: /images/customers/logos/on-dark/juniver.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-01-15'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/kayhanspace.png
|
||||
logo_inverse: /images/customers/logos/light/kayhanspace.png
|
||||
logo: /images/customers/logos/on-light/kayhanspace.png
|
||||
logo_inverse: /images/customers/logos/on-dark/kayhanspace.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-05-21'
|
||||
|
||||
@@ -7,8 +7,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/koodos.png
|
||||
logo_inverse: /images/customers/logos/light/koodos.png
|
||||
logo: /images/customers/logos/on-light/koodos.png
|
||||
logo_inverse: /images/customers/logos/on-dark/koodos.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-12-16'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/lovable.png
|
||||
logo_inverse: /images/customers/logos/light/lovable.png
|
||||
logo: /images/customers/logos/on-light/lovable.png
|
||||
logo_inverse: /images/customers/logos/on-dark/lovable.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2026-07-09'
|
||||
|
||||
@@ -8,8 +8,8 @@ description: Discover how Maergo, a nationwide expedited parcel delivery service
|
||||
meta_description: 'Discover how Maergo, a nationwide expedited parcel delivery service, reduced its codebase by 90%, decreased deployment times to just seconds, and achieved unprecedented scalability with Supabase.'
|
||||
author: michael_ridley
|
||||
author_title: Product Marketing
|
||||
logo: /images/customers/logos/maergo.png
|
||||
logo_inverse: /images/customers/logos/light/maergo.png
|
||||
logo: /images/customers/logos/on-light/maergo.png
|
||||
logo_inverse: /images/customers/logos/on-dark/maergo.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2024-06-12'
|
||||
|
||||
@@ -7,8 +7,8 @@ author: paul_copplestone
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/markprompt.png
|
||||
logo_inverse: /images/customers/logos/light/markprompt.png
|
||||
logo: /images/customers/logos/on-light/markprompt.png
|
||||
logo_inverse: /images/customers/logos/on-dark/markprompt.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-05-17'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/meshy.png
|
||||
logo_inverse: /images/customers/logos/light/meshy.png
|
||||
logo: /images/customers/logos/on-light/meshy.png
|
||||
logo_inverse: /images/customers/logos/on-dark/meshy.png
|
||||
company_url: 'https://www.meshy.ai/'
|
||||
tags:
|
||||
- supabase
|
||||
|
||||
@@ -10,8 +10,8 @@ author: rory_wilding
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/mobbin.png
|
||||
logo_inverse: /images/customers/logos/light/mobbin.png
|
||||
logo: /images/customers/logos/on-light/mobbin.png
|
||||
logo_inverse: /images/customers/logos/on-dark/mobbin.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-02-14'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: dave_wilson
|
||||
author_title: Customer Success Manager
|
||||
author_url: https://www.linkedin.com/in/david-wilson-285564140/
|
||||
author_image_url: https://media.licdn.com/dms/image/D4E03AQFurngYIRSHWQ/profile-displayphoto-shrink_200_200/0/1698406772235?e=1704931200&v=beta&t=Va55bBVbke2LzcEs5ReBOslLN_l3E8aqEeaQZv36sCA
|
||||
logo: /images/customers/logos/next-door-lending.png
|
||||
logo_inverse: /images/customers/logos/light/next-door-lending.png
|
||||
logo: /images/customers/logos/on-light/next-door-lending.png
|
||||
logo_inverse: /images/customers/logos/on-dark/next-door-lending.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-11-08'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: paul_copplestone
|
||||
author_title: CEO and Cofounder
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/pebblely.png
|
||||
logo_inverse: /images/customers/logos/light/pebblely.png
|
||||
logo: /images/customers/logos/on-light/pebblely.png
|
||||
logo_inverse: /images/customers/logos/on-dark/pebblely.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-09-29'
|
||||
|
||||
@@ -7,8 +7,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/light/phoenix-energy.png
|
||||
logo_inverse: /images/customers/logos/phoenix-energy.png
|
||||
logo: /images/customers/logos/on-light/phoenix-energy.png
|
||||
logo_inverse: /images/customers/logos/on-dark/phoenix-energy.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-11-13'
|
||||
|
||||
@@ -4,8 +4,8 @@ title: How QA.tech built enterprise-ready AI testing agents on Supabase
|
||||
description: QA.tech is an autonomous AI testing platform whose QA agents run end-to-end testing of web and mobile products by goal and intent. Three years on Supabase took QA.tech from three founders to a global customer base, enterprise-scale daily test volume, and SOC 2 compliance.
|
||||
author: wendie_cheung
|
||||
author_title: Product Marketing
|
||||
logo: /images/customers/logos/qa-tech.png
|
||||
logo_inverse: /images/customers/logos/light/qa-tech.png
|
||||
logo: /images/customers/logos/on-light/qa-tech.png
|
||||
logo_inverse: /images/customers/logos/on-dark/qa-tech.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2026-08-04'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/quilia.png
|
||||
logo_inverse: /images/customers/logos/light/quilia.png
|
||||
logo: /images/customers/logos/on-light/quilia.png
|
||||
logo_inverse: /images/customers/logos/on-dark/quilia.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-03-08'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: rory_wilding
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/quivr.png
|
||||
logo_inverse: /images/customers/logos/light/quivr.png
|
||||
logo: /images/customers/logos/on-light/quivr.png
|
||||
logo_inverse: /images/customers/logos/on-dark/quivr.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-09-05'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/rally.png
|
||||
logo_inverse: /images/customers/logos/light/rally.png
|
||||
logo: /images/customers/logos/on-light/rally.png
|
||||
logo_inverse: /images/customers/logos/on-dark/rally.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-10-21'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: rory_wilding
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/replenysh.png
|
||||
logo_inverse: /images/customers/logos/light/replenysh.png
|
||||
logo: /images/customers/logos/on-light/replenysh.png
|
||||
logo_inverse: /images/customers/logos/on-dark/replenysh.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-02-14'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/resend.png
|
||||
logo_inverse: /images/customers/logos/light/resend.png
|
||||
logo: /images/customers/logos/on-light/resend.png
|
||||
logo_inverse: /images/customers/logos/on-dark/resend.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-02-21'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: paul_copplestone
|
||||
author_title: CEO and Cofounder
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/shotgun.png
|
||||
logo_inverse: /images/customers/logos/light/shotgun.png
|
||||
logo: /images/customers/logos/on-light/shotgun.png
|
||||
logo_inverse: /images/customers/logos/on-dark/shotgun.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-11-30'
|
||||
|
||||
@@ -8,8 +8,8 @@ description: Discover how Tinloof, a full-stack development agency, managed and
|
||||
meta_description: Discover Tinloof, how a full-stack development agency, managed and scaled backend services using Supabase, without having to dedicate resources to infrastructure management.
|
||||
author: michael_ridley
|
||||
author_title: Product Marketing
|
||||
logo: /images/customers/logos/tinloof.png
|
||||
logo_inverse: /images/customers/logos/light/tinloof.png
|
||||
logo: /images/customers/logos/on-light/tinloof.png
|
||||
logo_inverse: /images/customers/logos/on-dark/tinloof.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2024-06-04'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: prashant
|
||||
author_title: Prashant Sridharan
|
||||
author_url: https://github.com/CoolAssPuppy
|
||||
author_image_url: https://avatars.githubusercontent.com/u/914007?v=4
|
||||
logo: /images/customers/logos/udio.png
|
||||
logo_inverse: /images/customers/logos/light/udio.png
|
||||
logo: /images/customers/logos/on-light/udio.png
|
||||
logo_inverse: /images/customers/logos/on-dark/udio.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2025-05-21'
|
||||
|
||||
@@ -8,8 +8,8 @@ description: 'Learn how Voypost leveraged Supabase to avoid NoSQL workarounds, e
|
||||
meta_description: 'Learn how Voypost leveraged Supabase to avoid NoSQL workarounds, enhance scalability, and deliver a superior user experience for Inkly, an intelligent contract negotiation platform.'
|
||||
author: michael_ridley
|
||||
author_title: Proudct Marketing
|
||||
logo: /images/customers/logos/voypost.png
|
||||
logo_inverse: /images/customers/logos/light/voypost.png
|
||||
logo: /images/customers/logos/on-light/voypost.png
|
||||
logo_inverse: /images/customers/logos/on-dark/voypost.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2024-06-04'
|
||||
|
||||
@@ -10,8 +10,8 @@ author: rory_wilding
|
||||
author_title: Supabase
|
||||
author_url: https://github.com/kiwicopple
|
||||
author_image_url: https://avatars2.githubusercontent.com/u/10214025?s=400&u=c6775be2ae667e2acae3ccd347fed62bb3f5b3e7&v=4
|
||||
logo: /images/customers/logos/xendit.png
|
||||
logo_inverse: /images/customers/logos/light/xendit.png
|
||||
logo: /images/customers/logos/on-light/xendit.png
|
||||
logo_inverse: /images/customers/logos/on-dark/xendit.png
|
||||
tags:
|
||||
- supabase
|
||||
date: '2023-02-14'
|
||||
|
||||
@@ -13,8 +13,8 @@ duration: 45 mins
|
||||
company:
|
||||
name: Good Tape
|
||||
website_url: 'https://goodtape.io/'
|
||||
logo: /images/customers/logos/light/good-tape.png
|
||||
logo_light: /images/customers/logos/good-tape.png
|
||||
logo: /images/customers/logos/on-dark/good-tape.png
|
||||
logo_light: /images/customers/logos/on-light/good-tape.png
|
||||
categories:
|
||||
- webinar
|
||||
main_cta:
|
||||
|
||||
@@ -13,8 +13,8 @@ duration: 45 mins
|
||||
company:
|
||||
name: Mobbin
|
||||
website_url: 'https://mobbin.com/'
|
||||
logo: /images/customers/logos/light/mobbin.png
|
||||
logo_light: /images/customers/logos/mobbin.png
|
||||
logo: /images/customers/logos/on-dark/mobbin.png
|
||||
logo_light: /images/customers/logos/on-light/mobbin.png
|
||||
categories:
|
||||
- webinar
|
||||
main_cta:
|
||||
|
||||
@@ -48,7 +48,11 @@ const page: GoPageInput = {
|
||||
href="https://stigg.io"
|
||||
className="flex flex-col items-center gap-4 rounded-xl border border-muted p-8 text-center transition-colors hover:border-foreground-muted hover:bg-surface-100"
|
||||
>
|
||||
<img src="/images/customers/logos/stigg.svg" alt="Stigg" className="h-10 w-auto" />
|
||||
<img
|
||||
src="/images/customers/logos/on-light/stigg.svg"
|
||||
alt="Stigg"
|
||||
className="h-10 w-auto"
|
||||
/>
|
||||
<h3 className="text-foreground font-medium text-lg">Stigg</h3>
|
||||
<p className="text-foreground-light text-sm leading-relaxed">
|
||||
Monetization layer for AI products
|
||||
|
||||
@@ -10,7 +10,7 @@ import SectionContainer from '@/components/Layouts/SectionContainer'
|
||||
const customerStories = [
|
||||
{
|
||||
name: 'Firecrawl',
|
||||
logo: '/images/customers/logos/firecrawl.png',
|
||||
logo: '/images/customers/logos/on-light/firecrawl.png',
|
||||
icon: '/images/customers/logos/firecrawl-icon.svg',
|
||||
tagline: 'Switched from Pinecone to Supabase Vector to boost efficiency and accuracy.',
|
||||
quote:
|
||||
@@ -28,7 +28,7 @@ const customerStories = [
|
||||
},
|
||||
{
|
||||
name: 'Rally',
|
||||
logo: '/images/customers/logos/rally.png',
|
||||
logo: '/images/customers/logos/on-light/rally.png',
|
||||
icon: '/images/customers/logos/rally-icon.svg',
|
||||
rawIcon: true,
|
||||
tagline: 'From first line of code to fully licensed fintech in three months.',
|
||||
@@ -45,7 +45,7 @@ const customerStories = [
|
||||
},
|
||||
{
|
||||
name: 'Hyper',
|
||||
logo: '/images/customers/logos/hyper.png',
|
||||
logo: '/images/customers/logos/on-light/hyper.png',
|
||||
icon: '/images/customers/logos/hyper-icon.svg',
|
||||
tagline: 'An AI-native marketing platform with agents that operate across the entire workflow.',
|
||||
quote:
|
||||
@@ -60,7 +60,7 @@ const customerStories = [
|
||||
},
|
||||
{
|
||||
name: 'E2B',
|
||||
logo: '/images/customers/logos/e2b.png',
|
||||
logo: '/images/customers/logos/on-light/e2b.png',
|
||||
icon: '/images/customers/logos/e2b-icon.svg',
|
||||
tagline: 'Secure, scalable execution of AI-generated code in the cloud.',
|
||||
quote:
|
||||
@@ -78,7 +78,7 @@ const customerStories = [
|
||||
},
|
||||
{
|
||||
name: 'Mobbin',
|
||||
logo: '/images/customers/logos/mobbin.png',
|
||||
logo: '/images/customers/logos/on-light/mobbin.png',
|
||||
icon: '/images/customers/logos/mobbin-icon.svg',
|
||||
tagline: 'Migrated 200,000 users from Firebase for a better authentication experience.',
|
||||
quote:
|
||||
|
||||
@@ -62,8 +62,8 @@ const compositionCols: CompositionColType[] = [
|
||||
type: 'narrow',
|
||||
cards: [
|
||||
{
|
||||
logo: '/images/customers/logos/1password.png',
|
||||
logo_inverse: '/images/customers/logos/light/1password.png',
|
||||
logo: '/images/customers/logos/on-light/1password.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/1password.png',
|
||||
organization: '1Password',
|
||||
},
|
||||
getCustomer('Next Door Lending', true),
|
||||
@@ -78,8 +78,8 @@ const compositionCols: CompositionColType[] = [
|
||||
cards: [
|
||||
getCustomer('Shotgun', true),
|
||||
{
|
||||
logo: '/images/customers/logos/mozilla.png',
|
||||
logo_inverse: '/images/customers/logos/light/mozilla.png',
|
||||
logo: '/images/customers/logos/on-light/mozilla.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/mozilla.png',
|
||||
organization: 'Mozilla',
|
||||
linked: false,
|
||||
},
|
||||
|
||||
@@ -21,7 +21,12 @@ const UseCases: FC<Props> = (props) => {
|
||||
className="hidden md:flex"
|
||||
tabs={[
|
||||
{
|
||||
label: <CustomerLogo title="Goodtape" logo="/images/customers/logos/good-tape.png" />,
|
||||
label: (
|
||||
<CustomerLogo
|
||||
title="Goodtape"
|
||||
logo="/images/customers/logos/on-light/good-tape.png"
|
||||
/>
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
quote="My biggest regret is not having gone with Supabase from the beginning."
|
||||
@@ -30,7 +35,9 @@ const UseCases: FC<Props> = (props) => {
|
||||
),
|
||||
},
|
||||
{
|
||||
label: <CustomerLogo title="Xendit" logo="/images/customers/logos/xendit.png" />,
|
||||
label: (
|
||||
<CustomerLogo title="Xendit" logo="/images/customers/logos/on-light/xendit.png" />
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
quote="The full solution was built and in production in less than one week."
|
||||
@@ -39,7 +46,12 @@ const UseCases: FC<Props> = (props) => {
|
||||
),
|
||||
},
|
||||
{
|
||||
label: <CustomerLogo title="Chatbase" logo="/images/customers/logos/chatbase.png" />,
|
||||
label: (
|
||||
<CustomerLogo
|
||||
title="Chatbase"
|
||||
logo="/images/customers/logos/on-light/chatbase.png"
|
||||
/>
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
quote="Supabase is great because it has everything. I don’t need a different solution for authentication, a different solution for database, or a different solution for storage."
|
||||
@@ -56,7 +68,12 @@ const UseCases: FC<Props> = (props) => {
|
||||
className="md:hidden mt-4"
|
||||
tabs={[
|
||||
{
|
||||
label: <CustomerLogo title="Goodtape" logo="/images/customers/logos/good-tape.png" />,
|
||||
label: (
|
||||
<CustomerLogo
|
||||
title="Goodtape"
|
||||
logo="/images/customers/logos/on-light/good-tape.png"
|
||||
/>
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
quote="My biggest regret is not having gone with Supabase from the beginning."
|
||||
@@ -65,7 +82,9 @@ const UseCases: FC<Props> = (props) => {
|
||||
),
|
||||
},
|
||||
{
|
||||
label: <CustomerLogo title="Xendit" logo="/images/customers/logos/xendit.png" />,
|
||||
label: (
|
||||
<CustomerLogo title="Xendit" logo="/images/customers/logos/on-light/xendit.png" />
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
quote="The full solution was built and in production in less than one week."
|
||||
@@ -74,7 +93,9 @@ const UseCases: FC<Props> = (props) => {
|
||||
),
|
||||
},
|
||||
{
|
||||
label: <CustomerLogo title="Chatbase" logo="/images/customers/logos/chatbase.png" />,
|
||||
label: (
|
||||
<CustomerLogo title="Chatbase" logo="/images/customers/logos/on-light/chatbase.png" />
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
quote="Supabase is great because it has everything. I don’t need a different solution for authentication, a different solution for database, or a different solution for storage."
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
import { LazyMotion, domAnimation, m, useInView } from 'framer-motion'
|
||||
import SectionContainer from '~/components/Layouts/SectionContainer'
|
||||
import CustomersVisual from '~/components/Products/VectorAI/CustomersVisual'
|
||||
import { getAnimation, INITIAL_BOTTOM } from '~/lib/animations'
|
||||
import { domAnimation, LazyMotion, m, useInView } from 'framer-motion'
|
||||
import { ArrowUpRight } from 'lucide-react'
|
||||
import { useTheme } from 'next-themes'
|
||||
import Image from 'next/image'
|
||||
@@ -6,10 +9,6 @@ import Link from 'next/link'
|
||||
import { useRouter } from 'next/router'
|
||||
import { useRef } from 'react'
|
||||
|
||||
import SectionContainer from '~/components/Layouts/SectionContainer'
|
||||
import CustomersVisual from '~/components/Products/VectorAI/CustomersVisual'
|
||||
import { INITIAL_BOTTOM, getAnimation } from '~/lib/animations'
|
||||
|
||||
interface Customer {
|
||||
type?: string
|
||||
avatar?: string
|
||||
@@ -41,7 +40,7 @@ const CustomerQuotesSection = (props: Props) => {
|
||||
|
||||
const Card = ({ customer, index }: Card) => {
|
||||
const { resolvedTheme } = useTheme()
|
||||
const logo = `/images/customers/logos/${!resolvedTheme?.includes('dark') ? '' : 'light/'}${
|
||||
const logo = `/images/customers/logos/${!resolvedTheme?.includes('dark') ? 'on-light/' : 'on-dark/'}${
|
||||
customer.customer
|
||||
}.png`
|
||||
|
||||
|
||||
@@ -24,9 +24,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'QA.tech is an autonomous AI testing platform whose QA agents run end-to-end testing of web and mobile products by goal and intent. Three years on Supabase took QA.tech from three founders to a global customer base, enterprise-scale daily test volume, and SOC 2 compliance.',
|
||||
organization: 'QA.tech',
|
||||
imgUrl: 'images/customers/logos/qa-tech.png',
|
||||
logo: '/images/customers/logos/qa-tech.png',
|
||||
logo_inverse: '/images/customers/logos/light/qa-tech.png',
|
||||
imgUrl: 'images/customers/logos/on-light/qa-tech.png',
|
||||
logo: '/images/customers/logos/on-light/qa-tech.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/qa-tech.png',
|
||||
url: '/customers/qa-tech',
|
||||
ctaText: 'View story',
|
||||
},
|
||||
@@ -36,9 +36,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
"Cofounder gives every customer an entire engineering, sales, marketing, support, and product team made of agents. Supabase for Platforms gives Cofounder the database platform to run an entire software company on every customer's behalf, from day one.",
|
||||
organization: 'Cofounder',
|
||||
imgUrl: 'images/customers/logos/cofounder.png',
|
||||
logo: '/images/customers/logos/cofounder.png',
|
||||
logo_inverse: '/images/customers/logos/light/cofounder.png',
|
||||
imgUrl: 'images/customers/logos/on-light/cofounder.png',
|
||||
logo: '/images/customers/logos/on-light/cofounder.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/cofounder.png',
|
||||
url: '/customers/cofounder',
|
||||
ctaText: 'View story',
|
||||
},
|
||||
@@ -48,9 +48,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Hyper is an AI-native marketing platform with agents that operate across the entire marketing workflow. Supabase gives their three-person team the database platform to do it at enterprise scale.',
|
||||
organization: 'Hyper',
|
||||
imgUrl: 'images/customers/logos/hyper.png',
|
||||
logo: '/images/customers/logos/hyper.png',
|
||||
logo_inverse: '/images/customers/logos/light/hyper.png',
|
||||
imgUrl: 'images/customers/logos/on-light/hyper.png',
|
||||
logo: '/images/customers/logos/on-light/hyper.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/hyper.png',
|
||||
url: '/customers/hyper',
|
||||
ctaText: 'View story',
|
||||
},
|
||||
@@ -61,9 +61,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
"Brevo's Revenue Operations team built three production AI workflows connecting their CRM to Dust's AI agents via Supabase MCP—without a single engineering ticket.",
|
||||
organization: 'Brevo',
|
||||
imgUrl: 'images/customers/logos/brevo.svg',
|
||||
logo: '/images/customers/logos/brevo.svg',
|
||||
logo_inverse: '/images/customers/logos/light/brevo.svg',
|
||||
imgUrl: 'images/customers/logos/on-light/brevo.png',
|
||||
logo: '/images/customers/logos/on-light/brevo.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/brevo.png',
|
||||
url: '/customers/brevo',
|
||||
ctaText: 'View story',
|
||||
},
|
||||
@@ -74,9 +74,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Juniver switched from Firebase to Supabase and saw immediate improvements in developer experience and performance.',
|
||||
organization: 'Juniver',
|
||||
imgUrl: 'images/customers/logos/juniver.png',
|
||||
logo: '/images/customers/logos/juniver.png',
|
||||
logo_inverse: '/images/customers/logos/light/juniver.png',
|
||||
imgUrl: 'images/customers/logos/on-light/juniver.png',
|
||||
logo: '/images/customers/logos/on-light/juniver.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/juniver.png',
|
||||
url: '/customers/juniver',
|
||||
},
|
||||
{
|
||||
@@ -85,9 +85,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'The Kayhan Space team migrated to Supabase from Amazon RDS and Auth0 to simplify infrastructure and unlock developer velocity.',
|
||||
organization: 'Kayhan Space',
|
||||
imgUrl: 'images/customers/logos/kayhanspace.png',
|
||||
logo: '/images/customers/logos/kayhanspace.png',
|
||||
logo_inverse: '/images/customers/logos/light/kayhanspace.png',
|
||||
imgUrl: 'images/customers/logos/on-light/kayhanspace.png',
|
||||
logo: '/images/customers/logos/on-light/kayhanspace.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/kayhanspace.png',
|
||||
url: '/customers/kayhanspace',
|
||||
},
|
||||
{
|
||||
@@ -96,9 +96,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Udio built a scalable, AI-driven music platform on a Supabase backend from day one.',
|
||||
organization: 'Udio',
|
||||
imgUrl: 'images/customers/logos/udio.png',
|
||||
logo: '/images/customers/logos/udio.png',
|
||||
logo_inverse: '/images/customers/logos/light/udio.png',
|
||||
imgUrl: 'images/customers/logos/on-light/udio.png',
|
||||
logo: '/images/customers/logos/on-light/udio.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/udio.png',
|
||||
url: '/customers/udio',
|
||||
},
|
||||
{
|
||||
@@ -107,9 +107,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Supabase helped Euka accelerate development, simplify AI feature rollout, and scale creator marketing faster than ever.',
|
||||
organization: 'Euka',
|
||||
imgUrl: 'images/customers/logos/euka.png',
|
||||
logo: '/images/customers/logos/euka.png',
|
||||
logo_inverse: '/images/customers/logos/light/euka.png',
|
||||
imgUrl: 'images/customers/logos/on-light/euka.png',
|
||||
logo: '/images/customers/logos/on-light/euka.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/euka.png',
|
||||
url: '/customers/euka',
|
||||
},
|
||||
{
|
||||
@@ -118,9 +118,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Discover how Bree found 10X performance gains, greater developer velocity, and a better foundation for AI when switching to Supabase.',
|
||||
organization: 'Bree',
|
||||
imgUrl: 'images/customers/logos/bree.png',
|
||||
logo: '/images/customers/logos/bree.png',
|
||||
logo_inverse: '/images/customers/logos/light/bree.png',
|
||||
imgUrl: 'images/customers/logos/on-light/bree.png',
|
||||
logo: '/images/customers/logos/on-light/bree.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/bree.png',
|
||||
url: '/customers/bree',
|
||||
},
|
||||
{
|
||||
@@ -128,9 +128,9 @@ export const data: CustomerStoryType[] = [
|
||||
title: 'Deriv: Accelerating Online Trading with a Scalable Postgres Backend',
|
||||
description: 'Accelerating Online Trading with a Scalable Postgres Backend',
|
||||
organization: 'Deriv',
|
||||
imgUrl: 'images/customers/logos/deriv.png',
|
||||
logo: '/images/customers/logos/deriv.png',
|
||||
logo_inverse: '/images/customers/logos/light/deriv.png',
|
||||
imgUrl: 'images/customers/logos/on-light/deriv.png',
|
||||
logo: '/images/customers/logos/on-light/deriv.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/deriv.png',
|
||||
url: '/customers/deriv',
|
||||
},
|
||||
{
|
||||
@@ -140,9 +140,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Migrating to Supabase resulted in a 75% reduction in development time, 50% lower costs, and enhanced security for sensitive client data.',
|
||||
organization: 'Quilia',
|
||||
imgUrl: 'images/customers/logos/quilia.png',
|
||||
logo: '/images/customers/logos/quilia.png',
|
||||
logo_inverse: '/images/customers/logos/light/quilia.png',
|
||||
imgUrl: 'images/customers/logos/on-light/quilia.png',
|
||||
logo: '/images/customers/logos/on-light/quilia.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/quilia.png',
|
||||
url: '/customers/quilia',
|
||||
},
|
||||
{
|
||||
@@ -151,9 +151,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Scaling seamlessly to 5,000+ paying customers & millions of emails sent daily with Supabase',
|
||||
organization: 'Resend',
|
||||
imgUrl: 'images/customers/logos/resend.png',
|
||||
logo: '/images/customers/logos/resend.png',
|
||||
logo_inverse: '/images/customers/logos/light/resend.png',
|
||||
imgUrl: 'images/customers/logos/on-light/resend.png',
|
||||
logo: '/images/customers/logos/on-light/resend.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/resend.png',
|
||||
url: '/customers/resend',
|
||||
},
|
||||
{
|
||||
@@ -162,9 +162,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Discover how a rapidly growing Meshy migrated from an expensive authentication model with Auth0 to Supabase Auth, and significantly reduced their costs.',
|
||||
organization: 'Meshy',
|
||||
imgUrl: 'images/customers/logos/meshy.png',
|
||||
logo: '/images/customers/logos/meshy.png',
|
||||
logo_inverse: '/images/customers/logos/light/meshy.png',
|
||||
imgUrl: 'images/customers/logos/on-light/meshy.png',
|
||||
logo: '/images/customers/logos/on-light/meshy.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/meshy.png',
|
||||
url: '/customers/meshy',
|
||||
ctaText: 'View story',
|
||||
},
|
||||
@@ -175,9 +175,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'asap.work is a construction recruitment startup founded by industry experts from Adecco and Manpower. Using their knowledge and experience of the construction recruitment industry, asap.work focuses on providing a fair marketplace for temporary construction workers and fair pricing for clients.',
|
||||
organization: 'Asap.work',
|
||||
imgUrl: 'images/customers/logos/asap-work.png',
|
||||
logo: '/images/customers/logos/asap-work.png',
|
||||
logo_inverse: '/images/customers/logos/light/asap-work.png',
|
||||
imgUrl: 'images/customers/logos/on-light/asap-work.png',
|
||||
logo: '/images/customers/logos/on-light/asap-work.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/asap-work.png',
|
||||
url: '/customers/asap-work',
|
||||
ctaText: 'View story',
|
||||
},
|
||||
@@ -188,9 +188,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Discover how Maergo, a nationwide expedited parcel delivery service, reduced its codebase by 90%, decreased deployment times to just seconds, and achieved unprecedented scalability with Supabase.',
|
||||
organization: 'Maergo',
|
||||
imgUrl: 'images/customers/logos/maergo.png',
|
||||
logo: '/images/customers/logos/maergo.png',
|
||||
logo_inverse: '/images/customers/logos/light/maergo.png',
|
||||
imgUrl: 'images/customers/logos/on-light/maergo.png',
|
||||
logo: '/images/customers/logos/on-light/maergo.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/maergo.png',
|
||||
url: '/customers/maergo',
|
||||
ctaText: 'View story',
|
||||
},
|
||||
@@ -200,9 +200,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Discover Tinloof, how a full-stack development agency, managed and scaled backend services using Supabase, without having to dedicate resources to infrastructure management.',
|
||||
organization: 'Tinloof',
|
||||
imgUrl: 'images/customers/logos/tinloof.png',
|
||||
logo: '/images/customers/logos/tinloof.png',
|
||||
logo_inverse: '/images/customers/logos/light/tinloof.png',
|
||||
imgUrl: 'images/customers/logos/on-light/tinloof.png',
|
||||
logo: '/images/customers/logos/on-light/tinloof.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/tinloof.png',
|
||||
url: '/customers/tinloof',
|
||||
ctaText: 'View story',
|
||||
},
|
||||
@@ -212,9 +212,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'How a bootstrapped startup migrated from Heroku to Supabase in 30 minutes and never looked back.',
|
||||
organization: 'HappyTeams',
|
||||
imgUrl: 'images/customers/logos/happyteams.png',
|
||||
logo: '/images/customers/logos/happyteams.png',
|
||||
logo_inverse: '/images/customers/logos/light/happyteams.png',
|
||||
imgUrl: 'images/customers/logos/on-light/happyteams.png',
|
||||
logo: '/images/customers/logos/on-light/happyteams.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/happyteams.png',
|
||||
url: '/customers/happyteams',
|
||||
ctaText: 'View story',
|
||||
},
|
||||
@@ -225,9 +225,9 @@ export const data: CustomerStoryType[] = [
|
||||
description:
|
||||
'Mobbin helps over 200,000 creators globally search and view the latest design patterns from well-known apps.',
|
||||
organization: 'Mobbin',
|
||||
imgUrl: 'images/customers/logos/mobbin.png',
|
||||
logo: '/images/customers/logos/mobbin.png',
|
||||
logo_inverse: '/images/customers/logos/light/mobbin.png',
|
||||
imgUrl: 'images/customers/logos/on-light/mobbin.png',
|
||||
logo: '/images/customers/logos/on-light/mobbin.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/mobbin.png',
|
||||
url: '/customers/mobbin',
|
||||
ctaText: 'View story',
|
||||
},
|
||||
@@ -236,9 +236,9 @@ export const data: CustomerStoryType[] = [
|
||||
title: 'Supabase migration drives shotgun to an 83% reduction in data infrastructure costs',
|
||||
description:
|
||||
"Explore how Shotgun achieved remarkable database efficiency and reduced costs by 80% through their successful migration to Supabase's managed services.",
|
||||
imgUrl: 'images/customers/logos/shotgun.png',
|
||||
logo: '/images/customers/logos/shotgun.png',
|
||||
logo_inverse: '/images/customers/logos/light/shotgun.png',
|
||||
imgUrl: 'images/customers/logos/on-light/shotgun.png',
|
||||
logo: '/images/customers/logos/on-light/shotgun.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/shotgun.png',
|
||||
organization: 'Shotgun',
|
||||
url: '/customers/shotgun',
|
||||
path: '/customers/shotgun',
|
||||
@@ -256,9 +256,9 @@ export const data: CustomerStoryType[] = [
|
||||
'Good Tape migrates to Supabase managed Postgres and Authentication and achieves database efficiency and a 60% cost reduction',
|
||||
description:
|
||||
"Explore how Good Tape achieved remarkable database efficiency and reduced costs by 60% through their successful migration to Supabase's managed services.",
|
||||
imgUrl: 'images/customers/logos/good-tape.png',
|
||||
logo: '/images/customers/logos/good-tape.png',
|
||||
logo_inverse: '/images/customers/logos/light/good-tape.png',
|
||||
imgUrl: 'images/customers/logos/on-light/good-tape.png',
|
||||
logo: '/images/customers/logos/on-light/good-tape.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/good-tape.png',
|
||||
organization: 'Good Tape',
|
||||
url: '/customers/good-tape',
|
||||
path: '/customers/good-tape',
|
||||
@@ -274,9 +274,9 @@ export const data: CustomerStoryType[] = [
|
||||
type: 'Customer Story',
|
||||
title: 'How Next Door Lending leveraged Supabase to become a top 10 mortgage broker',
|
||||
description: '',
|
||||
imgUrl: 'images/customers/logos/next-door-lending.png',
|
||||
logo: '/images/customers/logos/next-door-lending.png',
|
||||
logo_inverse: '/images/customers/logos/light/next-door-lending.png',
|
||||
imgUrl: 'images/customers/logos/on-light/next-door-lending.png',
|
||||
logo: '/images/customers/logos/on-light/next-door-lending.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/next-door-lending.png',
|
||||
organization: 'Next Door Lending',
|
||||
url: '/customers/next-door-lending',
|
||||
path: '/customers/next-door-lending',
|
||||
@@ -293,9 +293,9 @@ export const data: CustomerStoryType[] = [
|
||||
title: 'Scaling securely: one million users in 7 months protected with Supabase Auth',
|
||||
description:
|
||||
'Learn how Pebblely, an AI image generation company, used Supabase Auth for rapid growth and adaptable security solutions.',
|
||||
imgUrl: 'images/customers/logos/pebblely.png',
|
||||
logo: '/images/customers/logos/pebblely.png',
|
||||
logo_inverse: '/images/customers/logos/light/pebblely.png',
|
||||
imgUrl: 'images/customers/logos/on-light/pebblely.png',
|
||||
logo: '/images/customers/logos/on-light/pebblely.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/pebblely.png',
|
||||
organization: 'Pebblely',
|
||||
url: '/customers/pebblely',
|
||||
path: '/customers/pebblely',
|
||||
@@ -312,9 +312,9 @@ export const data: CustomerStoryType[] = [
|
||||
title: 'Chatbase goes upmarket on Supabase',
|
||||
description:
|
||||
'The consolidation play that took a single founder from zero to 10 million in ARR, and the bet that takes him to 100.',
|
||||
imgUrl: 'images/customers/logos/chatbase.png',
|
||||
logo: '/images/customers/logos/chatbase.png',
|
||||
logo_inverse: '/images/customers/logos/light/chatbase.png',
|
||||
imgUrl: 'images/customers/logos/on-light/chatbase.png',
|
||||
logo: '/images/customers/logos/on-light/chatbase.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/chatbase.png',
|
||||
organization: 'Chatbase',
|
||||
url: '/customers/chatbase',
|
||||
path: '/customers/chatbase',
|
||||
@@ -331,9 +331,9 @@ export const data: CustomerStoryType[] = [
|
||||
title: 'Quivr launch 5,000 Vector databases on Supabase.',
|
||||
description:
|
||||
'Learn how one of the most popular Generative AI projects uses Supabase as their Vector Store.',
|
||||
imgUrl: 'images/customers/logos/quivr.png',
|
||||
logo: '/images/customers/logos/quivr.png',
|
||||
logo_inverse: '/images/customers/logos/light/quivr.png',
|
||||
imgUrl: 'images/customers/logos/on-light/quivr.png',
|
||||
logo: '/images/customers/logos/on-light/quivr.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/quivr.png',
|
||||
organization: 'Quivr',
|
||||
url: '/customers/quivr',
|
||||
path: '/customers/quivr',
|
||||
@@ -350,9 +350,9 @@ export const data: CustomerStoryType[] = [
|
||||
title: 'Berri AI Boosts Productivity by Migrating from AWS RDS to Supabase with pgvector.',
|
||||
description:
|
||||
'Learn how Berri AI overcame challenges with self-hosting their vector database on AWS RDS and successfully migrated to Supabase.',
|
||||
imgUrl: 'images/customers/logos/berriai.png',
|
||||
logo: '/images/customers/logos/berriai.png',
|
||||
logo_inverse: '/images/customers/logos/light/berriai.png',
|
||||
imgUrl: 'images/customers/logos/on-light/berriai.png',
|
||||
logo: '/images/customers/logos/on-light/berriai.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/berriai.png',
|
||||
organization: 'Berri AI',
|
||||
url: '/customers/berriai',
|
||||
path: '/customers/berriai',
|
||||
@@ -369,9 +369,9 @@ export const data: CustomerStoryType[] = [
|
||||
title: 'Firecrawl switches from Pinecone to Supabase for PostgreSQL vector embeddings',
|
||||
description:
|
||||
'How Firecrawl boosts efficiency and accuracy of chat powered search for documentation using Supabase with pg_vector',
|
||||
imgUrl: 'images/customers/logos/firecrawl.png',
|
||||
logo: '/images/customers/logos/firecrawl.png',
|
||||
logo_inverse: '/images/customers/logos/light/firecrawl.png',
|
||||
imgUrl: 'images/customers/logos/on-light/firecrawl.png',
|
||||
logo: '/images/customers/logos/on-light/firecrawl.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/firecrawl.png',
|
||||
organization: 'Firecrawl.dev',
|
||||
url: '/customers/firecrawl',
|
||||
path: '/customers/firecrawl',
|
||||
@@ -388,9 +388,9 @@ export const data: CustomerStoryType[] = [
|
||||
title: 'HappyTeams unlocks better performance and reduces cost with Supabase.',
|
||||
description:
|
||||
'How a bootstrapped startup migrated from Heroku to Supabase in 30 minutes and never looked back.',
|
||||
imgUrl: 'images/customers/logos/happyteams.png',
|
||||
logo: '/images/customers/logos/happyteams.png',
|
||||
logo_inverse: '/images/customers/logos/light/happyteams.png',
|
||||
imgUrl: 'images/customers/logos/on-light/happyteams.png',
|
||||
logo: '/images/customers/logos/on-light/happyteams.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/happyteams.png',
|
||||
organization: 'HappyTeams',
|
||||
url: '/customers/happyteams',
|
||||
path: '/customers/happyteams',
|
||||
@@ -408,9 +408,9 @@ export const data: CustomerStoryType[] = [
|
||||
'Xendit use Supabase and create a full solution shipped to production in less than one week.',
|
||||
description:
|
||||
'As a payment processor, Xendit are responsible for verifying that all transactions are legal.',
|
||||
imgUrl: 'images/customers/logos/xendit.png',
|
||||
logo: '/images/customers/logos/xendit.png',
|
||||
logo_inverse: '/images/customers/logos/light/xendit.png',
|
||||
imgUrl: 'images/customers/logos/on-light/xendit.png',
|
||||
logo: '/images/customers/logos/on-light/xendit.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/xendit.png',
|
||||
organization: 'Xendit',
|
||||
url: '/customers/xendit',
|
||||
path: '/customers/xendit',
|
||||
@@ -427,9 +427,9 @@ export const data: CustomerStoryType[] = [
|
||||
title: 'Replenysh uses Supabase to implement OTP in less than 24 hours.',
|
||||
description:
|
||||
'With Supabase, Replenysh gets a slick auth experience, reduces DevOps overhead, and continues to scale with Postgres.',
|
||||
imgUrl: 'images/customers/logos/replenysh.png',
|
||||
logo: '/images/customers/logos/replenysh.png',
|
||||
logo_inverse: '/images/customers/logos/light/replenysh.png',
|
||||
imgUrl: 'images/customers/logos/on-light/replenysh.png',
|
||||
logo: '/images/customers/logos/on-light/replenysh.png',
|
||||
logo_inverse: '/images/customers/logos/on-dark/replenysh.png',
|
||||
organization: 'Replenysh',
|
||||
url: '/customers/replenysh',
|
||||
path: '/customers/replenysh',
|
||||
|
||||
@@ -59,7 +59,7 @@ export default {
|
||||
heading: <>Stay on the forefront</>,
|
||||
stories: [
|
||||
{
|
||||
icon: '/images/customers/logos/light/mozilla.png',
|
||||
icon: '/images/customers/logos/on-dark/mozilla.png',
|
||||
url: 'https://developer.mozilla.org/en-US/blog/introducing-ai-help/',
|
||||
target: '_blank',
|
||||
heading: 'Mozilla use Supabase for GenAI and RAG',
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
),
|
||||
},
|
||||
{
|
||||
icon: '/images/customers/logos/light/epsilon3.png',
|
||||
icon: '/images/customers/logos/on-dark/epsilon3.png',
|
||||
url: '/customers/epsilon3',
|
||||
heading: 'Epsilon3 use Supabase to build software for NASA',
|
||||
subheading: (
|
||||
@@ -88,7 +88,7 @@ export default {
|
||||
),
|
||||
},
|
||||
{
|
||||
icon: '/images/customers/logos/light/pebblely.png',
|
||||
icon: '/images/customers/logos/on-dark/pebblely.png',
|
||||
url: '/customers/pebblely',
|
||||
heading: 'Pebblely use Supabase to scale to millions of users.',
|
||||
subheading: (
|
||||
|
||||
@@ -299,7 +299,7 @@ docs.query(
|
||||
target: '_blank',
|
||||
quote:
|
||||
'We store embeddings in a PostgreSQL database, hosted by Supabase, to perform a similarity search to identify the most relevant sections within the MDN.',
|
||||
image: '/images/customers/logos/mozilla.png',
|
||||
image: '/images/customers/logos/on-light/mozilla.png',
|
||||
abstract:
|
||||
'MDN introduces an AI assistant powered by Supabase Vector to answer all web development questions in real time.',
|
||||
url: 'https://developer.mozilla.org/en-US/blog/introducing-ai-help/',
|
||||
@@ -312,7 +312,7 @@ docs.query(
|
||||
role: 'Founder of Quivr',
|
||||
quote:
|
||||
'Supabase Vector powered by pgvector allowed us to create a simple and efficient product. We are storing over 1.6 million embeddings and the performance and results are great. Open source develop can easily contribute thanks to the SQL syntax known by millions of developers.',
|
||||
image: '/images/customers/logos/quivr.png',
|
||||
image: '/images/customers/logos/on-light/quivr.png',
|
||||
abstract: 'Quivr launch 5,000 Vector databases on Supabase.',
|
||||
url: '/customers/quivr',
|
||||
},
|
||||
@@ -324,7 +324,7 @@ docs.query(
|
||||
role: 'CEO at Firecrawl',
|
||||
quote:
|
||||
'We tried other vector databases - we tried Faiss, we tried Weaviate, we tried Pinecone. If you’re just doing vector search they’re great, but if you need to store a bunch of metadata that becomes a huge pain.',
|
||||
image: '/images/customers/logos/firecrawl.png',
|
||||
image: '/images/customers/logos/on-light/firecrawl.png',
|
||||
abstract: 'Firecrawl switches from Pinecone to Supabase for PostgreSQL vector embeddings.',
|
||||
url: '/customers/firecrawl',
|
||||
},
|
||||
|
||||
@@ -121,14 +121,14 @@ const data: () => {
|
||||
logo: (
|
||||
<>
|
||||
<Image
|
||||
src="/images/customers/logos/chatbase.png"
|
||||
src="/images/customers/logos/on-light/chatbase.png"
|
||||
alt="Chatbase"
|
||||
width={128}
|
||||
height={48}
|
||||
className="object-contain w-24 md:w-32 dark:hidden"
|
||||
/>
|
||||
<Image
|
||||
src="/images/customers/logos/light/chatbase.png"
|
||||
src="/images/customers/logos/on-dark/chatbase.png"
|
||||
alt="Chatbase"
|
||||
width={128}
|
||||
height={48}
|
||||
@@ -320,7 +320,7 @@ const data: () => {
|
||||
customers: [
|
||||
{
|
||||
name: 'Hyper',
|
||||
logo: '/images/customers/logos/hyper.png',
|
||||
logo: '/images/customers/logos/on-light/hyper.png',
|
||||
highlights: [
|
||||
'100x cost reduction by having agents query SQL instead of live platform APIs',
|
||||
'Per-customer isolated databases for agencies managing hundreds of clients',
|
||||
@@ -329,13 +329,13 @@ const data: () => {
|
||||
},
|
||||
{
|
||||
name: 'Humata',
|
||||
logo: '/images/customers/logos/humata.png',
|
||||
logo: '/images/customers/logos/on-light/humata.png',
|
||||
highlights: ['AI-powered document analysis at scale'],
|
||||
cta: { label: 'Read the case study', href: '/customers/humata' },
|
||||
},
|
||||
{
|
||||
name: 'Chatbase',
|
||||
logo: '/images/customers/logos/chatbase.png',
|
||||
logo: '/images/customers/logos/on-light/chatbase.png',
|
||||
highlights: [
|
||||
'One of the most successful single-founder AI products',
|
||||
'Built entirely on Supabase',
|
||||
@@ -344,7 +344,7 @@ const data: () => {
|
||||
},
|
||||
{
|
||||
name: 'Markprompt',
|
||||
logo: '/images/customers/logos/markprompt.png',
|
||||
logo: '/images/customers/logos/on-light/markprompt.png',
|
||||
highlights: ['GDPR-compliant AI chatbots on Supabase'],
|
||||
cta: { label: 'Read the case study', href: '/customers/markprompt' },
|
||||
},
|
||||
|
||||
@@ -121,14 +121,14 @@ const data: () => {
|
||||
logo: (
|
||||
<>
|
||||
<Image
|
||||
src="/images/customers/logos/resend.png"
|
||||
src="/images/customers/logos/on-light/resend.png"
|
||||
alt="Resend"
|
||||
width={128}
|
||||
height={48}
|
||||
className="object-contain w-24 md:w-32 dark:hidden"
|
||||
/>
|
||||
<Image
|
||||
src="/images/customers/logos/light/resend.png"
|
||||
src="/images/customers/logos/on-dark/resend.png"
|
||||
alt="Resend"
|
||||
width={128}
|
||||
height={48}
|
||||
@@ -261,7 +261,7 @@ const data: () => {
|
||||
customers: [
|
||||
{
|
||||
name: 'Resend',
|
||||
logo: '/images/customers/logos/resend.png',
|
||||
logo: '/images/customers/logos/on-light/resend.png',
|
||||
highlights: [
|
||||
'Focus on building the best email infrastructure for developers',
|
||||
'Backend complexity handled by Supabase',
|
||||
@@ -270,7 +270,7 @@ const data: () => {
|
||||
},
|
||||
{
|
||||
name: 'Mobbin',
|
||||
logo: '/images/customers/logos/mobbin.png',
|
||||
logo: '/images/customers/logos/on-light/mobbin.png',
|
||||
highlights: [
|
||||
'Migrated 200,000 users from Firebase',
|
||||
'Better authentication experience at scale',
|
||||
@@ -279,7 +279,7 @@ const data: () => {
|
||||
},
|
||||
{
|
||||
name: 'Shotgun',
|
||||
logo: '/images/customers/logos/shotgun.png',
|
||||
logo: '/images/customers/logos/on-light/shotgun.png',
|
||||
highlights: [
|
||||
'83% reduction in data infrastructure costs',
|
||||
'Remarkable database efficiency through migration',
|
||||
@@ -288,7 +288,7 @@ const data: () => {
|
||||
},
|
||||
{
|
||||
name: 'Quilia',
|
||||
logo: '/images/customers/logos/quilia.png',
|
||||
logo: '/images/customers/logos/on-light/quilia.png',
|
||||
highlights: [
|
||||
'75% reduction in development time',
|
||||
'50% lower costs with enhanced security for sensitive client data',
|
||||
|
||||
@@ -120,14 +120,14 @@ const data: () => {
|
||||
logo: (
|
||||
<>
|
||||
<Image
|
||||
src="/images/customers/logos/deriv.png"
|
||||
src="/images/customers/logos/on-light/deriv.png"
|
||||
alt="Deriv"
|
||||
width={128}
|
||||
height={48}
|
||||
className="object-contain w-24 md:w-32 dark:hidden"
|
||||
/>
|
||||
<Image
|
||||
src="/images/customers/logos/light/deriv.png"
|
||||
src="/images/customers/logos/on-dark/deriv.png"
|
||||
alt="Deriv"
|
||||
width={128}
|
||||
height={48}
|
||||
@@ -261,7 +261,7 @@ const data: () => {
|
||||
customers: [
|
||||
{
|
||||
name: 'Deriv',
|
||||
logo: '/images/customers/logos/deriv.png',
|
||||
logo: '/images/customers/logos/on-light/deriv.png',
|
||||
highlights: [
|
||||
'Accelerating online trading with scalable Postgres',
|
||||
'Automation, integrations, and ecosystem',
|
||||
@@ -270,7 +270,7 @@ const data: () => {
|
||||
},
|
||||
{
|
||||
name: 'Bree',
|
||||
logo: '/images/customers/logos/bree.png',
|
||||
logo: '/images/customers/logos/on-light/bree.png',
|
||||
highlights: [
|
||||
'10X performance gains when switching from Fauna',
|
||||
'Greater developer velocity and AI-ready foundation',
|
||||
@@ -279,7 +279,7 @@ const data: () => {
|
||||
},
|
||||
{
|
||||
name: 'Next Door Lending',
|
||||
logo: '/images/customers/logos/next-door-lending.png',
|
||||
logo: '/images/customers/logos/on-light/next-door-lending.png',
|
||||
highlights: [
|
||||
'Top 10 mortgage broker with Supabase',
|
||||
'Leveraged Postgres for lending workflows',
|
||||
@@ -288,13 +288,13 @@ const data: () => {
|
||||
},
|
||||
{
|
||||
name: 'Rally',
|
||||
logo: '/images/customers/logos/rally.png',
|
||||
logo: '/images/customers/logos/on-light/rally.png',
|
||||
highlights: ['Building financial applications on Supabase'],
|
||||
cta: { label: 'Read the case study', href: '/customers/rally' },
|
||||
},
|
||||
{
|
||||
name: 'Xendit',
|
||||
logo: '/images/customers/logos/xendit.png',
|
||||
logo: '/images/customers/logos/on-light/xendit.png',
|
||||
highlights: [
|
||||
'Full solution shipped to production in less than one week',
|
||||
'Payment processor with transaction verification',
|
||||
|
||||
@@ -119,14 +119,14 @@ const data: () => {
|
||||
logo: (
|
||||
<>
|
||||
<Image
|
||||
src="/images/customers/logos/juniver.png"
|
||||
src="/images/customers/logos/on-light/juniver.png"
|
||||
alt="Juniver"
|
||||
width={128}
|
||||
height={48}
|
||||
className="object-contain w-24 md:w-32 dark:hidden"
|
||||
/>
|
||||
<Image
|
||||
src="/images/customers/logos/light/juniver.png"
|
||||
src="/images/customers/logos/on-dark/juniver.png"
|
||||
alt="Juniver"
|
||||
width={128}
|
||||
height={48}
|
||||
@@ -261,7 +261,7 @@ const data: () => {
|
||||
customers: [
|
||||
{
|
||||
name: 'Juniver',
|
||||
logo: '/images/customers/logos/juniver.png',
|
||||
logo: '/images/customers/logos/on-light/juniver.png',
|
||||
highlights: [
|
||||
'Automated B2B workflows with Edge Functions and RLS',
|
||||
'Improved developer experience and performance',
|
||||
|
||||
@@ -276,7 +276,7 @@ const data: () => {
|
||||
customers: [
|
||||
{
|
||||
name: 'eXp Realty',
|
||||
logo: '/images/customers/logos/exprealty.png',
|
||||
logo: '/images/customers/logos/on-light/exprealty.png',
|
||||
highlights: [
|
||||
'Saved $3M+ annually across multiple systems',
|
||||
'70+ vibe-coded applications in production',
|
||||
@@ -290,7 +290,7 @@ const data: () => {
|
||||
},
|
||||
{
|
||||
name: 'Accenture Innovation Labs',
|
||||
logo: '/images/customers/logos/accenture.svg',
|
||||
logo: '/images/customers/logos/on-light/accenture.svg',
|
||||
highlights: [
|
||||
'Prototype-to-production in hours, not months',
|
||||
'Avoiding AWS complexity and auto-shutdown policies',
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
module.exports = [
|
||||
{
|
||||
permanent: true,
|
||||
source: '/images/customers/logos/light/:path*',
|
||||
destination: '/images/customers/logos/on-dark/:path*',
|
||||
},
|
||||
// Legacy root wordmarks moved to on-light/. Keep dreambase-mark.png at logos/ root.
|
||||
{
|
||||
permanent: true,
|
||||
source: '/images/customers/logos/:slug((?!dreambase-mark\\.png)[^/.]+).png',
|
||||
destination: '/images/customers/logos/on-light/:slug.png',
|
||||
},
|
||||
{
|
||||
permanent: true,
|
||||
source: '/blog/pricing',
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { NextConfig } from 'next'
|
||||
import { getPathMatch } from 'next/dist/shared/lib/router/utils/path-match'
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
|
||||
vi.mock('@sentry/nextjs', () => ({
|
||||
@@ -37,6 +38,16 @@ describe('next.config.mjs', () => {
|
||||
)
|
||||
expect(redirects).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({
|
||||
source: '/images/customers/logos/light/:path*',
|
||||
destination: '/images/customers/logos/on-dark/:path*',
|
||||
permanent: true,
|
||||
}),
|
||||
expect.objectContaining({
|
||||
source: '/images/customers/logos/:slug((?!dreambase-mark\\.png)[^/.]+).png',
|
||||
destination: '/images/customers/logos/on-light/:slug.png',
|
||||
permanent: true,
|
||||
}),
|
||||
expect.objectContaining({ source: '/ui', destination: '/library', permanent: true }),
|
||||
expect.objectContaining({
|
||||
source: '/ui/:path*',
|
||||
@@ -49,4 +60,34 @@ describe('next.config.mjs', () => {
|
||||
redirects.findIndex((redirect) => redirect.source === '/ui/docs/ai-editors-rules/prompts')
|
||||
).toBeLessThan(redirects.findIndex((redirect) => redirect.source === '/ui/:path*'))
|
||||
})
|
||||
|
||||
it('preserves the filename when redirecting legacy customer logos', async () => {
|
||||
const { default: config } = (await import('./next.config.mjs')) as { default: NextConfig }
|
||||
const redirects = (await config.redirects?.()) || []
|
||||
|
||||
const darkModeRedirect = redirects.find(
|
||||
(redirect) => redirect.source === '/images/customers/logos/light/:path*'
|
||||
)
|
||||
const lightModeRedirect = redirects.find(
|
||||
(redirect) =>
|
||||
redirect.source === '/images/customers/logos/:slug((?!dreambase-mark\\.png)[^/.]+).png'
|
||||
)
|
||||
|
||||
expect(darkModeRedirect).toBeDefined()
|
||||
expect(lightModeRedirect).toBeDefined()
|
||||
|
||||
const matchLegacyDark = getPathMatch(darkModeRedirect!.source)
|
||||
const matchLegacyLight = getPathMatch(lightModeRedirect!.source)
|
||||
|
||||
expect(matchLegacyDark('/images/customers/logos/light/good-tape.png')).toEqual({
|
||||
path: ['good-tape.png'],
|
||||
})
|
||||
expect(matchLegacyLight('/images/customers/logos/good-tape.png')).toEqual({
|
||||
slug: 'good-tape',
|
||||
})
|
||||
expect(matchLegacyLight('/images/customers/logos/dreambase-mark.png')).toBe(false)
|
||||
expect(matchLegacyLight('/images/customers/logos/dreambase-marketing.png')).toEqual({
|
||||
slug: 'dreambase-marketing',
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -50,7 +50,10 @@ const ContactSales = () => {
|
||||
tabs={[
|
||||
{
|
||||
label: (
|
||||
<CustomerLogo title="Goodtape" logo="/images/customers/logos/good-tape.png" />
|
||||
<CustomerLogo
|
||||
title="Goodtape"
|
||||
logo="/images/customers/logos/on-light/good-tape.png"
|
||||
/>
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
@@ -60,7 +63,12 @@ const ContactSales = () => {
|
||||
),
|
||||
},
|
||||
{
|
||||
label: <CustomerLogo title="Xendit" logo="/images/customers/logos/xendit.png" />,
|
||||
label: (
|
||||
<CustomerLogo
|
||||
title="Xendit"
|
||||
logo="/images/customers/logos/on-light/xendit.png"
|
||||
/>
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
quote="The full solution was built and in production in less than one week."
|
||||
@@ -70,7 +78,10 @@ const ContactSales = () => {
|
||||
},
|
||||
{
|
||||
label: (
|
||||
<CustomerLogo title="Chatbase" logo="/images/customers/logos/chatbase.png" />
|
||||
<CustomerLogo
|
||||
title="Chatbase"
|
||||
logo="/images/customers/logos/on-light/chatbase.png"
|
||||
/>
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
@@ -89,7 +100,10 @@ const ContactSales = () => {
|
||||
tabs={[
|
||||
{
|
||||
label: (
|
||||
<CustomerLogo title="Goodtape" logo="/images/customers/logos/good-tape.png" />
|
||||
<CustomerLogo
|
||||
title="Goodtape"
|
||||
logo="/images/customers/logos/on-light/good-tape.png"
|
||||
/>
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
@@ -99,7 +113,9 @@ const ContactSales = () => {
|
||||
),
|
||||
},
|
||||
{
|
||||
label: <CustomerLogo title="Xendit" logo="/images/customers/logos/xendit.png" />,
|
||||
label: (
|
||||
<CustomerLogo title="Xendit" logo="/images/customers/logos/on-light/xendit.png" />
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
quote="The full solution was built and in production in less than one week."
|
||||
@@ -109,7 +125,10 @@ const ContactSales = () => {
|
||||
},
|
||||
{
|
||||
label: (
|
||||
<CustomerLogo title="Chatbase" logo="/images/customers/logos/chatbase.png" />
|
||||
<CustomerLogo
|
||||
title="Chatbase"
|
||||
logo="/images/customers/logos/on-light/chatbase.png"
|
||||
/>
|
||||
),
|
||||
panel: (
|
||||
<CustomerQuote
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 164 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user