diff --git a/apps/docs/app/contributing/page.tsx b/apps/docs/app/contributing/page.tsx index 790d62469cf31..18b06c60c182c 100644 --- a/apps/docs/app/contributing/page.tsx +++ b/apps/docs/app/contributing/page.tsx @@ -1,7 +1,9 @@ +import { notFound } from 'next/navigation' import { readFile } from 'node:fs/promises' import { dirname, join } from 'node:path' import { fileURLToPath } from 'node:url' +import { isFeatureEnabled } from 'common' import { ContributingToc } from '~/app/contributing/ContributingToC' import { MDXRemoteBase } from '~/features/docs/MdxBase' import { LayoutMainContent } from '~/layouts/DefaultLayout' @@ -9,6 +11,10 @@ import { SidebarSkeleton } from '~/layouts/MainSkeleton' import Breadcrumbs from '~/components/Breadcrumbs' export default async function ContributingPage() { + if (!isFeatureEnabled('docs:contribution')) { + notFound() + } + const contentFile = join(dirname(fileURLToPath(import.meta.url)), 'content.mdx') const content = await readFile(contentFile, 'utf-8') diff --git a/apps/docs/app/page.tsx b/apps/docs/app/page.tsx index 5714662b1adba..ee6dd551ad76c 100644 --- a/apps/docs/app/page.tsx +++ b/apps/docs/app/page.tsx @@ -256,36 +256,37 @@ const HomePage = () => ( })} + {isFeatureEnabled('docs:full_getting_started') && ( +
+
+

+ Migrate to Supabase +

+

+ Bring your existing data, auth and storage to Supabase following our migration guides. +

+ +
-
-
-

- Migrate to Supabase -

-

- Bring your existing data, auth and storage to Supabase following our migration guides. -

- +
    + {MIGRATION_PAGES.sort((a, b) => (a.name || '').localeCompare(b.name || '')).map( + (guide) => { + return ( +
  • + + + +
  • + ) + } + )} +
- - -
+ )}
@@ -312,41 +313,44 @@ const HomePage = () => ( })}
- -
-
-
-
- - - -

- Self-Hosting -

+ {isFeatureEnabled('docs:full_getting_started') && ( +
+
+
+
+ + + +

+ Self-Hosting +

+
+

+ Get started with self-hosting Supabase. +

+
-

Get started with self-hosting Supabase.

-
-
-
-
    - {selfHostingOptions.map((option) => { - return ( -
  • - - - -
  • - ) - })} -
+
+
    + {selfHostingOptions.map((option) => { + return ( +
  • + + + +
  • + ) + })} +
+
-
+ )}
) diff --git a/apps/docs/components/HomePageCover.tsx b/apps/docs/components/HomePageCover.tsx index 4958cb9ba9933..3cb33e4ed5c9a 100644 --- a/apps/docs/components/HomePageCover.tsx +++ b/apps/docs/components/HomePageCover.tsx @@ -148,9 +148,11 @@ const HomePageCover = (props) => {

-
- -
+ {isFeatureEnabled('docs:full_getting_started') && ( +
+ +
+ )}
) diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts index 2a15b0d4bc9c0..461998e06ee4b 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts @@ -7,8 +7,16 @@ import type { GlobalMenuItems, NavMenuConstant, NavMenuSection } from '../Naviga const { authenticationShowProviders: allAuthProvidersEnabled, billingAll: billingEnabled, + docsAuth: authEnabled, docsCompliance: complianceEnabled, + docsContribution: contributionEnabled, 'docsSelf-hosting': selfHostingEnabled, + docsFrameworkQuickstarts: frameworkQuickstartsEnabled, + docsFullPlatform: fullPlatformEnabled, + docsMobileTutorials: mobileTutorialsEnabled, + docsPgtap: pgTapEnabled, + docsProductionChecklist: productionChecklistEnabled, + docsWebApps: webAppsEnabled, integrationsPartners: integrationsEnabled, sdkCsharp: sdkCsharpEnabled, sdkDart: sdkDartEnabled, @@ -18,8 +26,16 @@ const { } = isFeatureEnabled([ 'authentication:show_providers', 'billing:all', + 'docs:auth', + 'docs:contribution', 'docs:compliance', 'docs:self-hosting', + 'docs:framework_quickstarts', + 'docs:full_platform', + 'docs:mobile_tutorials', + 'docs:pgtap', + 'docs:production_checklist', + 'docs:web_apps', 'integrations:partners', 'sdk:csharp', 'sdk:dart', @@ -56,6 +72,7 @@ export const GLOBAL_MENU_ITEMS: GlobalMenuItems = [ icon: 'auth', href: '/guides/auth' as `/${string}`, level: 'auth', + enabled: authEnabled, }, { label: 'Storage', @@ -280,6 +297,7 @@ export const GLOBAL_MENU_ITEMS: GlobalMenuItems = [ label: 'Contributing', icon: 'contributing', href: '/contributing' as `/${string}`, + enabled: contributionEnabled, }, ], ], @@ -296,26 +314,39 @@ export const gettingstarted: NavMenuConstant = { { name: 'Architecture', url: '/guides/getting-started/architecture' }, { name: 'Framework Quickstarts', + enabled: frameworkQuickstartsEnabled, items: [ - { name: 'Next.js', url: '/guides/getting-started/quickstarts/nextjs' }, - { name: 'React', url: '/guides/getting-started/quickstarts/reactjs' }, - { name: 'Nuxt', url: '/guides/getting-started/quickstarts/nuxtjs' }, - { name: 'Vue', url: '/guides/getting-started/quickstarts/vue' }, - { name: 'Hono', url: '/guides/getting-started/quickstarts/hono' }, + { + name: 'Next.js', + url: '/guides/getting-started/quickstarts/nextjs', + }, + { + name: 'React', + url: '/guides/getting-started/quickstarts/reactjs', + }, + { + name: 'Nuxt', + url: '/guides/getting-started/quickstarts/nuxtjs', + }, + { + name: 'Vue', + url: '/guides/getting-started/quickstarts/vue', + }, + { + name: 'Hono', + url: '/guides/getting-started/quickstarts/hono', + }, { name: 'Flutter', url: '/guides/getting-started/quickstarts/flutter', - enabled: sdkDartEnabled, }, { name: 'iOS SwiftUI', url: '/guides/getting-started/quickstarts/ios-swiftui', - enabled: sdkSwiftEnabled, }, { name: 'Android Kotlin', url: '/guides/getting-started/quickstarts/kotlin' as `/${string}`, - enabled: sdkKotlinEnabled, }, { name: 'SvelteKit', @@ -332,16 +363,23 @@ export const gettingstarted: NavMenuConstant = { enabled: !jsOnly, }, - { name: 'SolidJS', url: '/guides/getting-started/quickstarts/solidjs' }, + { + name: 'SolidJS', + url: '/guides/getting-started/quickstarts/solidjs', + }, { name: 'RedwoodJS', url: '/guides/getting-started/quickstarts/redwoodjs' as `/${string}`, }, - { name: 'refine', url: '/guides/getting-started/quickstarts/refine' }, + { + name: 'refine', + url: '/guides/getting-started/quickstarts/refine', + }, ], }, { name: 'Web app demos', + enabled: webAppsEnabled, items: [ { name: 'Next.js', @@ -387,6 +425,7 @@ export const gettingstarted: NavMenuConstant = { }, { name: 'Mobile tutorials', + enabled: mobileTutorialsEnabled, items: [ { name: 'Flutter', @@ -599,6 +638,7 @@ export const PhoneLoginsItems = [ export const auth: NavMenuConstant = { icon: 'auth', title: 'Auth', + enabled: authEnabled, items: [ { name: 'Overview', @@ -1514,6 +1554,7 @@ export const functions: NavMenuConstant = { { name: 'Limits', url: '/guides/functions/limits' as `/${string}`, + enabled: billingEnabled, }, { name: 'Pricing', @@ -1713,7 +1754,7 @@ export const realtime: NavMenuConstant = { name: 'Deep dive', url: undefined, items: [ - { name: 'Quotas', url: '/guides/realtime/quotas' }, + { name: 'Quotas', url: '/guides/realtime/quotas', enabled: billingEnabled }, { name: 'Pricing', url: '/guides/realtime/pricing' as `/${string}`, @@ -1784,7 +1825,7 @@ export const storage: NavMenuConstant = { name: 'S3 Uploads', url: '/guides/storage/uploads/s3-uploads' as `/${string}`, }, - { name: 'Limits', url: '/guides/storage/uploads/file-limits' }, + { name: 'Limits', url: '/guides/storage/uploads/file-limits', enabled: billingEnabled }, ], }, { @@ -1799,6 +1840,7 @@ export const storage: NavMenuConstant = { { name: 'Bandwidth & Storage Egress', url: '/guides/storage/serving/bandwidth' as `/${string}`, + enabled: billingEnabled, }, ], }, @@ -1839,6 +1881,7 @@ export const storage: NavMenuConstant = { { name: 'Limits', url: '/guides/storage/analytics/limits' as `/${string}`, + enabled: billingEnabled, }, ], }, @@ -2101,6 +2144,7 @@ export const local_development: NavMenuConstant = { { name: 'pgTAP advanced guide', url: '/guides/local-development/testing/pgtap-extended' as `/${string}`, + enabled: pgTapEnabled, }, { name: 'Database testing', url: '/guides/database/testing' }, { @@ -2116,6 +2160,7 @@ export const contributing: NavMenuConstant = { icon: 'contributing', title: 'Contributing', url: '/contributing', + enabled: contributionEnabled, items: [{ name: 'Overview', url: '/contributing' }], } @@ -2213,7 +2258,11 @@ export const security: NavMenuConstant = { name: 'Guides', url: undefined, items: [ - { name: 'Production Checklist', url: '/guides/deployment/going-into-prod' }, + { + name: 'Production Checklist', + url: '/guides/deployment/going-into-prod', + enabled: productionChecklistEnabled, + }, { name: 'Shared Responsibility Model', url: '/guides/deployment/shared-responsibility-model' as `/${string}`, @@ -2243,6 +2292,7 @@ export const platform: NavMenuConstant = { { name: 'Upgrades & Migrations', url: undefined, + enabled: fullPlatformEnabled, items: [ { name: 'Upgrading', url: '/guides/platform/upgrading' }, { @@ -2277,6 +2327,7 @@ export const platform: NavMenuConstant = { { name: 'Multi-factor Authentication', url: '/guides/platform/multi-factor-authentication', + enabled: fullPlatformEnabled, items: [ { name: 'Enforce MFA on organization', @@ -2287,6 +2338,7 @@ export const platform: NavMenuConstant = { { name: 'Transfer Project', url: '/guides/platform/project-transfer' as `/${string}`, + enabled: fullPlatformEnabled, }, { name: 'Restore to a new project', @@ -2295,6 +2347,7 @@ export const platform: NavMenuConstant = { { name: 'Single Sign-On', url: '/guides/platform/sso', + enabled: fullPlatformEnabled, items: [ { name: 'SSO with Azure AD', url: '/guides/platform/sso/azure' }, { @@ -2311,8 +2364,16 @@ export const platform: NavMenuConstant = { url: undefined, items: [ { name: 'Regions', url: '/guides/platform/regions' as `/${string}` }, - { name: 'Compute and Disk', url: '/guides/platform/compute-and-disk' as `/${string}` }, - { name: 'Database Size', url: '/guides/platform/database-size' as `/${string}` }, + { + name: 'Compute and Disk', + url: '/guides/platform/compute-and-disk' as `/${string}`, + enabled: fullPlatformEnabled, + }, + { + name: 'Database Size', + url: '/guides/platform/database-size' as `/${string}`, + enabled: fullPlatformEnabled, + }, { name: 'HIPAA Projects', url: '/guides/platform/hipaa-projects' as `/${string}` }, { name: 'Network Restrictions', @@ -2611,7 +2672,11 @@ export const deployment: NavMenuConstant = { url: '/guides/deployment/shared-responsibility-model' as `/${string}`, }, { name: 'Maturity model', url: '/guides/deployment/maturity-model' }, - { name: 'Production checklist', url: '/guides/deployment/going-into-prod' }, + { + name: 'Production checklist', + url: '/guides/deployment/going-into-prod', + enabled: productionChecklistEnabled, + }, { name: 'SOC 2 compliance', url: '/guides/security/soc-2-compliance' }, ], }, diff --git a/apps/docs/content/guides/getting-started.mdx b/apps/docs/content/guides/getting-started.mdx index cc980510a28bc..c41613e11db9a 100644 --- a/apps/docs/content/guides/getting-started.mdx +++ b/apps/docs/content/guides/getting-started.mdx @@ -101,7 +101,7 @@ hideToc: true description: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a React app.', icon: '/docs/img/icons/react-icon', - enabled: true, + enabled: isFeatureEnabled('docs:framework_quickstarts'), }, { title: 'Next.js', @@ -110,7 +110,7 @@ hideToc: true 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Next.js app.', icon: '/docs/img/icons/nextjs-icon', hasLightIcon: true, - enabled: true, + enabled: isFeatureEnabled('docs:framework_quickstarts'), }, { title: 'Nuxt', @@ -118,7 +118,7 @@ hideToc: true description: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Nuxt app.', icon: '/docs/img/icons/nuxt-icon', - enabled: true, + enabled: isFeatureEnabled('docs:framework_quickstarts'), }, { title: 'Hono', @@ -126,7 +126,7 @@ hideToc: true description: 'Learn how to create a Supabase project, add some sample data to your database, secure it with auth, and query the data from a Hono app.', icon: '/docs/img/icons/hono-icon', - enabled: true, + enabled: isFeatureEnabled('docs:framework_quickstarts'), }, { title: 'RedwoodJS', @@ -134,7 +134,7 @@ hideToc: true description: 'Learn how to create a Supabase project, add some sample data to your database using Prisma migration and seeds, and query the data from a RedwoodJS app.', icon: '/docs/img/icons/redwood-icon', - enabled: true, + enabled: isFeatureEnabled('docs:framework_quickstarts'), }, { title: 'Flutter', @@ -166,7 +166,7 @@ hideToc: true description: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SvelteKit app.', icon: '/docs/img/icons/svelte-icon', - enabled: true, + enabled: isFeatureEnabled('docs:framework_quickstarts'), }, { title: 'SolidJS', @@ -174,7 +174,7 @@ hideToc: true description: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SolidJS app.', icon: '/docs/img/icons/solidjs-icon', - enabled: true, + enabled: isFeatureEnabled('docs:framework_quickstarts'), }, { title: 'Vue', @@ -182,7 +182,7 @@ hideToc: true description: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Vue app.', icon: '/docs/img/icons/vuejs-icon', - enabled: true, + enabled: isFeatureEnabled('docs:framework_quickstarts'), }, { title: 'refine', @@ -190,7 +190,7 @@ hideToc: true description: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a refine app.', icon: '/docs/img/icons/refine-icon', - enabled: true, + enabled: isFeatureEnabled('docs:framework_quickstarts'), }, ] .filter((item) => item.enabled !== false) @@ -211,6 +211,8 @@ hideToc: true })} +<$Show if="docs:web_apps"> + ### Web app demos
@@ -299,6 +301,9 @@ hideToc: true })}
+ + +<$Show if="docs:mobile_tutorials"> ### Mobile tutorials @@ -389,3 +394,4 @@ hideToc: true })} + diff --git a/apps/docs/content/guides/realtime/getting_started.mdx b/apps/docs/content/guides/realtime/getting_started.mdx index 43fe9294953d2..5aee9ea126104 100644 --- a/apps/docs/content/guides/realtime/getting_started.mdx +++ b/apps/docs/content/guides/realtime/getting_started.mdx @@ -24,6 +24,7 @@ npm install @supabase/supabase-js ``` +<$Show if="sdk:dart"> ```bash @@ -31,6 +32,8 @@ flutter pub add supabase_flutter ``` + +<$Show if="sdk:swift"> ```swift @@ -58,6 +61,8 @@ let package = Package( ``` + +<$Show if="sdk:python"> ```bash @@ -72,6 +77,7 @@ conda install -c conda-forge supabase ``` + ### 2. Initialize the client @@ -95,6 +101,7 @@ const supabase = createClient('https://.supabase.co', ' +<$Show if="sdk:dart"> ```dart @@ -112,6 +119,8 @@ final supabase = Supabase.instance.client; ``` + +<$Show if="sdk:swift"> ```swift @@ -124,6 +133,8 @@ let supabase = SupabaseClient( ``` + +<$Show if="sdk:python"> ```python @@ -135,6 +146,7 @@ supabase: Client = create_client(url, key) ``` + ### 3. Create your first Channel @@ -158,6 +170,7 @@ const channel = supabase.channel('room:lobby:messages', { ``` +<$Show if="sdk:dart"> ```dart @@ -166,6 +179,8 @@ final channel = supabase.channel('room:lobby:messages'); ``` + +<$Show if="sdk:swift"> ```swift @@ -176,6 +191,8 @@ let channel = supabase.channel("room:lobby:messages") { ``` + +<$Show if="sdk:python"> ```python @@ -184,6 +201,7 @@ channel = supabase.channel('room:lobby:messages', params={config={private= True ``` + ### 4. Set up authorization @@ -238,6 +256,7 @@ channel.send({ ``` +<$Show if="sdk:dart"> ```dart @@ -261,6 +280,8 @@ channel.sendBroadcastMessage( ``` + +<$Show if="sdk:swift"> ```swift @@ -283,6 +304,8 @@ await channel.sendBroadcastMessage( ``` + +<$Show if="sdk:python"> ```python @@ -304,6 +327,7 @@ channel.send_broadcast_message( ``` + #### 5.2 using HTTP/REST API @@ -342,6 +366,7 @@ const response = await fetch(`https://.supabase.co/rest/v1/rpc/broadcas ``` +<$Show if="sdk:dart"> ```dart @@ -370,6 +395,8 @@ final response = await http.post( ``` + +<$Show if="sdk:swift"> ```swift @@ -400,6 +427,8 @@ let (data, response) = try await URLSession.shared.data(for: request) ``` + +<$Show if="sdk:python"> ```python @@ -428,6 +457,7 @@ response = requests.post( ``` + #### 5.3 using database triggers @@ -543,6 +573,7 @@ useEffect(() => { ``` +<$Show if="sdk:dart"> ```dart @@ -565,6 +596,8 @@ class _MyWidgetState extends State { ``` + +<$Show if="sdk:swift"> ```swift @@ -587,6 +620,8 @@ struct ContentView: View { ``` + +<$Show if="sdk:python"> ```python @@ -610,6 +645,7 @@ with RealtimeManager() as channel: ``` + ## Choose the right feature diff --git a/apps/docs/content/guides/telemetry/reports.mdx b/apps/docs/content/guides/telemetry/reports.mdx index 340db6ca3c93e..e835f98508055 100644 --- a/apps/docs/content/guides/telemetry/reports.mdx +++ b/apps/docs/content/guides/telemetry/reports.mdx @@ -29,6 +29,8 @@ Reports can be filtered by time range to focus your analysis on specific periods --- +<$Show if="billing:all"> + ## Database The Database report provides the most comprehensive view into your Postgres instance's health and performance characteristics. These charts help you identify performance bottlenecks, resource constraints, and optimization opportunities at a glance. @@ -44,6 +46,8 @@ The following charts are available for Free and Pro plans: | Shared Pooler connections | All | Client connections to the shared pooler | Shared pooler usage patterns | | Dedicated Pooler connections | All | Client connections to PgBouncer | Dedicated pooler connection monitoring | + + {/* supa-mdx-lint-disable-next-line Rule001HeadingCase */} ### Advanced Telemetry diff --git a/apps/docs/features/docs/Reference.navigation.tsx b/apps/docs/features/docs/Reference.navigation.tsx index ede2c3dc5380d..d6e0c18378726 100644 --- a/apps/docs/features/docs/Reference.navigation.tsx +++ b/apps/docs/features/docs/Reference.navigation.tsx @@ -1,3 +1,4 @@ +import { isFeatureEnabled } from 'common' import { Fragment, type PropsWithChildren } from 'react' import { cn } from 'ui' @@ -29,6 +30,8 @@ export async function ReferenceNavigation({ isLatestVersion, }: ReferenceNavigationProps) { const navSections = await getReferenceSections(libraryId, version) + const filteredNavSections = navSections?.filter((section) => section.title !== 'Auth') + const displayedNavSections = isFeatureEnabled('docs:auth') ? navSections : filteredNavSections const basePath = `/reference/${libPath}${isLatestVersion ? '' : `/${version}`}` @@ -40,7 +43,7 @@ export async function ReferenceNavigation({
    - {navSections?.map((section) => ( + {displayedNavSections?.map((section) => ( {section.type === 'category' ? (
  • diff --git a/apps/docs/features/docs/Reference.sections.tsx b/apps/docs/features/docs/Reference.sections.tsx index 73ab5bcf2b9d5..7e030df8d51cb 100644 --- a/apps/docs/features/docs/Reference.sections.tsx +++ b/apps/docs/features/docs/Reference.sections.tsx @@ -2,6 +2,7 @@ import { Fragment } from 'react' import ReactMarkdown from 'react-markdown' import { Tabs_Shadcn_, TabsContent_Shadcn_, TabsList_Shadcn_, TabsTrigger_Shadcn_, cn } from 'ui' +import { isFeatureEnabled } from 'common' import ApiSchema from '~/components/ApiSchema' import { REFERENCES } from '~/content/navigation.references' import { MDXRemoteRefs, getRefMarkdown } from '~/features/docs/Reference.mdx' @@ -42,6 +43,13 @@ async function RefSections({ libraryId, version }: RefSectionsProps) { flattenedSections = trimIntro(flattenedSections) } + if (!isFeatureEnabled('docs:auth')) { + flattenedSections = flattenedSections?.filter( + (section) => + 'product' in section && section.product !== 'auth' && section.product !== 'auth-admin' + ) + } + return (
    {(flattenedSections || []) diff --git a/apps/studio/next.config.js b/apps/studio/next.config.js index e24287147d208..93a6d8b029764 100644 --- a/apps/studio/next.config.js +++ b/apps/studio/next.config.js @@ -387,6 +387,11 @@ const nextConfig = { destination: '/organizations', permanent: false, }, + { + source: '/project/:ref/settings/auth', + destination: '/project/:ref/auth', + permanent: false, + }, ...(process.env.NEXT_PUBLIC_BASE_PATH?.length ? [ diff --git a/packages/common/enabled-features/enabled-features.json b/packages/common/enabled-features/enabled-features.json index 6c125708c9a56..5b3494a78500d 100644 --- a/packages/common/enabled-features/enabled-features.json +++ b/packages/common/enabled-features/enabled-features.json @@ -33,8 +33,17 @@ "database:replication": true, "database:roles": true, + "docs:auth": true, "docs:compliance": true, + "docs:contribution": true, "docs:self-hosting": true, + "docs:framework_quickstarts": true, + "docs:full_getting_started": true, + "docs:full_platform": true, + "docs:mobile_tutorials": true, + "docs:pgtap": true, + "docs:production_checklist": true, + "docs:web_apps": true, "feedback:docs": true, diff --git a/packages/common/enabled-features/enabled-features.schema.json b/packages/common/enabled-features/enabled-features.schema.json index 8d649907e7933..9943b890297ee 100644 --- a/packages/common/enabled-features/enabled-features.schema.json +++ b/packages/common/enabled-features/enabled-features.schema.json @@ -115,7 +115,14 @@ "type": "boolean", "description": "Enable the database roles page" }, - + "docs:auth": { + "type": "boolean", + "description": "Enable auth docs" + }, + "docs:contribution": { + "type": "boolean", + "description": "Enable documentation on contribution" + }, "docs:compliance": { "type": "boolean", "description": "Enable documentation on compliance" @@ -124,7 +131,34 @@ "type": "boolean", "description": "Enable documentation for self-hosting" }, - + "docs:framework_quickstarts": { + "type": "boolean", + "description": "Enable framework quickstarts documentation" + }, + "docs:full_getting_started": { + "type": "boolean", + "description": "Enable full getting started documentation" + }, + "docs:full_platform": { + "type": "boolean", + "description": "Enable full platform documentation" + }, + "docs:mobile_tutorials": { + "type": "boolean", + "description": "Enable mobile tutorials getting started documentation" + }, + "docs:pgtap": { + "type": "boolean", + "description": "Enable pgtap started documentation" + }, + "docs:production_checklist": { + "type": "boolean", + "description": "Enable production checklist" + }, + "docs:web_apps": { + "type": "boolean", + "description": "Enable web apps getting started documentation" + }, "feedback:docs": { "type": "boolean", "description": "Enable feedback submission for docs site" @@ -292,8 +326,17 @@ "dashboard_auth:sign_in_with_email", "database:replication", "database:roles", + "docs:auth", "docs:compliance", + "docs:contribution", + "docs:framework_quickstarts", + "docs:full_getting_started", + "docs:full_platform", + "docs:mobile_tutorials", + "docs:pgtap", + "docs:production_checklist", "docs:self-hosting", + "docs:web_apps", "feedback:docs", "integrations:partners", "integrations:show_stripe_wrapper",