From 90dfc54e19bffd1e9ed57a5e60005d2dae062ad1 Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Sun, 24 May 2026 19:31:25 +0200 Subject: [PATCH] feat: render sponsors from shared json --- content/docs/get-started/sponsors.mdx | 493 +------------------------- src/components/mdx.tsx | 2 + src/components/sponsors-list.tsx | 130 +++++++ src/lib/sponsors.ts | 4 + 4 files changed, 138 insertions(+), 491 deletions(-) create mode 100644 src/components/sponsors-list.tsx diff --git a/content/docs/get-started/sponsors.mdx b/content/docs/get-started/sponsors.mdx index 2cb8f09d..1c03f343 100644 --- a/content/docs/get-started/sponsors.mdx +++ b/content/docs/get-started/sponsors.mdx @@ -1,6 +1,6 @@ --- title: Coolify Sponsors -description: Meet the companies and organizations sponsoring Coolify development including Hetzner, Logto, Tolgee, and other technology partners. +description: Meet the companies and organizations sponsoring Coolify development including hosting, infrastructure, and developer-tool partners. full: true --- @@ -8,493 +8,4 @@ full: true We have amazing sponsors who support the development of Coolify. -## Huge Sponsors - -
- -
-
- MVPS logo -
-
-

MVPS

-

Cheap VPS servers at the highest possible quality

-
-
-
- -
-
- SerpAPI logo -
-
-

SerpAPI

-

Google Search API — Scrape Google and other search engines from our fast, easy, and complete API

-
-
-
- -
-
- Seibert Group logo -
-
-

Seibert Group

-

Boost productivity company-wide with AI agents like Claude Code

-
-
-
- -
-
- ScreenshotOne logo -
-
-

ScreenshotOne

-

Screenshot API for devs

-
-
-
- -
-
- PrivateAlps logo -
-
-

PrivateAlps

-

Cloud Services Provider, VPS, servers infrastructure for people who care about privacy and control

-
-
-
-
- -## Big Sponsors - -
- -
- 23M logo -
-

23M

-

Your experts for high-availability hosting solutions!

-
-
-
- -
- American Cloud logo -
-

American Cloud

-

US-based cloud infrastructure services

-
-
-
- -
- Arcjet logo -
-

Arcjet

-

Advanced web security and performance solutions

-
-
-
- -
- BC Direct logo -
-

BC Direct

-

Your trusted technology consulting partner

-
-
-
- -
- Blacksmith logo -
-

Blacksmith

-

Infrastructure automation platform

-
-
-
- -
- Capture.page logo -
-

Capture.page

-

Fast & Reliable Screenshot API for Developers

-
-
-
- -
- ByteBase logo -
-

ByteBase

-

Database CI/CD and Security at Scale

-
-
-
- -
- CodeRabbit logo -
-

CodeRabbit

-

Cut Code Review Time & Bugs in Half

-
-
-
- -
- COMIT logo -
-

COMIT

-

New York Times award–winning contractor

-
-
-
- -
- CompAI logo -
-

CompAI

-

Open source compliance automation platform

-
-
-
- -
- Convex logo -
-

Convex

-

Open-source reactive database for web app developers

-
-
-
- -
- Darweb logo -
-

Darweb

-

3D CPQ solutions for ecommerce design

-
-
-
- -
- Dataforest Cloud logo -
-

Dataforest Cloud

-

Deploy cloud servers as seeds independently in seconds. Enterprise hardware, premium network, 100% made in Germany.

-
-
-
- -
- Formbricks logo -
-

Formbricks

-

The open source feedback platform

-
-
-
- -
- GoldenVM logo -
-

GoldenVM

-

Premium virtual machine hosting solutions

-
-
-
- -
- Greptile logo -
-

Greptile

-

The AI Code Reviewer

-
-
-
- -
- Hetzner logo -
-

Hetzner

-

Server, cloud, hosting, and data center solutions

-
-
-
- -
- Hostinger logo -
-

Hostinger

-

Web hosting and VPS solutions

-
-
-
- -
- JobsCollider logo -
-

JobsCollider

-

30,000+ remote jobs for developers

-
-
-
- -
- Juxtdigital logo -
-

Juxtdigital

-

Digital PR & AI Authority Building Agency

-
-
-
- -
- LiquidWeb logo -
-

LiquidWeb

-

Premium managed hosting solutions

-
-
-
- -
- Logto logo -
-

Logto

-

The better identity infrastructure for developers

-
-
-
- -
- LumaDock logo -
-

LumaDock

-

Fast and reliable virtual server hosting

-
-
-
- -
- Macarne logo -
-

Macarne

-

Best IP Transit & Carrier Ethernet Solutions for Simplified Network Connectivity

-
-
-
- -
- Mobb logo -
-

Mobb

-

Secure Your AI-Generated Code to Unlock Dev Productivity

-
-
-
- -
- PetroSky Cloud logo -
-

PetroSky Cloud

-

Open source cloud deployment solutions

-
-
-
- -
- PFGLabs logo -
-

PFGLabs

-

Build Real Projects with Golang

-
-
-
- -
- Ramnode logo -
-

Ramnode

-

High Performance Cloud VPS Hosting

-
-
-
- -
- SaasyKit logo -
-

SaasyKit

-

Complete SaaS starter kit for developers

-
-
-
- -
- SupaGuide logo -
-

SupaGuide

-

Your comprehensive guide to Supabase

-
-
-
- -
- Supadata AI logo -
-

Supadata AI

-

Scrape YouTube, web, and files. Get AI-ready, clean data

-
-
-
- -
- Syntax.fm logo -
-

Syntax.fm

-

Podcast for web developers

-
-
-
- -
- Tigris logo -
-

Tigris

-

Modern developer data platform

-
-
-
- -
- Tolgee logo -
-

Tolgee

-

The open source localization platform

-
-
-
- -
- Ubicloud logo -
-

Ubicloud

-

Open source cloud infrastructure platform

-
-
-
- -
- VPSDime logo -
-

VPSDime

-

Affordable high-performance VPS hosting solutions

-
-
-
- -
- QuantCDN logo -
-

QuantCDN

-

Enterprise-grade content delivery network

-
-
-
- -
- Cloudify logo -
-

Cloudify

-

Cloud hosting solutions

-
-
-
- -
- Trieve logo -
-

Trieve

-

AI-powered search and analytics

-
-
-
- -
- Brand.dev logo -
-

Brand.dev

-

The #1 Brand API for B2B software startups

-
-
-
- -
- GlueOps logo -
-

GlueOps

-

DevOps automation and infrastructure management

-
-
-
- -
- MassiveGrid logo -
-

MassiveGrid

-

Enterprise cloud hosting solutions

-
-
-
- -
- Algora logo -
-

Algora

-

Open source contribution platform

-
-
-
- -
- Yaak logo -
-

Yaak

-

The API client for modern developers

-
-
-
- -
- WZ-IT logo -
-

WZ-IT

-

German agency for customized cloud solutions, migration, managed services and open source hosting

-
-
-
- -
- Gozunga logo -
-

Gozunga

-

Seriously Simple Cloud Infrastructure

-
-
-
-
- -
-
-
- Your Company? logo -
-

Your Company?

-

Will Your Company Be Next?

-
-
-
-
+ diff --git a/src/components/mdx.tsx b/src/components/mdx.tsx index 7561147e..e0884e90 100644 --- a/src/components/mdx.tsx +++ b/src/components/mdx.tsx @@ -11,6 +11,7 @@ import { CoolifyHome } from './coolify-home'; import { MediaCard, MediaCardGroup } from './media-card'; import { ScreenshotTab, ScreenshotTabs } from './screenshot-tabs'; import { ServicesList } from './services-list'; +import { SponsorsList } from './sponsors-list'; import { ZoomImage } from './zoom-image'; function Badge({ text, children }: { type?: string; text?: string; children?: React.ReactNode }) { @@ -39,6 +40,7 @@ export function getMDXComponents(components?: MDXComponents) { ScreenshotTab, ScreenshotTabs, ServicesList, + SponsorsList, Step, Steps, Tab, diff --git a/src/components/sponsors-list.tsx b/src/components/sponsors-list.tsx new file mode 100644 index 00000000..a8a15c66 --- /dev/null +++ b/src/components/sponsors-list.tsx @@ -0,0 +1,130 @@ +'use client'; + +import { useEffect, useMemo, useState } from 'react'; +import { SPONSORS_URL, type Sponsor, type SponsorsResponse } from '@/lib/sponsors'; + +const ref = 'coolify.io'; +function addRef(url: string): string { + return url.includes('?') ? `${url}&ref=${ref}&utm_source=${ref}` : `${url}?ref=${ref}&utm_source=${ref}`; +} + +function sponsorImageUrl(sponsor: Sponsor): string | undefined { + return sponsor.docsImageUrl ?? sponsor.imageUrl; +} + +function SponsorCard({ sponsor, size }: { sponsor: Sponsor; size: 'huge' | 'big' }) { + const imageUrl = sponsorImageUrl(sponsor); + + if (size === 'huge') { + return ( + +
+ {imageUrl ? ( +
+ {`${sponsor.name} +
+ ) : null} +
+

{sponsor.name}

+

{sponsor.description}

+
+
+
+ ); + } + + return ( + +
+ {imageUrl ? {`${sponsor.name} : null} +
+

{sponsor.name}

+

{sponsor.description}

+
+
+
+ ); +} + +export function SponsorsList() { + const [data, setData] = useState(null); + const [error, setError] = useState(null); + + useEffect(() => { + const controller = new AbortController(); + + fetch(SPONSORS_URL, { signal: controller.signal }) + .then((response) => { + if (!response.ok) { + throw new Error(`Failed to fetch sponsors: ${response.status}`); + } + + return response.json() as Promise; + }) + .then(setData) + .catch((fetchError: unknown) => { + if (fetchError instanceof DOMException && fetchError.name === 'AbortError') { + return; + } + + setError(fetchError instanceof Error ? fetchError.message : 'Failed to fetch sponsors'); + }); + + return () => controller.abort(); + }, []); + + const hugeSponsors = useMemo(() => data?.tiers.huge ?? [], [data]); + const bigSponsors = useMemo(() => data?.tiers.big ?? [], [data]); + + if (error) { + return ( +
+ Could not load sponsors. Please try again later. +
+ ); + } + + if (!data) { + return ( +
+ Loading sponsors… +
+ ); + } + + return ( +
+ {hugeSponsors.length > 0 ? ( +
+

Huge Sponsors

+
+ {hugeSponsors.map((sponsor) => ( + + ))} +
+
+ ) : null} + + {bigSponsors.length > 0 ? ( +
+

Big Sponsors

+
+ {bigSponsors.map((sponsor) => ( + + ))} +
+
+ ) : null} +
+ ); +} diff --git a/src/lib/sponsors.ts b/src/lib/sponsors.ts index 4a06e418..63a012e1 100644 --- a/src/lib/sponsors.ts +++ b/src/lib/sponsors.ts @@ -10,6 +10,9 @@ export type Sponsor = { imageKey?: string; imagePath?: string; imageUrl?: string; + docsImageKey?: string; + docsImagePath?: string; + docsImageUrl?: string; tier: SponsorTier; pinned?: boolean; imageStyle?: string; @@ -29,6 +32,7 @@ export type SponsorsResponse = { repository: string; landing: string; imagesBaseUrl: string; + docsImagesBaseUrl?: string; }; tiers: Record; };