diff --git a/README.ja.md b/README.ja.md index 6629ccc397..335c87f6f4 100644 --- a/README.ja.md +++ b/README.ja.md @@ -151,6 +151,12 @@ npm run build:server npm run typecheck ``` +## スポンサー + +Paseo は一人で開発しており、使ってくれる人たちの支援で成り立っています。[GitHub Sponsors](https://github.com/sponsors/boudra) で支援するか、月 500 ドルで[スポンサー枠を購入](https://buy.stripe.com/8x24gBczR7LNaokcve2sM00)して、貴社のロゴをここと [paseo.sh のホームページ](https://paseo.sh/sponsor#spot)に掲載できます。 + + + ## 関連プロジェクト - [getpaseo/paseo-relay](https://github.com/getpaseo/paseo-relay) — Elixir 製の公式分散リレー diff --git a/README.ko.md b/README.ko.md index 66f74f45fa..2bb1a15fc6 100644 --- a/README.ko.md +++ b/README.ko.md @@ -161,6 +161,12 @@ npm run build:server npm run typecheck ``` +## 스폰서 + +Paseo는 한 사람이 개발하며, 사용하는 분들의 후원으로 운영됩니다. [GitHub Sponsors](https://github.com/sponsors/boudra)로 후원하거나, 월 500달러에 [스폰서 자리를 구매](https://buy.stripe.com/8x24gBczR7LNaokcve2sM00)하여 회사 로고를 이곳과 [paseo.sh 홈페이지](https://paseo.sh/sponsor#spot)에 게재할 수 있습니다. + + + ## 관련 프로젝트 - [getpaseo/paseo-relay](https://github.com/getpaseo/paseo-relay) — Elixir로 작성한 공식 분산형 릴레이 diff --git a/README.md b/README.md index a7a6c107e4..3a83f7e235 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,12 @@ npm run build:server npm run typecheck ``` +## Sponsors + +Paseo is built by one person and funded by the people who use it. Support the work on [GitHub Sponsors](https://github.com/sponsors/boudra), or [sponsor a spot](https://buy.stripe.com/8x24gBczR7LNaokcve2sM00) for $500 a month to put your company's logo here and on the [paseo.sh homepage](https://paseo.sh/sponsor#spot). + + + ## Related projects - [getpaseo/paseo-relay](https://github.com/getpaseo/paseo-relay) — official distributed relay, written in Elixir diff --git a/README.zh-CN.md b/README.zh-CN.md index c9c643b48f..6a5bde16f2 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -151,6 +151,12 @@ npm run build:server npm run typecheck ``` +## 赞助 + +Paseo 由一个人开发,靠使用它的人来资助。你可以通过 [GitHub Sponsors](https://github.com/sponsors/boudra) 支持这项工作,或者以每月 500 美元[赞助一个展示位](https://buy.stripe.com/8x24gBczR7LNaokcve2sM00),把贵公司的 logo 放在这里和 [paseo.sh 首页](https://paseo.sh/sponsor#spot)上。 + + + ## 相关项目 - [getpaseo/paseo-relay](https://github.com/getpaseo/paseo-relay) — 官方分布式 relay,使用 Elixir 编写 diff --git a/packages/website/src/components/brand-icons.tsx b/packages/website/src/components/brand-icons.tsx index 0b48a9d5fe..c7692b43d6 100644 --- a/packages/website/src/components/brand-icons.tsx +++ b/packages/website/src/components/brand-icons.tsx @@ -44,3 +44,25 @@ export function SlackIcon(props: React.SVGProps) { ); } + +export function OpenCollectiveIcon(props: React.SVGProps) { + return ( + + + + + ); +} + +export function BuyMeACoffeeIcon(props: React.SVGProps) { + return ( + + + + ); +} diff --git a/packages/website/src/components/landing-page.tsx b/packages/website/src/components/landing-page.tsx index 6655c6ab37..248fa58675 100644 --- a/packages/website/src/components/landing-page.tsx +++ b/packages/website/src/components/landing-page.tsx @@ -78,6 +78,7 @@ import { DiscordIcon, GitHubIcon, SlackIcon } from "~/components/brand-icons"; import { ClaudeIcon, MobileChat, MobileDiff, MobileSidebar, PhoneFrame } from "~/components/mockup"; import { FAQItem } from "~/components/faq-item"; import { SiteFooter } from "~/components/site-footer"; +import { SponsorSection, SponsorsSection } from "~/components/sponsorship"; import { SiteHeader } from "~/components/site-header"; import "~/styles.css"; @@ -123,7 +124,8 @@ export function LandingPage({ title, subtitle }: LandingPageProps) { - + + @@ -1196,45 +1198,3 @@ function FAQ() { ); } - -function SponsorCTA() { - return ( - -
-

Paseo is an independent open source project for running coding agents.

-

Its guiding principle is optionality and freedom of choice.

-

- I wanted to use any provider without being locked into any ecosystem, run it on my own - infrastructure, access it from anywhere, and have it be fully automatable. -

-

I am hoping that you will enjoy Paseo as much as I do.

-

If you like Paseo, sponsorship is the best way to support continued development.

-

- Mo

-
- -
- ); -} diff --git a/packages/website/src/components/sponsorship.tsx b/packages/website/src/components/sponsorship.tsx new file mode 100644 index 0000000000..958208e56f --- /dev/null +++ b/packages/website/src/components/sponsorship.tsx @@ -0,0 +1,290 @@ +import { ArrowRight, Check, ExternalLink } from "lucide-react"; +import { BuyMeACoffeeIcon, GitHubIcon, OpenCollectiveIcon } from "~/components/brand-icons"; +import { + BUY_ME_A_COFFEE_URL, + GITHUB_SPONSORS_URL, + HOMEPAGE_SPONSORS, + HOMEPAGE_SPOT_PRICE, + OPEN_COLLECTIVE_URL, + SPONSOR_CONTACT_EMAIL, + SPONSOR_SPOT_CHECKOUT_URL, + openSpotCount, +} from "~/data/sponsors"; + +function SectionHeading({ + as: Heading, + title, + description, + badge, +}: { + as: "h1" | "h2"; + title: string; + description?: string; + badge?: string; +}) { + return ( +
+
+ {title} + {badge ? ( + + {badge} + + ) : null} +
+ {description ? ( +

{description}

+ ) : null} +
+ ); +} + +const MAINTAINER_LINK = ( + + Mo + +); + +export function FounderNote() { + return ( +
+

+ I build Paseo on my own. There are no investors, no board and no company behind it, and I + have turned down funding offers to keep it that way. +

+

+ A tool that sits between you and your code, your keys and your machines has to stay neutral, + and that gets hard once someone else owns a return on it. Funding creates pressure to + monetize, and that pressure changes what gets built. +

+

+ Paseo is self-funded: the work is paid for by sponsorship and by{" "} + + Paseo Hub + + , an optional hosted service. Your support is what lets me work on Paseo full time. +

+

{MAINTAINER_LINK}, maintainer

+
+ ); +} + +interface BackingOption { + href: string; + name: string; + detail: string; + icon: React.ComponentType<{ className?: string }>; + external: boolean; + primary?: boolean; +} + +const BACKING_OPTIONS: ReadonlyArray = [ + { + href: GITHUB_SPONSORS_URL, + name: "GitHub Sponsors", + detail: "From $5 a month, or one time", + icon: GitHubIcon, + external: true, + primary: true, + }, + { + href: OPEN_COLLECTIVE_URL, + name: "Open Collective", + detail: "Monthly or one time, with an invoice", + icon: OpenCollectiveIcon, + external: true, + }, + { + href: BUY_ME_A_COFFEE_URL, + name: "Buy Me a Coffee", + detail: "One time, no account needed", + icon: BuyMeACoffeeIcon, + external: true, + }, + { + href: "/sponsor#spot", + name: "Sponsor a spot", + detail: "For companies", + icon: SpotIcon, + external: false, + }, +]; + +function SpotIcon({ className }: { className?: string }) { + return ( +