From 9f39fe7d89f8da87fe710f5090b9634ca1cf28b8 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 10 Sep 2024 15:34:29 +0200 Subject: [PATCH] chore: move sidebar to .mjs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Co-authored-by: Camila Belo Co-authored-by: Patrik Oldsberg Co-authored-by: Johan Haals :wq Signed-off-by: blam --- microsite/docusaurus.config.ts | 2 +- microsite/sidebars.json | 561 --------------------------------- microsite/sidebars.mjs | 548 ++++++++++++++++++++++++++++++++ 3 files changed, 549 insertions(+), 562 deletions(-) delete mode 100644 microsite/sidebars.json create mode 100644 microsite/sidebars.mjs diff --git a/microsite/docusaurus.config.ts b/microsite/docusaurus.config.ts index 96edb57dea..8f4c08f8e9 100644 --- a/microsite/docusaurus.config.ts +++ b/microsite/docusaurus.config.ts @@ -85,7 +85,7 @@ const config: Config = { docs: { editUrl: 'https://github.com/backstage/backstage/edit/master/docs/', path: '../docs', - sidebarPath: 'sidebars.json', + sidebarPath: 'sidebars.mjs', ...(useVersionedDocs ? { includeCurrentVersion: true, diff --git a/microsite/sidebars.json b/microsite/sidebars.json deleted file mode 100644 index 4d3761c27d..0000000000 --- a/microsite/sidebars.json +++ /dev/null @@ -1,561 +0,0 @@ -{ - "docs": { - "Overview": [ - "overview/what-is-backstage", - "overview/architecture-overview", - "overview/roadmap", - "overview/vision", - "overview/background", - "overview/adopting", - "overview/versioning-policy", - "overview/threat-model", - "overview/support", - "overview/logos" - ], - "Getting Started": [ - "getting-started/index", - { - "type": "category", - "label": "Configuring Backstage", - "items": [ - "getting-started/config/database", - "getting-started/config/authentication", - "getting-started/configure-app-with-plugins", - "getting-started/app-custom-theme", - "getting-started/homepage" - ] - }, - { - "type": "category", - "label": "Using Backstage", - "items": [ - "getting-started/logging-in", - "getting-started/register-a-component", - "getting-started/create-a-component" - ] - }, - "getting-started/keeping-backstage-updated", - "getting-started/concepts" - ], - "Core Features": [ - { - "type": "category", - "label": "Software Catalog", - "items": [ - "features/software-catalog/software-catalog-overview", - "features/software-catalog/life-of-an-entity", - "features/software-catalog/configuration", - "features/software-catalog/system-model", - "features/software-catalog/descriptor-format", - "features/software-catalog/references", - "features/software-catalog/well-known-annotations", - "features/software-catalog/well-known-relations", - "features/software-catalog/well-known-statuses", - "features/software-catalog/extending-the-model", - "features/software-catalog/external-integrations", - "features/software-catalog/catalog-customization", - "features/software-catalog/software-catalog-api", - "features/software-catalog/creating-the-catalog-graph", - "features/software-catalog/faq" - ] - }, - { - "type": "category", - "label": "Kubernetes", - "items": [ - "features/kubernetes/overview", - "features/kubernetes/installation", - "features/kubernetes/configuration", - "features/kubernetes/authentication", - "features/kubernetes/authentication-strategies", - "features/kubernetes/troubleshooting", - "features/kubernetes/proxy" - ] - }, - { - "type": "category", - "label": "Software Templates", - "items": [ - "features/software-templates/software-templates-index", - "features/software-templates/configuration", - "features/software-templates/adding-templates", - "features/software-templates/writing-templates", - "features/software-templates/input-examples", - "features/software-templates/builtin-actions", - "features/software-templates/writing-custom-actions", - "features/software-templates/writing-tests-for-actions", - "features/software-templates/writing-custom-field-extensions", - "features/software-templates/writing-custom-step-layouts", - "features/software-templates/authorizing-scaffolder-template-details", - "features/software-templates/migrating-to-rjsf-v5", - "features/software-templates/migrating-from-v1beta2-to-v1beta3", - "features/software-templates/dry-run-testing" - ] - }, - { - "type": "category", - "label": "Backstage Search", - "items": [ - "features/search/search-overview", - "features/search/getting-started", - "features/search/concepts", - "features/search/architecture", - "features/search/search-engines", - "features/search/collators", - "features/search/how-to-guides" - ] - }, - { - "type": "category", - "label": "TechDocs", - "items": [ - "features/techdocs/techdocs-overview", - "features/techdocs/getting-started", - "features/techdocs/concepts", - "features/techdocs/addons", - "features/techdocs/architecture", - "features/techdocs/creating-and-publishing", - "features/techdocs/configuration", - "features/techdocs/using-cloud-storage", - "features/techdocs/configuring-ci-cd", - "features/techdocs/cli", - "features/techdocs/how-to-guides", - "features/techdocs/troubleshooting", - "features/techdocs/faqs" - ] - } - ], - "Integrations": [ - "integrations/index", - { - "type": "category", - "label": "AWS S3", - "items": [ - "integrations/aws-s3/locations", - "integrations/aws-s3/discovery" - ] - }, - { - "type": "category", - "label": "Azure", - "items": [ - "integrations/azure/locations", - "integrations/azure/discovery", - "integrations/azure/org" - ] - }, - { - "type": "category", - "label": "Bitbucket Cloud", - "items": [ - "integrations/bitbucketCloud/locations", - "integrations/bitbucketCloud/discovery" - ] - }, - { - "type": "category", - "label": "Bitbucket Server", - "items": [ - "integrations/bitbucketServer/locations", - "integrations/bitbucketServer/discovery" - ] - }, - { - "type": "category", - "label": "Datadog", - "items": ["integrations/datadog-rum/installation"] - }, - { - "type": "category", - "label": "Gerrit", - "items": [ - "integrations/gerrit/locations", - "integrations/gerrit/discovery" - ] - }, - { - "type": "category", - "label": "GitHub", - "items": [ - "integrations/github/locations", - "integrations/github/discovery", - "integrations/github/org", - "integrations/github/github-apps" - ] - }, - { - "type": "category", - "label": "GitLab", - "items": [ - "integrations/gitlab/locations", - "integrations/gitlab/discovery", - "integrations/gitlab/org" - ] - }, - { - "type": "category", - "label": "Gitea", - "items": ["integrations/gitea/locations"] - }, - { - "type": "category", - "label": "Harness", - "items": ["integrations/harness/locations"] - }, - { - "type": "category", - "label": "Google GCS", - "items": ["integrations/google-cloud-storage/locations"] - }, - { - "type": "category", - "label": "LDAP", - "items": ["integrations/ldap/org"] - } - ], - "Plugins": [ - "plugins/index", - "plugins/existing-plugins", - "plugins/create-a-plugin", - "plugins/plugin-development", - "plugins/structure-of-a-plugin", - "plugins/integrating-plugin-into-software-catalog", - "plugins/integrating-search-into-plugins", - "plugins/composability", - "plugins/internationalization", - "plugins/analytics", - "plugins/feature-flags", - { - "type": "category", - "label": "OpenAPI", - "items": [ - "openapi/01-getting-started", - "openapi/generate-client", - "openapi/test-case-validation" - ] - }, - { - "type": "category", - "label": "Backends and APIs", - "items": [ - "plugins/proxying", - "plugins/backend-plugin", - "plugins/call-existing-api" - ] - }, - { - "type": "category", - "label": "Testing", - "items": ["plugins/testing"] - }, - { - "type": "category", - "label": "Publishing", - "items": [ - "plugins/publish-private", - "plugins/add-to-directory", - "plugins/observability" - ] - } - ], - "Configuration": [ - "conf/index", - "conf/reading", - "conf/writing", - "conf/defining" - ], - "Notifications": ["notifications/index"], - "Auth and identity": [ - "auth/index", - { - "type": "category", - "label": "Included providers", - "items": [ - "auth/auth0/provider", - "auth/atlassian/provider", - "auth/aws-alb/provider", - "auth/microsoft/provider", - "auth/microsoft/easy-auth", - "auth/bitbucket/provider", - "auth/bitbucketServer/provider", - "auth/cloudflare/provider", - "auth/github/provider", - "auth/gitlab/provider", - "auth/google/provider", - "auth/google/gcp-iap-auth", - "auth/guest/provider", - "auth/okta/provider", - "auth/oauth2-proxy/provider", - "auth/onelogin/provider", - "auth/vmware-cloud/provider" - ] - }, - "auth/identity-resolver", - "auth/oauth", - "auth/oidc", - "auth/add-auth-provider", - "auth/service-to-service-auth", - "auth/autologout", - "auth/troubleshooting" - ], - "Permissions": [ - "permissions/overview", - "permissions/concepts", - "permissions/getting-started", - "permissions/writing-a-policy", - "permissions/frontend-integration", - "permissions/custom-rules", - { - "type": "category", - "label": "Tutorial: using Permissions in your plugin", - "items": [ - "permissions/plugin-authors/01-setup", - "permissions/plugin-authors/02-adding-a-basic-permission-check", - "permissions/plugin-authors/03-adding-a-resource-permission-check", - "permissions/plugin-authors/04-authorizing-access-to-paginated-data", - "permissions/plugin-authors/05-frontend-authorization" - ] - } - ], - "Tooling": [ - { - "type": "category", - "label": "Backstage CLI", - "items": [ - "tooling/cli/overview", - "tooling/cli/build-system", - "tooling/cli/commands" - ] - }, - { - "type": "category", - "label": "Local Development", - "items": [ - "tooling/local-dev/linking-local-packages", - "tooling/local-dev/debugging", - "tooling/local-dev/profiling" - ] - }, - "tooling/package-metadata" - ], - "Deployment": [ - "deployment/index", - "deployment/scaling", - "deployment/docker", - "deployment/k8s", - "deployment/heroku", - "deployment/koyeb", - "deployment/flightcontrol", - { - "type": "category", - "label": "Using Backstage Deploy (alpha)", - "items": ["deployment/backstage-deploy/aws-lightsail"] - } - ], - "New Backend System": [ - "backend-system/index", - { - "type": "category", - "label": "Architecture", - "items": [ - "backend-system/architecture/index", - "backend-system/architecture/services", - "backend-system/architecture/plugins", - "backend-system/architecture/extension-points", - "backend-system/architecture/modules", - "backend-system/architecture/feature-loaders", - "backend-system/architecture/naming-patterns" - ] - }, - { - "type": "category", - "label": "Building Backends", - "items": [ - "backend-system/building-backends/index", - "backend-system/building-backends/migrating" - ] - }, - { - "type": "category", - "label": "Building Plugins & Modules", - "items": [ - "backend-system/building-plugins-and-modules/index", - "backend-system/building-plugins-and-modules/testing", - "backend-system/building-plugins-and-modules/migrating" - ] - }, - { - "type": "category", - "label": "Core Services", - "items": [ - "backend-system/core-services/index", - "backend-system/core-services/auth", - "backend-system/core-services/cache", - "backend-system/core-services/database", - "backend-system/core-services/discovery", - "backend-system/core-services/http-auth", - "backend-system/core-services/http-router", - "backend-system/core-services/identity", - "backend-system/core-services/lifecycle", - "backend-system/core-services/logger", - "backend-system/core-services/permissions", - "backend-system/core-services/plugin-metadata", - "backend-system/core-services/root-config", - "backend-system/core-services/root-health", - "backend-system/core-services/root-http-router", - "backend-system/core-services/root-lifecycle", - "backend-system/core-services/root-logger", - "backend-system/core-services/scheduler", - "backend-system/core-services/token-manager", - "backend-system/core-services/url-reader", - "backend-system/core-services/user-info" - ] - } - ], - "New Frontend System": [ - "frontend-system/index", - { - "type": "category", - "label": "Architecture", - "items": [ - "frontend-system/architecture/index", - "frontend-system/architecture/app", - "frontend-system/architecture/plugins", - "frontend-system/architecture/extensions", - "frontend-system/architecture/extension-blueprints", - "frontend-system/architecture/extension-overrides", - "frontend-system/architecture/references", - "frontend-system/architecture/utility-apis", - "frontend-system/architecture/routes", - "frontend-system/architecture/naming-patterns", - "frontend-system/architecture/migrations" - ] - }, - { - "type": "category", - "label": "Building Plugins", - "items": [ - "frontend-system/building-plugins/index", - "frontend-system/building-plugins/testing", - "frontend-system/building-plugins/common-extension-blueprints", - "frontend-system/building-plugins/built-in-data-refs", - "frontend-system/building-plugins/migrating" - ] - }, - { - "type": "category", - "label": "Building Apps", - "items": [ - "frontend-system/building-apps/index", - "frontend-system/building-apps/configuring-extensions", - "frontend-system/building-apps/built-in-extensions", - "frontend-system/building-apps/plugin-conversion", - "frontend-system/building-apps/migrating" - ] - }, - { - "type": "category", - "label": "Utility APIs", - "items": [ - "frontend-system/utility-apis/index", - "frontend-system/utility-apis/creating", - "frontend-system/utility-apis/consuming", - "frontend-system/utility-apis/configuring" - ] - } - ], - "Designing for Backstage": [ - "dls/design", - "dls/component-design-guidelines", - "dls/contributing-to-storybook", - "dls/figma" - ], - "API Reference": [ - { - "type": "category", - "label": "Guides", - "items": ["api/utility-apis"] - }, - { - "type": "category", - "label": "API Reference", - "items": ["reference/index"] - }, - "api/deprecations" - ], - "Tutorials": [ - "tutorials/quickstart-app-plugin", - "tutorials/react-router-stable-migration", - "tutorials/react18-migration", - "tutorials/package-role-migration", - "tutorials/migrating-away-from-core", - "tutorials/configuring-plugin-databases", - "tutorials/switching-sqlite-postgres", - "tutorials/using-backstage-proxy-within-plugin", - "tutorials/yarn-migration", - "tutorials/migrate-to-mui5", - "tutorials/auth-service-migration", - "tutorials/enable-public-entry", - "tutorials/setup-opentelemetry" - ], - "Architecture Decision Records (ADRs)": [ - "architecture-decisions/adrs-overview", - "architecture-decisions/adrs-adr001", - "architecture-decisions/adrs-adr002", - "architecture-decisions/adrs-adr003", - "architecture-decisions/adrs-adr004", - "architecture-decisions/adrs-adr005", - "architecture-decisions/adrs-adr006", - "architecture-decisions/adrs-adr007", - "architecture-decisions/adrs-adr008", - "architecture-decisions/adrs-adr009", - "architecture-decisions/adrs-adr010", - "architecture-decisions/adrs-adr011", - "architecture-decisions/adrs-adr012", - "architecture-decisions/adrs-adr013" - ], - "FAQ": ["faq/index", "faq/product", "faq/technical"], - "Accessibility": ["accessibility/index"], - "Contribute": [ - "contribute/index", - "contribute/getting-involved", - "contribute/project-structure" - ], - "References": ["references/glossary"] - }, - "releases": { - "Release Notes": [ - "releases/v1.30.0", - "releases/v1.29.0", - "releases/v1.28.0", - "releases/v1.27.0", - "releases/v1.26.0", - "releases/v1.25.0", - "releases/v1.24.0", - "releases/v1.23.0", - "releases/v1.22.0", - "releases/v1.21.0", - "releases/v1.20.0", - "releases/v1.19.0", - "releases/v1.18.0", - "releases/v1.17.0", - "releases/v1.16.0", - "releases/v1.15.0", - "releases/v1.14.0", - "releases/v1.13.0", - "releases/v1.12.0", - "releases/v1.11.0", - "releases/v1.10.0", - "releases/v1.9.0", - "releases/v1.8.0", - "releases/v1.7.0", - "releases/v1.6.0", - "releases/v1.5.0", - "releases/v1.4.0", - "releases/v1.3.0", - "releases/v1.2.0", - "releases/v1.1.0", - "releases/v1.0.0" - ] - } -} diff --git a/microsite/sidebars.mjs b/microsite/sidebars.mjs new file mode 100644 index 0000000000..675f53a7d6 --- /dev/null +++ b/microsite/sidebars.mjs @@ -0,0 +1,548 @@ +import fs from 'node:fs'; +import path from 'node:path'; + +const docsDir = path.resolve( + path.dirname(new URL(import.meta.url).pathname), + '../docs', +); + +const allReleaseDocs = fs.readdirSync(path.resolve(docsDir, 'releases')); +const mainRleases = allReleaseDocs + .filter(doc => doc.match(/^v\d+\.\d+\.\d+\.md$/)) + .map(doc => doc.replace(/\.md$/, '')) + .sort((a, b) => { // Semver sort + const aVal = a.slice(1).split('.').reduce((acc, val) => acc * 1000 + parseInt(val), 0); + const bVal = b.slice(1).split('.').reduce((acc, val) => acc * 1000 + parseInt(val), 0); + return bVal - aVal; + }) + .map(release => `releases/${release}`); + +export default { + docs: { + Overview: [ + 'overview/what-is-backstage', + 'overview/architecture-overview', + 'overview/roadmap', + 'overview/vision', + 'overview/background', + 'overview/adopting', + 'overview/versioning-policy', + 'overview/threat-model', + 'overview/support', + 'overview/logos', + ], + 'Getting Started': [ + 'getting-started/index', + { + type: 'category', + label: 'Configuring Backstage', + items: [ + 'getting-started/config/database', + 'getting-started/config/authentication', + 'getting-started/configure-app-with-plugins', + 'getting-started/app-custom-theme', + 'getting-started/homepage', + ], + }, + { + type: 'category', + label: 'Using Backstage', + items: [ + 'getting-started/logging-in', + 'getting-started/register-a-component', + 'getting-started/create-a-component', + ], + }, + 'getting-started/keeping-backstage-updated', + 'getting-started/concepts', + ], + 'Core Features': [ + { + type: 'category', + label: 'Software Catalog', + items: [ + 'features/software-catalog/software-catalog-overview', + 'features/software-catalog/life-of-an-entity', + 'features/software-catalog/configuration', + 'features/software-catalog/system-model', + 'features/software-catalog/descriptor-format', + 'features/software-catalog/references', + 'features/software-catalog/well-known-annotations', + 'features/software-catalog/well-known-relations', + 'features/software-catalog/well-known-statuses', + 'features/software-catalog/extending-the-model', + 'features/software-catalog/external-integrations', + 'features/software-catalog/catalog-customization', + 'features/software-catalog/software-catalog-api', + 'features/software-catalog/creating-the-catalog-graph', + 'features/software-catalog/faq', + ], + }, + { + type: 'category', + label: 'Kubernetes', + items: [ + 'features/kubernetes/overview', + 'features/kubernetes/installation', + 'features/kubernetes/configuration', + 'features/kubernetes/authentication', + 'features/kubernetes/authentication-strategies', + 'features/kubernetes/troubleshooting', + 'features/kubernetes/proxy', + ], + }, + { + type: 'category', + label: 'Software Templates', + items: [ + 'features/software-templates/software-templates-index', + 'features/software-templates/configuration', + 'features/software-templates/adding-templates', + 'features/software-templates/writing-templates', + 'features/software-templates/input-examples', + 'features/software-templates/builtin-actions', + 'features/software-templates/writing-custom-actions', + 'features/software-templates/writing-tests-for-actions', + 'features/software-templates/writing-custom-field-extensions', + 'features/software-templates/writing-custom-step-layouts', + 'features/software-templates/authorizing-scaffolder-template-details', + 'features/software-templates/migrating-to-rjsf-v5', + 'features/software-templates/migrating-from-v1beta2-to-v1beta3', + 'features/software-templates/dry-run-testing', + ], + }, + { + type: 'category', + label: 'Backstage Search', + items: [ + 'features/search/search-overview', + 'features/search/getting-started', + 'features/search/concepts', + 'features/search/architecture', + 'features/search/search-engines', + 'features/search/collators', + 'features/search/how-to-guides', + ], + }, + { + type: 'category', + label: 'TechDocs', + items: [ + 'features/techdocs/techdocs-overview', + 'features/techdocs/getting-started', + 'features/techdocs/concepts', + 'features/techdocs/addons', + 'features/techdocs/architecture', + 'features/techdocs/creating-and-publishing', + 'features/techdocs/configuration', + 'features/techdocs/using-cloud-storage', + 'features/techdocs/configuring-ci-cd', + 'features/techdocs/cli', + 'features/techdocs/how-to-guides', + 'features/techdocs/troubleshooting', + 'features/techdocs/faqs', + ], + }, + ], + Integrations: [ + 'integrations/index', + { + type: 'category', + label: 'AWS S3', + items: [ + 'integrations/aws-s3/locations', + 'integrations/aws-s3/discovery', + ], + }, + { + type: 'category', + label: 'Azure', + items: [ + 'integrations/azure/locations', + 'integrations/azure/discovery', + 'integrations/azure/org', + ], + }, + { + type: 'category', + label: 'Bitbucket Cloud', + items: [ + 'integrations/bitbucketCloud/locations', + 'integrations/bitbucketCloud/discovery', + ], + }, + { + type: 'category', + label: 'Bitbucket Server', + items: [ + 'integrations/bitbucketServer/locations', + 'integrations/bitbucketServer/discovery', + ], + }, + { + type: 'category', + label: 'Datadog', + items: ['integrations/datadog-rum/installation'], + }, + { + type: 'category', + label: 'Gerrit', + items: [ + 'integrations/gerrit/locations', + 'integrations/gerrit/discovery', + ], + }, + { + type: 'category', + label: 'GitHub', + items: [ + 'integrations/github/locations', + 'integrations/github/discovery', + 'integrations/github/org', + 'integrations/github/github-apps', + ], + }, + { + type: 'category', + label: 'GitLab', + items: [ + 'integrations/gitlab/locations', + 'integrations/gitlab/discovery', + 'integrations/gitlab/org', + ], + }, + { + type: 'category', + label: 'Gitea', + items: ['integrations/gitea/locations'], + }, + { + type: 'category', + label: 'Harness', + items: ['integrations/harness/locations'], + }, + { + type: 'category', + label: 'Google GCS', + items: ['integrations/google-cloud-storage/locations'], + }, + { + type: 'category', + label: 'LDAP', + items: ['integrations/ldap/org'], + }, + ], + Plugins: [ + 'plugins/index', + 'plugins/existing-plugins', + 'plugins/create-a-plugin', + 'plugins/plugin-development', + 'plugins/structure-of-a-plugin', + 'plugins/integrating-plugin-into-software-catalog', + 'plugins/integrating-search-into-plugins', + 'plugins/composability', + 'plugins/internationalization', + 'plugins/analytics', + 'plugins/feature-flags', + { + type: 'category', + label: 'OpenAPI', + items: [ + 'openapi/01-getting-started', + 'openapi/generate-client', + 'openapi/test-case-validation', + ], + }, + { + type: 'category', + label: 'Backends and APIs', + items: [ + 'plugins/proxying', + 'plugins/backend-plugin', + 'plugins/call-existing-api', + ], + }, + { + type: 'category', + label: 'Testing', + items: ['plugins/testing'], + }, + { + type: 'category', + label: 'Publishing', + items: [ + 'plugins/publish-private', + 'plugins/add-to-directory', + 'plugins/observability', + ], + }, + ], + Configuration: [ + 'conf/index', + 'conf/reading', + 'conf/writing', + 'conf/defining', + ], + Notifications: ['notifications/index'], + 'Auth and identity': [ + 'auth/index', + { + type: 'category', + label: 'Included providers', + items: [ + 'auth/auth0/provider', + 'auth/atlassian/provider', + 'auth/aws-alb/provider', + 'auth/microsoft/provider', + 'auth/microsoft/easy-auth', + 'auth/bitbucket/provider', + 'auth/bitbucketServer/provider', + 'auth/cloudflare/provider', + 'auth/github/provider', + 'auth/gitlab/provider', + 'auth/google/provider', + 'auth/google/gcp-iap-auth', + 'auth/guest/provider', + 'auth/okta/provider', + 'auth/oauth2-proxy/provider', + 'auth/onelogin/provider', + 'auth/vmware-cloud/provider', + ], + }, + 'auth/identity-resolver', + 'auth/oauth', + 'auth/oidc', + 'auth/add-auth-provider', + 'auth/service-to-service-auth', + 'auth/autologout', + 'auth/troubleshooting', + ], + Permissions: [ + 'permissions/overview', + 'permissions/concepts', + 'permissions/getting-started', + 'permissions/writing-a-policy', + 'permissions/frontend-integration', + 'permissions/custom-rules', + { + type: 'category', + label: 'Tutorial: using Permissions in your plugin', + items: [ + 'permissions/plugin-authors/01-setup', + 'permissions/plugin-authors/02-adding-a-basic-permission-check', + 'permissions/plugin-authors/03-adding-a-resource-permission-check', + 'permissions/plugin-authors/04-authorizing-access-to-paginated-data', + 'permissions/plugin-authors/05-frontend-authorization', + ], + }, + ], + Tooling: [ + { + type: 'category', + label: 'Backstage CLI', + items: [ + 'tooling/cli/overview', + 'tooling/cli/build-system', + 'tooling/cli/commands', + ], + }, + { + type: 'category', + label: 'Local Development', + items: [ + 'tooling/local-dev/linking-local-packages', + 'tooling/local-dev/debugging', + 'tooling/local-dev/profiling', + ], + }, + 'tooling/package-metadata', + ], + Deployment: [ + 'deployment/index', + 'deployment/scaling', + 'deployment/docker', + 'deployment/k8s', + 'deployment/heroku', + 'deployment/koyeb', + 'deployment/flightcontrol', + { + type: 'category', + label: 'Using Backstage Deploy (alpha)', + items: ['deployment/backstage-deploy/aws-lightsail'], + }, + ], + 'New Backend System': [ + 'backend-system/index', + { + type: 'category', + label: 'Architecture', + items: [ + 'backend-system/architecture/index', + 'backend-system/architecture/services', + 'backend-system/architecture/plugins', + 'backend-system/architecture/extension-points', + 'backend-system/architecture/modules', + 'backend-system/architecture/feature-loaders', + 'backend-system/architecture/naming-patterns', + ], + }, + { + type: 'category', + label: 'Building Backends', + items: [ + 'backend-system/building-backends/index', + 'backend-system/building-backends/migrating', + ], + }, + { + type: 'category', + label: 'Building Plugins & Modules', + items: [ + 'backend-system/building-plugins-and-modules/index', + 'backend-system/building-plugins-and-modules/testing', + 'backend-system/building-plugins-and-modules/migrating', + ], + }, + { + type: 'category', + label: 'Core Services', + items: [ + 'backend-system/core-services/index', + 'backend-system/core-services/auth', + 'backend-system/core-services/cache', + 'backend-system/core-services/database', + 'backend-system/core-services/discovery', + 'backend-system/core-services/http-auth', + 'backend-system/core-services/http-router', + 'backend-system/core-services/identity', + 'backend-system/core-services/lifecycle', + 'backend-system/core-services/logger', + 'backend-system/core-services/permissions', + 'backend-system/core-services/plugin-metadata', + 'backend-system/core-services/root-config', + 'backend-system/core-services/root-health', + 'backend-system/core-services/root-http-router', + 'backend-system/core-services/root-lifecycle', + 'backend-system/core-services/root-logger', + 'backend-system/core-services/scheduler', + 'backend-system/core-services/token-manager', + 'backend-system/core-services/url-reader', + 'backend-system/core-services/user-info', + ], + }, + ], + 'New Frontend System': [ + 'frontend-system/index', + { + type: 'category', + label: 'Architecture', + items: [ + 'frontend-system/architecture/index', + 'frontend-system/architecture/app', + 'frontend-system/architecture/plugins', + 'frontend-system/architecture/extensions', + 'frontend-system/architecture/extension-blueprints', + 'frontend-system/architecture/extension-overrides', + 'frontend-system/architecture/references', + 'frontend-system/architecture/utility-apis', + 'frontend-system/architecture/routes', + 'frontend-system/architecture/naming-patterns', + 'frontend-system/architecture/migrations', + ], + }, + { + type: 'category', + label: 'Building Plugins', + items: [ + 'frontend-system/building-plugins/index', + 'frontend-system/building-plugins/testing', + 'frontend-system/building-plugins/common-extension-blueprints', + 'frontend-system/building-plugins/built-in-data-refs', + 'frontend-system/building-plugins/migrating', + ], + }, + { + type: 'category', + label: 'Building Apps', + items: [ + 'frontend-system/building-apps/index', + 'frontend-system/building-apps/configuring-extensions', + 'frontend-system/building-apps/built-in-extensions', + 'frontend-system/building-apps/plugin-conversion', + 'frontend-system/building-apps/migrating', + ], + }, + { + type: 'category', + label: 'Utility APIs', + items: [ + 'frontend-system/utility-apis/index', + 'frontend-system/utility-apis/creating', + 'frontend-system/utility-apis/consuming', + 'frontend-system/utility-apis/configuring', + ], + }, + ], + 'Designing for Backstage': [ + 'dls/design', + 'dls/component-design-guidelines', + 'dls/contributing-to-storybook', + 'dls/figma', + ], + 'API Reference': [ + { + type: 'category', + label: 'Guides', + items: ['api/utility-apis'], + }, + { + type: 'category', + label: 'API Reference', + items: ['reference/index'], + }, + 'api/deprecations', + ], + Tutorials: [ + 'tutorials/quickstart-app-plugin', + 'tutorials/react-router-stable-migration', + 'tutorials/react18-migration', + 'tutorials/package-role-migration', + 'tutorials/migrating-away-from-core', + 'tutorials/configuring-plugin-databases', + 'tutorials/switching-sqlite-postgres', + 'tutorials/using-backstage-proxy-within-plugin', + 'tutorials/yarn-migration', + 'tutorials/migrate-to-mui5', + 'tutorials/auth-service-migration', + 'tutorials/enable-public-entry', + 'tutorials/setup-opentelemetry', + ], + 'Architecture Decision Records (ADRs)': [ + 'architecture-decisions/adrs-overview', + 'architecture-decisions/adrs-adr001', + 'architecture-decisions/adrs-adr002', + 'architecture-decisions/adrs-adr003', + 'architecture-decisions/adrs-adr004', + 'architecture-decisions/adrs-adr005', + 'architecture-decisions/adrs-adr006', + 'architecture-decisions/adrs-adr007', + 'architecture-decisions/adrs-adr008', + 'architecture-decisions/adrs-adr009', + 'architecture-decisions/adrs-adr010', + 'architecture-decisions/adrs-adr011', + 'architecture-decisions/adrs-adr012', + 'architecture-decisions/adrs-adr013', + ], + FAQ: ['faq/index', 'faq/product', 'faq/technical'], + Accessibility: ['accessibility/index'], + Contribute: [ + 'contribute/index', + 'contribute/getting-involved', + 'contribute/project-structure', + ], + References: ['references/glossary'], + }, + releases: { + 'Release Notes': mainRleases + }, +};