mirror of
https://github.com/supabase/supabase.git
synced 2026-10-15 06:09:08 +03:00
## 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 -->
110 lines
6.3 KiB
Plaintext
110 lines
6.3 KiB
Plaintext
---
|
|
name: Juniver
|
|
title: 'Juniver built a self-serve B2B platform with Supabase to scale eating disorder recovery'
|
|
# Use meta_title to add a custom meta title. Otherwise it defaults to '{name} | Supabase Customer Stories':
|
|
# meta_title:
|
|
description: Juniver switched from Firebase to Supabase and saw immediate improvements in developer experience and performance.
|
|
# Use meta_description to add a custom meta description. Otherwise it defaults to {description}:
|
|
meta_description: Juniver switched from Firebase to Supabase and saw immediate improvements in developer experience and performance.
|
|
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/on-light/juniver.png
|
|
logo_inverse: /images/customers/logos/on-dark/juniver.png
|
|
tags:
|
|
- supabase
|
|
date: '2025-01-15'
|
|
company_url: https://www.joinjuniver.com
|
|
misc: [{ label: 'Founded', text: 'United Kingdom' }]
|
|
about: Science-based recovery program for disordered eating
|
|
# "healthcare" | "fintech" | "ecommerce" | "education" | "gaming" | "media" | "real-estate" | "saas" | "social" | "analytics" | "ai" | "developer-tools"
|
|
industry: ['healthcare', 'ai', 'saas']
|
|
# "startup" | "enterprise" | "indie_dev"
|
|
company_size: 'startup'
|
|
# "Asia" | "Europe" | "North America" | "South America" | "Africa" | "Oceania"
|
|
region: 'Europe'
|
|
# "database" | "auth" | "storage" | "realtime" | "functions" | "vector"
|
|
supabase_products: ['database', 'auth', 'functions']
|
|
---
|
|
|
|
<Quote img="nick-farrant-juniver.jpg" caption="Nick Farrant, Founding Engineer, Juniver">
|
|
For me, the biggest benefit of Supabase is developer experience. My expertise doesn't lie in
|
|
databases and infrastructure. It really didn't take much time at all to spin up this product with
|
|
Supabase.
|
|
</Quote>
|
|
|
|
[Juniver](https://www.joinjuniver.com/) is an iOS app that guides people through recovery from eating disorders and disordered eating. The product combines an AI recovery coach, a thoroughly researched curriculum, and self-serve tools designed for moments of need. Juniver is expanding from B2C into B2B2C, licensing its platform to clinics and clinicians who then offer it to patients.
|
|
|
|
## The challenge
|
|
|
|
Juniver needed to evolve its backend to support a new B2B2C product, without risking the stability of its consumer app.
|
|
|
|
- Launch a self-serve, automated, scalable platform for clinics and clinicians
|
|
- Enforce strict privacy and access controls across clinics, clinicians, patients, and licenses
|
|
- Integrate tightly with Stripe and webhooks to automate onboarding and license provisioning
|
|
- Move quickly with a lean team, choosing tools that won't have to be replaced in a few years
|
|
|
|
They also faced significant friction with their previous Firebase setup:
|
|
|
|
- Document-based storage made data relationships difficult to manage
|
|
- Manual relationship handling slowed development
|
|
- Limited scalability for complex B2B requirements
|
|
- Developer productivity was constrained by Firebase's limitations
|
|
|
|
<Quote img="nick-farrant-juniver.jpg" caption="Nick Farrant, Founding Engineer, Juniver">
|
|
Time is such a big currency in startup world. With Firebase, we were really struggling with
|
|
relationships within our data. It was all done very manually, as you can expect with
|
|
document-based storage. Supabase is a relational database and it's much easier and we can move
|
|
faster.
|
|
</Quote>
|
|
|
|
## Choosing Supabase
|
|
|
|
Juniver had long run on Google Cloud with Firebase for the mobile app. The new B2B product created a clean slate to evaluate alternatives and set a foundation for future scale. Supabase offered a relational core (Postgres) and an integrated developer experience that aligned with Juniver's needs now and later.
|
|
|
|
**Why Supabase**
|
|
|
|
- A relational database (Postgres) to model clean, maintainable relationships
|
|
- Integrated developer experience: visual Table Editor with inline SQL, clear logs, SDKs
|
|
- Strong security posture with Row Level Security, plus an easy way to "view as user" to validate policies
|
|
- Built-in primitives (Auth, Functions) to save time and build with best-of-breed products
|
|
|
|
<Quote img="nick-farrant-juniver.jpg" caption="Nick Farrant, Founding Engineer, Juniver">
|
|
The Supabase developer experience is so clear. I've got everything at my fingertips. I'm in the
|
|
Table Editor. The SQL editor is literally right below the table editor. The feature you have to
|
|
see the table from a different user's perspective to test your Row Level Security is a wonderful
|
|
little feature that I use all the time.
|
|
</Quote>
|
|
|
|
## The approach
|
|
|
|
Juniver used the B2B product as a greenfield build on Supabase, avoiding risky dependencies on the legacy Firebase data while preparing for an eventual B2C migration.
|
|
|
|
- **Getting started**
|
|
- Spun up a new Supabase project and schema for clinics, clinicians, patients, and licenses
|
|
- Leaned on documentation and the iOS SDK to accelerate the build
|
|
- **Implementation highlights**
|
|
- **Database (Postgres):** Relational schema with strict Row Level Security; frequent use of "view as user" to validate policies
|
|
- **Auth & OAuth:** Managing identities for clinics and patients with fine-grained access
|
|
- **Webhooks + Edge Functions:** Stripe purchase triggers an automated sequence to authenticate partners, provision license codes, and send emails
|
|
- **Operational visibility:** Edge Function logs and an integrated console for fast debugging and iteration
|
|
|
|
<Quote img="nick-farrant-juniver.jpg" caption="Nick Farrant, Founding Engineer, Juniver">
|
|
You have to expect, plan, and build for scale. We can scale exponentially with Supabase.
|
|
</Quote>
|
|
|
|
## The results
|
|
|
|
Juniver's B2B platform is out in the wild and early in adoption, but the team is already seeing meaningful wins in developer experience and delivery speed.
|
|
|
|
- Rapidly build-out of a self-serve, automated B2B platform using out-of-the-box Supabase features
|
|
- Faster iteration through an integrated UI, inline SQL, clear logs, and RLS policy testing
|
|
- A relational foundation that supports today's B2B needs and tomorrow's B2C migration
|
|
- Streamlined development process with Supabase's integrated tooling
|
|
|
|
<Quote img="nick-farrant-juniver.jpg" caption="Nick Farrant, Founding Engineer, Juniver">
|
|
My advice to developers thinking of moving to Supabase: Try it, it's free. Replicate your project.
|
|
You'll see how much easier it is to think about your data from a relational point of view.
|
|
</Quote>
|