\ No newline at end of file
diff --git a/landing/src/app/page.tsx b/landing/src/app/page.tsx
index b3349477..8faa7411 100644
--- a/landing/src/app/page.tsx
+++ b/landing/src/app/page.tsx
@@ -11,6 +11,7 @@ import {Footer} from "@/components/Footer";
import {Navbar} from "@/components/Navbar";
import {Personalities} from "@/components/Personalities";
import {AppleIcon, LinuxIcon, WindowsIcon} from "@/components/PlatformIcons";
+import {SponsorPromo} from "@/components/SponsorPromo";
import {SupportedModels} from "@/components/SupportedModels";
import {TutorialsSection} from "@/components/TutorialsSection";
import {VoiceCreator} from "@/components/VoiceCreator";
@@ -130,6 +131,9 @@ export default function Home() {
+ {/* ── Sponsor promo ────────────────────────────────────────── */}
+
+
{/* ── Features ─────────────────────────────────────────────── */}
diff --git a/landing/src/app/sponsors/page.tsx b/landing/src/app/sponsors/page.tsx
new file mode 100644
index 00000000..c5e1bc18
--- /dev/null
+++ b/landing/src/app/sponsors/page.tsx
@@ -0,0 +1,324 @@
+'use client';
+
+import { ArrowRight, Check, Coffee, Mail } from 'lucide-react';
+import { useEffect, useState } from 'react';
+import { Footer } from '@/components/Footer';
+import { Navbar } from '@/components/Navbar';
+import {
+ DONATE_URL,
+ SPONSOR_CHECKOUT_URL,
+ SPONSOR_CONTACT_EMAIL,
+} from '@/lib/constants';
+
+function formatCount(n: number): string {
+ if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1).replace(/\.0$/, '')}M`;
+ if (n >= 1_000) return `${(n / 1_000).toFixed(0)}k`;
+ return n.toLocaleString();
+}
+
+export default function SponsorsPage() {
+ const [downloads, setDownloads] = useState(null);
+ const [stars, setStars] = useState(null);
+
+ useEffect(() => {
+ fetch('/api/releases')
+ .then((res) => (res.ok ? res.json() : null))
+ .then((data) => {
+ if (data?.totalDownloads != null) setDownloads(data.totalDownloads);
+ })
+ .catch(() => {});
+ fetch('/api/stars')
+ .then((res) => (res.ok ? res.json() : null))
+ .then((data) => {
+ if (typeof data?.count === 'number') setStars(data.count);
+ })
+ .catch(() => {});
+ }, []);
+
+ return (
+ <>
+
+
+ {/* ── Hero ─────────────────────────────────────────────────── */}
+
+
+
+
+
+ Corporate sponsorship
+
+
+
+ Get your brand in front of half a million creators.
+
+
+
+ Voicebox is the open-source AI voice studio used by creators, podcasters, voice
+ artists, writers, developers, accessibility users, and curious humans all over the
+ world. Sponsor the project, get your logo in front of all of them.
+
+
+
+
+
+
+ {/* ── Traction ────────────────────────────────────────────── */}
+
+
+
+
+ Reach
+
+
+ Real distribution, real attention.
+
+
+
+
+
+
+
+
+
+
+
+ Voicebox users are content creators, podcasters, voice artists, writers, developers,
+ accessibility users, hobbyists, and AI enthusiasts. They picked a local-first tool
+ over a cloud subscription — they care about owning their software and the brands
+ behind it.
+
+
+
+
+ {/* ── What you get ────────────────────────────────────────── */}
+
+
+
+
+ Placement
+
+
+ Where your logo shows up.
+
+
+
+
+
+ Headline placement
+
+
+ voicebox.sh — directly below the hero.
+
+
+ Your logo lives in the prime slot on the homepage — the first thing every visitor
+ sees after the hero. Same row as every other corporate sponsor, linked to your URL
+ of choice. This is the placement that actually moves the needle.
+
+
+ {/* Preview of what the placement looks like on the homepage */}
+
+
+
+
+ {/* eslint-disable-next-line @next/next/no-img-element */}
+

+
+
+
+ Example only — actual sponsor logos appear here once placements are live.
+
+
+
+
+
+
+
+
+ {/* ── Pricing ─────────────────────────────────────────────── */}
+
+
+ {/* ── Individual / policy ─────────────────────────────────── */}
+
+
+
+
+
+
Not a company?
+
+
+ Individual supporters keep Voicebox running too. Drop a tip on Buy Me a Coffee and
+ your name shows up in the supporters list.
+
+
+ Support on Buy Me a Coffee
+
+
+
+
+
+
+ Who we accept
+
+
+ Voicebox is local-first and privacy-first. We don't accept sponsorships from
+ companies whose business model conflicts with that — voice-data brokers, ad-tech
+ built on speech, or surveillance vendors. Everyone else is welcome.
+
+
+
+
+
+
+ >
+ );
+}
+
+function Stat({ value, label, note }: { value: string; label: string; note: string }) {
+ return (
+
+
{value}
+
+ {label}
+
+
{note}
+
+ );
+}
+
+function Perk({ title, body }: { title: string; body: string }) {
+ return (
+
+ );
+}
+
+function PerkRow({ text }: { text: string }) {
+ return (
+
+
+ {text}
+
+ );
+}
diff --git a/landing/src/components/SponsorPromo.tsx b/landing/src/components/SponsorPromo.tsx
new file mode 100644
index 00000000..e12d8050
--- /dev/null
+++ b/landing/src/components/SponsorPromo.tsx
@@ -0,0 +1,94 @@
+import { ArrowRight, Heart } from 'lucide-react';
+import { SPONSORS, type Sponsor } from '@/lib/sponsors';
+
+export function SponsorPromo() {
+ if (SPONSORS.length === 0) {
+ return ;
+ }
+ return ;
+}
+
+function SponsorPromoEmpty() {
+ return (
+
+
+
+
+
+
+
+ Sponsor Voicebox
+
+
+ Get your logo in front of 170k+ monthly visitors.
+
+
+ Voicebox is open-source and used by creators, voice artists, podcasters,
+ writers, developers, accessibility users, and curious humans all over the world.
+ Sponsor the project and your logo lands on the homepage, in the app, in the
+ README, and on the sponsors page — in front of every one of them.
+
+
+
+
+
+
+
+
+ );
+}
+
+function SponsorStrip({ sponsors }: { sponsors: Sponsor[] }) {
+ return (
+
+ );
+}
diff --git a/landing/src/lib/constants.ts b/landing/src/lib/constants.ts
index 8659c996..4e3e43fb 100644
--- a/landing/src/lib/constants.ts
+++ b/landing/src/lib/constants.ts
@@ -5,6 +5,8 @@ export const LATEST_VERSION = 'v0.1.0';
export const GITHUB_REPO = 'https://github.com/jamiepine/voicebox';
export const GITHUB_RELEASES_PAGE = `${GITHUB_REPO}/releases`;
export const DONATE_URL = 'https://buymeacoffee.com/jamiepine';
+export const SPONSOR_CHECKOUT_URL = 'https://buy.stripe.com/eVqdRad3n16ubcqf201Jm00';
+export const SPONSOR_CONTACT_EMAIL = 'jamie@spacedrive.com';
export const DOWNLOAD_LINKS = {
macArm: GITHUB_RELEASES_PAGE,
diff --git a/landing/src/lib/sponsors.ts b/landing/src/lib/sponsors.ts
new file mode 100644
index 00000000..c48210ae
--- /dev/null
+++ b/landing/src/lib/sponsors.ts
@@ -0,0 +1,12 @@
+export type Sponsor = {
+ name: string;
+ url: string;
+ logoSrc: string;
+ logoAlt?: string;
+ tagline?: string;
+ /** Set true for solid-black logos that need to render white on the dark theme. */
+ invert?: boolean;
+};
+
+export const SPONSORS: Sponsor[] = [
+];