From 500dddc20c3f0961b0a7163c5812ece00fa05195 Mon Sep 17 00:00:00 2001 From: Nik Richers Date: Tue, 25 Aug 2026 07:31:07 -0700 Subject: [PATCH] docs(integrations): add Stripe Projects provisioning guide (#49354) ## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? This PR adds some missing Stripe Projects documentation: a short peer entry on the Integrations overview (next to the existing Vercel Marketplace entry) plus a focused guide page. Closes DOCS-1337. ## What is the current behavior? - Linear item: `DOCS-1337`: Document programmatic project provisioning, with Stripe Projects as a partner example - No page under `apps/docs/content/**` mentions Stripe Projects. The only existing prose is a blog post and a `/go/` marketing page, neither indexed as docs nor surfaced in `llms.txt` (which is generated purely from `content/guides/**` directory names/titles). - The Studio-side confirmation flow (`apps/studio/pages/partners/stripe/projects/login.tsx`) already exists and works; the gap is entirely on the docs side. ## What is the new behavior? - `apps/docs/content/guides/integrations.mdx`: added a "Stripe Projects" section, same weight as the existing "Vercel Marketplace" section (short description + link), so Stripe is presented as one of several provisioning paths rather than singled out. - `apps/docs/content/guides/integrations/stripe-projects.mdx` (new): Overview, Quickstart (CLI commands from the Stripe Projects blog post), Authorizing the request (the actual Supabase-side confirmation screen behavior), and Limitations. - `apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts`: added the new page to the Integrations sidebar nav, alongside Vercel Marketplace. ## Additional context - Worktree: `~/GitHub/supabase/supabase/.claude/worktrees/docs-1337-stripe-projects` - Paired eval issue: `DOCS-1338`: a regression eval to be added/run separately, before and after this PR, to confirm agent discoverability actually improves. - Out of scope: the agent-skills piece (separate `supabase/agent-skills` repo, federated into docs at `content/guides/ai-tools/ai-skills.mdx`) is being picked up separately. - The org-linking limitation is confirmed against `AccountRequestDetailsDto` and `AccountRequestsController_confirmAccountRequest` in `packages/api-types/types/platform.d.ts`: the schema exposes a single optional `linked_organization`, not a list, and the confirm endpoint takes no request body, so there's no way for the client to select a different organization. - The first Vercel deploy on this branch failed on an invalid `` HTML comment (not valid MDX); fixed in a follow-up commit to use `{/* */}`. - Heading case (`Stripe Projects`) and the word `proxied` needed allowlist entries in `supa-mdx-lint/Rule001HeadingCase.toml` and `supa-mdx-lint/Rule003Spelling.toml`, matching the existing `Vercel Marketplace` precedent. - Added a Limitations bullet (per reviewer suggestion from gregorvand) on accessing the dashboard for a newly provisioned organization via `stripe projects open supabase` or the reset-password flow. ### Integrations page update ([PR preview](https://docs-git-nikrichers-docs-1337-document-programm-7b3426-supabase.vercel.app/docs/guides/integrations)) ![integrations-after](https://moijyfpvgnmgoxvwcikq.supabase.co/storage/v1/object/public/pr-proof/supabase/supabase/pr49354/integrations-after-44f7cbe0.png) ### Stripe Projects page addition ([PR preview](https://docs-git-nikrichers-docs-1337-document-programm-7b3426-supabase.vercel.app/docs/guides/integrations/stripe-projects)) ![stripe-projects-after](https://moijyfpvgnmgoxvwcikq.supabase.co/storage/v1/object/public/pr-proof/supabase/supabase/pr49354/stripe-projects-after-36c32581.png) ### Test plan - [x] Confirm the "Stripe Projects" section renders on [the Integrations overview page (preview)](https://docs-git-nikrichers-docs-1337-document-programm-7b3426-supabase.vercel.app/docs/guides/integrations) - [x] Confirm [the new Stripe Projects page (preview)](https://docs-git-nikrichers-docs-1337-document-programm-7b3426-supabase.vercel.app/docs/guides/integrations/stripe-projects) renders and appears in the sidebar under Integrations - [ ] Confirm the new page surfaces in `llms.txt` (directory/title based) - [x] Org-linking limitation confirmed via the `AccountRequestDetailsDto`/confirm-endpoint schema (see Additional context) rather than a Stripe Projects team conversation - [x] Re-ran `supa-mdx-lint` allowlist additions locally; heading-case and spelling findings addressed ## Summary by CodeRabbit ## Summary by CodeRabbit - **New Features** - Added Stripe Projects to the integrations navigation. - Added guidance for provisioning Supabase projects through the Stripe CLI, synchronizing environments, accessing dashboards, rotating credentials, and understanding authorization and organization-linking limitations. - **Documentation** - Linked the Stripe Projects guide from the integrations overview. - Updated documentation validation to support Stripe Projects terminology and capitalization. --------- Co-authored-by: Nik Richers Co-authored-by: Gregor <1828888+gregorvand@users.noreply.github.com> --- .../NavigationMenu.constants.ts | 4 ++ apps/docs/content/guides/integrations.mdx | 4 ++ .../guides/integrations/stripe-projects.mdx | 60 +++++++++++++++++++ supa-mdx-lint/Rule001HeadingCase.toml | 1 + supa-mdx-lint/Rule003Spelling.toml | 1 + 5 files changed, 70 insertions(+) create mode 100644 apps/docs/content/guides/integrations/stripe-projects.mdx diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts index 8ee346bc95d..ecfa09baf28 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts @@ -3289,6 +3289,10 @@ export const integrations: NavMenuConstant = { name: 'Vercel Marketplace', url: '/guides/integrations/vercel-marketplace', }, + { + name: 'Stripe Projects', + url: '/guides/integrations/stripe-projects', + }, { name: 'Build Your Own', items: [ diff --git a/apps/docs/content/guides/integrations.mdx b/apps/docs/content/guides/integrations.mdx index 8b0144d7610..580e878adc6 100644 --- a/apps/docs/content/guides/integrations.mdx +++ b/apps/docs/content/guides/integrations.mdx @@ -15,3 +15,7 @@ Browse a curated list of Partners who offer one-click integrations, guides or ot ## Vercel Marketplace Create and manage your Supabase projects directly through Vercel. [Get started with Vercel](/docs/guides/integrations/vercel-marketplace). + +## Stripe Projects + +Provision a Supabase project from the Stripe CLI, for use by a human or an AI agent. [Get started with Stripe Projects](/docs/guides/integrations/stripe-projects). diff --git a/apps/docs/content/guides/integrations/stripe-projects.mdx b/apps/docs/content/guides/integrations/stripe-projects.mdx new file mode 100644 index 00000000000..59ef3015545 --- /dev/null +++ b/apps/docs/content/guides/integrations/stripe-projects.mdx @@ -0,0 +1,60 @@ +--- +id: 'stripe-projects' +title: 'Stripe Projects' +description: 'Provision a Supabase project from the Stripe CLI' +--- + +## Overview + +[Stripe Projects](https://docs.stripe.com/stripe-projects) is a workflow in the Stripe CLI that provisions real services and returns working credentials from a single command. Supabase is available in the catalog, so one command provisions a Postgres database along with the rest of Supabase (Auth, Storage, Edge Functions, and Realtime), without opening a dashboard. + +Stripe Projects is designed for both humans and AI agents. The provisioning steps are deterministic and repeatable whether you run them yourself or an agent runs them for you. + + + +Stripe Projects is currently a developer preview. If you run into issues, [reach out on Discord](https://discord.supabase.com/) or open an issue on [GitHub](https://github.com/supabase/supabase/issues). + + + +## Quickstart + +[Install the Stripe CLI](https://docs.stripe.com/stripe-cli/install), then run: + +```bash +stripe plugin install projects +stripe projects init my-app +stripe projects add supabase/project +stripe projects env --sync +``` + +These commands create a new Supabase project in your account with a Postgres database ready to connect and write the project credentials to a local `.env` file. If you already have a Supabase account, the flow prompts you to link it instead of creating a new one. + +To open the Supabase dashboard directly: + +```bash +stripe projects open supabase +``` + +To rotate your database credentials: + +```bash +stripe projects rotate supabase/project +``` + +For the full command reference, see [Stripe's Stripe Projects docs](https://docs.stripe.com/stripe-projects). + +## Authorizing the request + +The first time you provision a project this way, Supabase shows an authorization screen so you can confirm the request before anything is created: + +- If you're not signed in to Supabase with the email Stripe has on file, you're asked to sign out and back in as that account. +- If the Stripe account is already linked to a Supabase organization, you confirm the request. +- Otherwise, confirming creates a new Supabase organization on your behalf. + +Your Supabase project and organization work exactly like ones you create directly: you keep full access to the dashboard, your connection strings, and your data. Nothing is proxied or white-labeled. + +## Limitations + +- Stripe Projects is in developer preview, so behavior may change. +- Provisioning links to a Supabase organization by matching the email on the Stripe account to a Supabase account; there's no option in the CLI flow to choose a different existing organization. +- To access the Supabase dashboard for a new organization provisioned through Stripe Projects, use the `open` command (`stripe projects open supabase`). To log in to the Supabase dashboard directly without the CLI, follow the reset password flow for this account. diff --git a/supa-mdx-lint/Rule001HeadingCase.toml b/supa-mdx-lint/Rule001HeadingCase.toml index 6a497f7929a..34bbda84489 100644 --- a/supa-mdx-lint/Rule001HeadingCase.toml +++ b/supa-mdx-lint/Rule001HeadingCase.toml @@ -233,6 +233,7 @@ may_uppercase = [ "Spring Initializr", "Sqitch", "Storage", + "Stripe Projects", "Studio", "Supabase", "Supabase AI Assistant", diff --git a/supa-mdx-lint/Rule003Spelling.toml b/supa-mdx-lint/Rule003Spelling.toml index 9f291d02300..92480d7258b 100644 --- a/supa-mdx-lint/Rule003Spelling.toml +++ b/supa-mdx-lint/Rule003Spelling.toml @@ -368,6 +368,7 @@ allow_list = [ "PostgreSQL", "PowerBI", "[Pp]refill", + "[Pp]roxied", "ProGuard", "PubSub", "Prisma",