From 25418372e03b14d8e6d3e85eb118c5f8a43fdaba Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 18 Mar 2026 17:25:01 +0100 Subject: [PATCH] create-app: rename template directories Rename `next-app` to `default-app` and `default-app` to `legacy-app` to better reflect their roles. Signed-off-by: Patrik Oldsberg Made-with: Cursor Signed-off-by: Patrik Oldsberg Made-with: Cursor Signed-off-by: Patrik Oldsberg Made-with: Cursor --- .changeset/rename-create-app-templates.md | 5 + .gitignore | 2 +- packages/create-app/src/createApp.test.ts | 6 +- packages/create-app/src/createApp.ts | 4 +- packages/create-app/src/lib/tasks.test.ts | 2 +- .../templates/default-app/app-config.yaml.hbs | 15 +++ .../templates/default-app/package.json | 1 + .../templates/default-app/package.json.hbs | 15 +-- .../packages/app/e2e-tests/app.test.ts | 4 +- .../default-app/packages/app/package.json.hbs | 48 ++++---- .../default-app/packages/app/src/App.test.tsx | 2 +- .../default-app/packages/app/src/App.tsx | 115 +----------------- .../default-app/packages/app/src/index.tsx | 2 +- .../packages/app/src/modules/nav/LogoFull.tsx | 0 .../packages/app/src/modules/nav/LogoIcon.tsx | 0 .../packages/app/src/modules/nav/Sidebar.tsx | 0 .../app/src/modules/nav/SidebarLogo.tsx | 0 .../packages/app/src/modules/nav/index.ts | 0 .../templates/default-app/yarn.lock | 13 +- .../{next-app => legacy-app}/.dockerignore | 0 .../{next-app => legacy-app}/.eslintignore | 0 .../{next-app => legacy-app}/.eslintrc.js.hbs | 0 .../{next-app => legacy-app}/.gitignore.hbs | 0 .../{next-app => legacy-app}/.prettierignore | 0 .../.yarn/releases/yarn-4.4.1.cjs | 0 .../{next-app => legacy-app}/.yarnrc.yml.hbs | 0 .../{next-app => legacy-app}/README.md | 0 .../app-config.local.yaml | 0 .../app-config.production.yaml | 0 .../app-config.yaml.hbs | 9 -- .../backstage.json.hbs | 0 .../catalog-info.yaml.hbs | 0 .../examples/entities.yaml | 0 .../examples/org.yaml | 0 .../template/content/catalog-info.yaml | 0 .../examples/template/content/index.js | 0 .../examples/template/content/package.json | 0 .../examples/template/template.yaml | 0 .../templates/legacy-app/package.json | 1 + .../{next-app => legacy-app}/package.json.hbs | 15 ++- .../packages/README.md | 0 .../packages/app/.eslintignore | 0 .../packages/app/.eslintrc.js.hbs | 0 .../packages/app/e2e-tests/app.test.ts | 8 +- .../legacy-app/packages/app/package.json.hbs | 76 ++++++++++++ .../app/public/android-chrome-192x192.png | Bin .../packages/app/public/apple-touch-icon.png | Bin .../packages/app/public/favicon-16x16.png | Bin .../packages/app/public/favicon-32x32.png | Bin .../packages/app/public/favicon.ico | Bin .../packages/app/public/index.html | 0 .../packages/app/public/manifest.json | 0 .../packages/app/public/robots.txt | 0 .../packages/app/public/safari-pinned-tab.svg | 0 .../packages/app/src/App.test.tsx | 2 +- .../legacy-app/packages/app/src/App.tsx | 112 +++++++++++++++++ .../packages/app/src/apis.ts | 0 .../app/src/components/Root/LogoFull.tsx | 0 .../app/src/components/Root/LogoIcon.tsx | 0 .../packages/app/src/components/Root/Root.tsx | 0 .../packages/app/src/components/Root/index.ts | 0 .../app/src/components/catalog/EntityPage.tsx | 0 .../app/src/components/search/SearchPage.tsx | 0 .../packages/app/src/index.tsx | 2 +- .../packages/app/src/setupTests.ts | 0 .../packages/backend/.eslintrc.js.hbs | 0 .../packages/backend/Dockerfile | 0 .../packages/backend/README.md | 0 .../packages/backend/package.json.hbs | 0 .../packages/backend/src/index.ts | 0 .../playwright.config.ts | 0 .../plugins/README.md | 0 .../{next-app => legacy-app}/tsconfig.json | 0 .../{next-app => legacy-app}/yarn.lock | 0 .../next-app/packages/app/package.json.hbs | 72 ----------- .../next-app/packages/app/src/App.tsx | 7 -- packages/e2e-test/src/commands/runCommand.ts | 6 +- 77 files changed, 282 insertions(+), 262 deletions(-) create mode 100644 .changeset/rename-create-app-templates.md create mode 100644 packages/create-app/templates/default-app/package.json rename packages/create-app/templates/{next-app => default-app}/packages/app/src/modules/nav/LogoFull.tsx (100%) rename packages/create-app/templates/{next-app => default-app}/packages/app/src/modules/nav/LogoIcon.tsx (100%) rename packages/create-app/templates/{next-app => default-app}/packages/app/src/modules/nav/Sidebar.tsx (100%) rename packages/create-app/templates/{next-app => default-app}/packages/app/src/modules/nav/SidebarLogo.tsx (100%) rename packages/create-app/templates/{next-app => default-app}/packages/app/src/modules/nav/index.ts (100%) rename packages/create-app/templates/{next-app => legacy-app}/.dockerignore (100%) rename packages/create-app/templates/{next-app => legacy-app}/.eslintignore (100%) rename packages/create-app/templates/{next-app => legacy-app}/.eslintrc.js.hbs (100%) rename packages/create-app/templates/{next-app => legacy-app}/.gitignore.hbs (100%) rename packages/create-app/templates/{next-app => legacy-app}/.prettierignore (100%) rename packages/create-app/templates/{next-app => legacy-app}/.yarn/releases/yarn-4.4.1.cjs (100%) rename packages/create-app/templates/{next-app => legacy-app}/.yarnrc.yml.hbs (100%) rename packages/create-app/templates/{next-app => legacy-app}/README.md (100%) rename packages/create-app/templates/{default-app => legacy-app}/app-config.local.yaml (100%) rename packages/create-app/templates/{next-app => legacy-app}/app-config.production.yaml (100%) rename packages/create-app/templates/{next-app => legacy-app}/app-config.yaml.hbs (95%) rename packages/create-app/templates/{next-app => legacy-app}/backstage.json.hbs (100%) rename packages/create-app/templates/{next-app => legacy-app}/catalog-info.yaml.hbs (100%) rename packages/create-app/templates/{next-app => legacy-app}/examples/entities.yaml (100%) rename packages/create-app/templates/{next-app => legacy-app}/examples/org.yaml (100%) rename packages/create-app/templates/{next-app => legacy-app}/examples/template/content/catalog-info.yaml (100%) rename packages/create-app/templates/{next-app => legacy-app}/examples/template/content/index.js (100%) rename packages/create-app/templates/{next-app => legacy-app}/examples/template/content/package.json (100%) rename packages/create-app/templates/{next-app => legacy-app}/examples/template/template.yaml (100%) create mode 100644 packages/create-app/templates/legacy-app/package.json rename packages/create-app/templates/{next-app => legacy-app}/package.json.hbs (69%) rename packages/create-app/templates/{next-app => legacy-app}/packages/README.md (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/.eslintignore (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/.eslintrc.js.hbs (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/e2e-tests/app.test.ts (79%) create mode 100644 packages/create-app/templates/legacy-app/packages/app/package.json.hbs rename packages/create-app/templates/{next-app => legacy-app}/packages/app/public/android-chrome-192x192.png (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/public/apple-touch-icon.png (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/public/favicon-16x16.png (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/public/favicon-32x32.png (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/public/favicon.ico (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/public/index.html (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/public/manifest.json (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/public/robots.txt (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/public/safari-pinned-tab.svg (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/src/App.test.tsx (92%) create mode 100644 packages/create-app/templates/legacy-app/packages/app/src/App.tsx rename packages/create-app/templates/{default-app => legacy-app}/packages/app/src/apis.ts (100%) rename packages/create-app/templates/{default-app => legacy-app}/packages/app/src/components/Root/LogoFull.tsx (100%) rename packages/create-app/templates/{default-app => legacy-app}/packages/app/src/components/Root/LogoIcon.tsx (100%) rename packages/create-app/templates/{default-app => legacy-app}/packages/app/src/components/Root/Root.tsx (100%) rename packages/create-app/templates/{default-app => legacy-app}/packages/app/src/components/Root/index.ts (100%) rename packages/create-app/templates/{default-app => legacy-app}/packages/app/src/components/catalog/EntityPage.tsx (100%) rename packages/create-app/templates/{default-app => legacy-app}/packages/app/src/components/search/SearchPage.tsx (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/src/index.tsx (64%) rename packages/create-app/templates/{next-app => legacy-app}/packages/app/src/setupTests.ts (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/backend/.eslintrc.js.hbs (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/backend/Dockerfile (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/backend/README.md (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/backend/package.json.hbs (100%) rename packages/create-app/templates/{next-app => legacy-app}/packages/backend/src/index.ts (100%) rename packages/create-app/templates/{next-app => legacy-app}/playwright.config.ts (100%) rename packages/create-app/templates/{next-app => legacy-app}/plugins/README.md (100%) rename packages/create-app/templates/{next-app => legacy-app}/tsconfig.json (100%) rename packages/create-app/templates/{next-app => legacy-app}/yarn.lock (100%) delete mode 100644 packages/create-app/templates/next-app/packages/app/package.json.hbs delete mode 100644 packages/create-app/templates/next-app/packages/app/src/App.tsx diff --git a/.changeset/rename-create-app-templates.md b/.changeset/rename-create-app-templates.md new file mode 100644 index 0000000000..3e46b2e0db --- /dev/null +++ b/.changeset/rename-create-app-templates.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Renamed the built-in template directories from `next-app` to `default-app` and `default-app` to `legacy-app`. diff --git a/.gitignore b/.gitignore index e93a77b462..b3bb98901d 100644 --- a/.gitignore +++ b/.gitignore @@ -148,7 +148,7 @@ site # Local configuration files *.local.yaml -!packages/create-app/templates/default-app/app-config.local.yaml +!packages/create-app/templates/legacy-app/app-config.local.yaml # Sensitive credentials *-credentials.yaml diff --git a/packages/create-app/src/createApp.test.ts b/packages/create-app/src/createApp.test.ts index a032f9bb3b..06a0e7df05 100644 --- a/packages/create-app/src/createApp.test.ts +++ b/packages/create-app/src/createApp.test.ts @@ -69,7 +69,7 @@ describe('command entrypoint', () => { expect(tryInitGitRepositoryMock).toHaveBeenCalled(); expect(templatingMock).toHaveBeenCalled(); expect(templatingMock.mock.lastCall?.[0]).toEqual( - findOwnPaths(__dirname).resolve('templates/next-app'), + findOwnPaths(__dirname).resolve('templates/default-app'), ); expect(templatingMock.mock.lastCall?.[1]).toContain( path.join(tmpdir(), 'MyApp'), @@ -85,7 +85,7 @@ describe('command entrypoint', () => { expect(tryInitGitRepositoryMock).toHaveBeenCalled(); expect(templatingMock).toHaveBeenCalled(); expect(templatingMock.mock.lastCall?.[0]).toEqual( - findOwnPaths(__dirname).resolve('templates/next-app'), + findOwnPaths(__dirname).resolve('templates/default-app'), ); expect(templatingMock.mock.lastCall?.[1]).toEqual('myDirectory'); expect(buildAppMock).toHaveBeenCalled(); @@ -98,7 +98,7 @@ describe('command entrypoint', () => { expect(tryInitGitRepositoryMock).toHaveBeenCalled(); expect(templatingMock).toHaveBeenCalled(); expect(templatingMock.mock.lastCall?.[0]).toEqual( - findOwnPaths(__dirname).resolve('templates/default-app'), + findOwnPaths(__dirname).resolve('templates/legacy-app'), ); expect(templatingMock.mock.lastCall?.[1]).toContain( path.join(tmpdir(), 'MyApp'), diff --git a/packages/create-app/src/createApp.ts b/packages/create-app/src/createApp.ts index 68c27d3a1a..21a7cf272c 100644 --- a/packages/create-app/src/createApp.ts +++ b/packages/create-app/src/createApp.ts @@ -67,8 +67,8 @@ export default async (opts: OptionValues): Promise => { /* eslint-disable-next-line no-restricted-syntax */ const ownPaths = findOwnPaths(__dirname); const builtInTemplate = opts.legacy - ? ownPaths.resolve('templates/default-app') - : ownPaths.resolve('templates/next-app'); + ? ownPaths.resolve('templates/legacy-app') + : ownPaths.resolve('templates/default-app'); // Use `--template-path` argument as template when specified. Otherwise, use the default template. const templateDir = opts.templatePath diff --git a/packages/create-app/src/lib/tasks.test.ts b/packages/create-app/src/lib/tasks.test.ts index 50f9d18e26..15b7d59ed7 100644 --- a/packages/create-app/src/lib/tasks.test.ts +++ b/packages/create-app/src/lib/tasks.test.ts @@ -276,7 +276,7 @@ describe('tasks', () => { describe('templatingTask', () => { it('should generate a project populating context parameters', async () => { - const templateDir = resolvePath(__dirname, '../../templates/default-app'); + const templateDir = resolvePath(__dirname, '../../templates/legacy-app'); const destinationDir = 'templatedApp'; const context = { name: 'SuperCoolBackstageInstance', diff --git a/packages/create-app/templates/default-app/app-config.yaml.hbs b/packages/create-app/templates/default-app/app-config.yaml.hbs index 867871ca1e..58a48a3e95 100644 --- a/packages/create-app/templates/default-app/app-config.yaml.hbs +++ b/packages/create-app/templates/default-app/app-config.yaml.hbs @@ -2,6 +2,21 @@ app: title: Scaffolded Backstage App baseUrl: http://localhost:3000 + # Enable all packages by default, this will discover packages from packages/app/package.json + packages: all + + extensions: + # Disable the nav items that we're manually rendering in packages/app/src/modules/nav/Sidebar.tsx + - nav-item:search: false + - nav-item:user-settings: false + - nav-item:catalog: false + - nav-item:scaffolder: false + + # Configure the catalog index page to be the root page, this is normally mounted on /catalog + - page:catalog: + config: + path: / + organization: name: My Company diff --git a/packages/create-app/templates/default-app/package.json b/packages/create-app/templates/default-app/package.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/packages/create-app/templates/default-app/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/create-app/templates/default-app/package.json.hbs b/packages/create-app/templates/default-app/package.json.hbs index 836ecccac5..6e2d899860 100644 --- a/packages/create-app/templates/default-app/package.json.hbs +++ b/packages/create-app/templates/default-app/package.json.hbs @@ -27,20 +27,7 @@ "new": { "globals": { "license": "UNLICENSED" - }, - "templates": [ - "@backstage/cli-module-new/templates/legacy-frontend-plugin", - "@backstage/cli-module-new/templates/backend-plugin", - "@backstage/cli-module-new/templates/backend-plugin-module", - "@backstage/cli-module-new/templates/plugin-web-library", - "@backstage/cli-module-new/templates/plugin-node-library", - "@backstage/cli-module-new/templates/plugin-common-library", - "@backstage/cli-module-new/templates/web-library", - "@backstage/cli-module-new/templates/node-library", - "@backstage/cli-module-new/templates/cli-module", - "@backstage/cli-module-new/templates/catalog-provider-module", - "@backstage/cli-module-new/templates/scaffolder-backend-module" - ] + } } } }, diff --git a/packages/create-app/templates/default-app/packages/app/e2e-tests/app.test.ts b/packages/create-app/templates/default-app/packages/app/e2e-tests/app.test.ts index 839ff883de..187e124bfa 100644 --- a/packages/create-app/templates/default-app/packages/app/e2e-tests/app.test.ts +++ b/packages/create-app/templates/default-app/packages/app/e2e-tests/app.test.ts @@ -23,5 +23,7 @@ test('App should render the welcome page', async ({ page }) => { await expect(enterButton).toBeVisible(); await enterButton.click(); - await expect(page.getByText('My Company Catalog')).toBeVisible(); + const nav = page.getByRole('navigation'); + await expect(nav.getByRole('link', { name: 'Catalog' })).toBeVisible(); + await expect(page.getByRole('link', { name: 'APIs' })).toBeVisible(); }); diff --git a/packages/create-app/templates/default-app/packages/app/package.json.hbs b/packages/create-app/templates/default-app/packages/app/package.json.hbs index 392a00200b..54672f6afa 100644 --- a/packages/create-app/templates/default-app/packages/app/package.json.hbs +++ b/packages/create-app/templates/default-app/packages/app/package.json.hbs @@ -14,33 +14,29 @@ "lint": "backstage-cli package lint" }, "dependencies": { - "@backstage/app-defaults": "^{{version '@backstage/app-defaults'}}", - "@backstage/catalog-model": "^{{version '@backstage/catalog-model'}}", - "@backstage/cli": "^{{version '@backstage/cli'}}", - "@backstage/core-app-api": "^{{version '@backstage/core-app-api'}}", - "@backstage/core-components": "^{{version '@backstage/core-components'}}", - "@backstage/core-plugin-api": "^{{version '@backstage/core-plugin-api'}}", - "@backstage/integration-react": "^{{version '@backstage/integration-react'}}", - "@backstage/plugin-api-docs": "^{{version '@backstage/plugin-api-docs'}}", - "@backstage/plugin-catalog": "^{{version '@backstage/plugin-catalog'}}", - "@backstage/plugin-catalog-common": "^{{version '@backstage/plugin-catalog-common'}}", - "@backstage/plugin-catalog-graph": "^{{version '@backstage/plugin-catalog-graph'}}", - "@backstage/plugin-catalog-import": "^{{version '@backstage/plugin-catalog-import'}}", - "@backstage/plugin-catalog-react": "^{{version '@backstage/plugin-catalog-react'}}", - "@backstage/plugin-kubernetes": "^{{version '@backstage/plugin-kubernetes'}}", + "@backstage/cli": "^{{ version '@backstage/cli'}}", + "@backstage/core-components": "^{{ version '@backstage/core-components'}}", + "@backstage/core-plugin-api": "^{{ version '@backstage/core-plugin-api'}}", + "@backstage/frontend-defaults": "^{{ version '@backstage/frontend-defaults'}}", + "@backstage/frontend-plugin-api": "^{{ version '@backstage/frontend-plugin-api'}}", + "@backstage/integration-react": "^{{ version '@backstage/integration-react'}}", + "@backstage/plugin-api-docs": "^{{ version '@backstage/plugin-api-docs'}}", + "@backstage/plugin-app-react": "^{{ version '@backstage/plugin-app-react'}}", + "@backstage/plugin-app-visualizer": "^{{ version '@backstage/plugin-app-visualizer'}}", + "@backstage/plugin-auth": "^{{ version '@backstage/plugin-auth'}}", + "@backstage/plugin-catalog": "^{{ version '@backstage/plugin-catalog'}}", + "@backstage/plugin-catalog-graph": "^{{ version '@backstage/plugin-catalog-graph'}}", + "@backstage/plugin-catalog-import": "^{{ version '@backstage/plugin-catalog-import'}}", + "@backstage/plugin-kubernetes": "^{{ version '@backstage/plugin-kubernetes'}}", "@backstage/plugin-notifications": "^{{ version '@backstage/plugin-notifications'}}", - "@backstage/plugin-org": "^{{version '@backstage/plugin-org'}}", - "@backstage/plugin-permission-react": "^{{version '@backstage/plugin-permission-react'}}", - "@backstage/plugin-scaffolder": "^{{version '@backstage/plugin-scaffolder'}}", - "@backstage/plugin-search": "^{{version '@backstage/plugin-search'}}", - "@backstage/plugin-search-react": "^{{version '@backstage/plugin-search-react'}}", + "@backstage/plugin-org": "^{{ version '@backstage/plugin-org'}}", + "@backstage/plugin-scaffolder": "^{{ version '@backstage/plugin-scaffolder'}}", + "@backstage/plugin-search": "^{{ version '@backstage/plugin-search'}}", "@backstage/plugin-signals": "^{{ version '@backstage/plugin-signals'}}", - "@backstage/plugin-techdocs": "^{{version '@backstage/plugin-techdocs'}}", - "@backstage/plugin-techdocs-module-addons-contrib": "^{{version '@backstage/plugin-techdocs-module-addons-contrib'}}", - "@backstage/plugin-techdocs-react": "^{{version '@backstage/plugin-techdocs-react'}}", - "@backstage/plugin-user-settings": "^{{version '@backstage/plugin-user-settings'}}", - "@backstage/theme": "^{{version '@backstage/theme'}}", - "@backstage/ui": "^{{version '@backstage/ui'}}", + "@backstage/plugin-techdocs": "^{{ version '@backstage/plugin-techdocs'}}", + "@backstage/plugin-techdocs-module-addons-contrib": "^{{ version '@backstage/plugin-techdocs-module-addons-contrib'}}", + "@backstage/plugin-user-settings": "^{{ version '@backstage/plugin-user-settings'}}", + "@backstage/ui": "^{{ version '@backstage/ui'}}", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "react": "^18.0.2", @@ -49,7 +45,7 @@ "react-router-dom": "^6.30.2" }, "devDependencies": { - "@backstage/test-utils": "^{{version '@backstage/test-utils'}}", + "@backstage/frontend-test-utils": "^{{ version '@backstage/frontend-test-utils'}}", "@playwright/test": "^1.32.3", "@testing-library/dom": "^9.0.0", "@testing-library/jest-dom": "^6.0.0", diff --git a/packages/create-app/templates/default-app/packages/app/src/App.test.tsx b/packages/create-app/templates/default-app/packages/app/src/App.test.tsx index b6ca21d422..98e7a6438d 100644 --- a/packages/create-app/templates/default-app/packages/app/src/App.test.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/App.test.tsx @@ -19,7 +19,7 @@ describe('App', () => { ] as any, }; - const rendered = render(); + const rendered = render(App.createRoot()); await waitFor(() => { expect(rendered.baseElement).toBeInTheDocument(); diff --git a/packages/create-app/templates/default-app/packages/app/src/App.tsx b/packages/create-app/templates/default-app/packages/app/src/App.tsx index bb9c98eff8..c0206fec07 100644 --- a/packages/create-app/templates/default-app/packages/app/src/App.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/App.tsx @@ -1,112 +1,7 @@ -import { Navigate, Route } from 'react-router-dom'; -import { apiDocsPlugin, ApiExplorerPage } from '@backstage/plugin-api-docs'; -import { - CatalogEntityPage, - CatalogIndexPage, - catalogPlugin, -} from '@backstage/plugin-catalog'; -import { - CatalogImportPage, - catalogImportPlugin, -} from '@backstage/plugin-catalog-import'; -import { ScaffolderPage, scaffolderPlugin } from '@backstage/plugin-scaffolder'; -import { orgPlugin } from '@backstage/plugin-org'; -import { SearchPage } from '@backstage/plugin-search'; -import { - TechDocsIndexPage, - techdocsPlugin, - TechDocsReaderPage, -} from '@backstage/plugin-techdocs'; -import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; -import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; -import { UserSettingsPage } from '@backstage/plugin-user-settings'; -import { apis } from './apis'; -import { entityPage } from './components/catalog/EntityPage'; -import { searchPage } from './components/search/SearchPage'; -import { Root } from './components/Root'; +import { createApp } from '@backstage/frontend-defaults'; +import catalogPlugin from '@backstage/plugin-catalog/alpha'; +import { navModule } from './modules/nav'; -import { - AlertDisplay, - OAuthRequestDialog, - SignInPage, -} from '@backstage/core-components'; -import { createApp } from '@backstage/app-defaults'; -import { AppRouter, FlatRoutes } from '@backstage/core-app-api'; -import { CatalogGraphPage } from '@backstage/plugin-catalog-graph'; -import { RequirePermission } from '@backstage/plugin-permission-react'; -import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha'; -import { NotificationsPage } from '@backstage/plugin-notifications'; -import { SignalsDisplay } from '@backstage/plugin-signals'; - -const app = createApp({ - apis, - bindRoutes({ bind }) { - bind(catalogPlugin.externalRoutes, { - createComponent: scaffolderPlugin.routes.root, - viewTechDoc: techdocsPlugin.routes.docRoot, - createFromTemplate: scaffolderPlugin.routes.selectedTemplate, - }); - bind(apiDocsPlugin.externalRoutes, { - registerApi: catalogImportPlugin.routes.importPage, - }); - bind(scaffolderPlugin.externalRoutes, { - registerComponent: catalogImportPlugin.routes.importPage, - viewTechDoc: techdocsPlugin.routes.docRoot, - }); - bind(orgPlugin.externalRoutes, { - catalogIndex: catalogPlugin.routes.catalogIndex, - }); - }, - components: { - SignInPage: props => , - }, +export default createApp({ + features: [catalogPlugin, navModule], }); - -const routes = ( - - } /> - } /> - } - > - {entityPage} - - } /> - } - > - - - - - } /> - } /> - - - - } - /> - }> - {searchPage} - - } /> - } /> - } /> - -); - -export default app.createRoot( - <> - - - - - {routes} - - , -); diff --git a/packages/create-app/templates/default-app/packages/app/src/index.tsx b/packages/create-app/templates/default-app/packages/app/src/index.tsx index 46f31902f4..ac9e52bdc1 100644 --- a/packages/create-app/templates/default-app/packages/app/src/index.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/index.tsx @@ -3,4 +3,4 @@ import ReactDOM from 'react-dom/client'; import App from './App'; import '@backstage/ui/css/styles.css'; -ReactDOM.createRoot(document.getElementById('root')!).render(); +ReactDOM.createRoot(document.getElementById('root')!).render(App.createRoot()); diff --git a/packages/create-app/templates/next-app/packages/app/src/modules/nav/LogoFull.tsx b/packages/create-app/templates/default-app/packages/app/src/modules/nav/LogoFull.tsx similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/modules/nav/LogoFull.tsx rename to packages/create-app/templates/default-app/packages/app/src/modules/nav/LogoFull.tsx diff --git a/packages/create-app/templates/next-app/packages/app/src/modules/nav/LogoIcon.tsx b/packages/create-app/templates/default-app/packages/app/src/modules/nav/LogoIcon.tsx similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/modules/nav/LogoIcon.tsx rename to packages/create-app/templates/default-app/packages/app/src/modules/nav/LogoIcon.tsx diff --git a/packages/create-app/templates/next-app/packages/app/src/modules/nav/Sidebar.tsx b/packages/create-app/templates/default-app/packages/app/src/modules/nav/Sidebar.tsx similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/modules/nav/Sidebar.tsx rename to packages/create-app/templates/default-app/packages/app/src/modules/nav/Sidebar.tsx diff --git a/packages/create-app/templates/next-app/packages/app/src/modules/nav/SidebarLogo.tsx b/packages/create-app/templates/default-app/packages/app/src/modules/nav/SidebarLogo.tsx similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/modules/nav/SidebarLogo.tsx rename to packages/create-app/templates/default-app/packages/app/src/modules/nav/SidebarLogo.tsx diff --git a/packages/create-app/templates/next-app/packages/app/src/modules/nav/index.ts b/packages/create-app/templates/default-app/packages/app/src/modules/nav/index.ts similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/modules/nav/index.ts rename to packages/create-app/templates/default-app/packages/app/src/modules/nav/index.ts diff --git a/packages/create-app/templates/default-app/yarn.lock b/packages/create-app/templates/default-app/yarn.lock index 5ad7fe233d..f70eb08d6d 100644 --- a/packages/create-app/templates/default-app/yarn.lock +++ b/packages/create-app/templates/default-app/yarn.lock @@ -1 +1,12 @@ -# intentionally left empty +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10 + +"root-workspace-0b6124@workspace:.": + version: 0.0.0-use.local + resolution: "root-workspace-0b6124@workspace:." + languageName: unknown + linkType: soft diff --git a/packages/create-app/templates/next-app/.dockerignore b/packages/create-app/templates/legacy-app/.dockerignore similarity index 100% rename from packages/create-app/templates/next-app/.dockerignore rename to packages/create-app/templates/legacy-app/.dockerignore diff --git a/packages/create-app/templates/next-app/.eslintignore b/packages/create-app/templates/legacy-app/.eslintignore similarity index 100% rename from packages/create-app/templates/next-app/.eslintignore rename to packages/create-app/templates/legacy-app/.eslintignore diff --git a/packages/create-app/templates/next-app/.eslintrc.js.hbs b/packages/create-app/templates/legacy-app/.eslintrc.js.hbs similarity index 100% rename from packages/create-app/templates/next-app/.eslintrc.js.hbs rename to packages/create-app/templates/legacy-app/.eslintrc.js.hbs diff --git a/packages/create-app/templates/next-app/.gitignore.hbs b/packages/create-app/templates/legacy-app/.gitignore.hbs similarity index 100% rename from packages/create-app/templates/next-app/.gitignore.hbs rename to packages/create-app/templates/legacy-app/.gitignore.hbs diff --git a/packages/create-app/templates/next-app/.prettierignore b/packages/create-app/templates/legacy-app/.prettierignore similarity index 100% rename from packages/create-app/templates/next-app/.prettierignore rename to packages/create-app/templates/legacy-app/.prettierignore diff --git a/packages/create-app/templates/next-app/.yarn/releases/yarn-4.4.1.cjs b/packages/create-app/templates/legacy-app/.yarn/releases/yarn-4.4.1.cjs similarity index 100% rename from packages/create-app/templates/next-app/.yarn/releases/yarn-4.4.1.cjs rename to packages/create-app/templates/legacy-app/.yarn/releases/yarn-4.4.1.cjs diff --git a/packages/create-app/templates/next-app/.yarnrc.yml.hbs b/packages/create-app/templates/legacy-app/.yarnrc.yml.hbs similarity index 100% rename from packages/create-app/templates/next-app/.yarnrc.yml.hbs rename to packages/create-app/templates/legacy-app/.yarnrc.yml.hbs diff --git a/packages/create-app/templates/next-app/README.md b/packages/create-app/templates/legacy-app/README.md similarity index 100% rename from packages/create-app/templates/next-app/README.md rename to packages/create-app/templates/legacy-app/README.md diff --git a/packages/create-app/templates/default-app/app-config.local.yaml b/packages/create-app/templates/legacy-app/app-config.local.yaml similarity index 100% rename from packages/create-app/templates/default-app/app-config.local.yaml rename to packages/create-app/templates/legacy-app/app-config.local.yaml diff --git a/packages/create-app/templates/next-app/app-config.production.yaml b/packages/create-app/templates/legacy-app/app-config.production.yaml similarity index 100% rename from packages/create-app/templates/next-app/app-config.production.yaml rename to packages/create-app/templates/legacy-app/app-config.production.yaml diff --git a/packages/create-app/templates/next-app/app-config.yaml.hbs b/packages/create-app/templates/legacy-app/app-config.yaml.hbs similarity index 95% rename from packages/create-app/templates/next-app/app-config.yaml.hbs rename to packages/create-app/templates/legacy-app/app-config.yaml.hbs index f5fbee4130..756c7e1568 100644 --- a/packages/create-app/templates/next-app/app-config.yaml.hbs +++ b/packages/create-app/templates/legacy-app/app-config.yaml.hbs @@ -2,15 +2,6 @@ app: title: Scaffolded Backstage App baseUrl: http://localhost:3000 - # Enable all packages by default, this will discover packages from packages/app/package.json - packages: all - - extensions: - # Configure the catalog index page to be the root page, this is normally mounted on /catalog - - page:catalog: - config: - path: / - organization: name: My Company diff --git a/packages/create-app/templates/next-app/backstage.json.hbs b/packages/create-app/templates/legacy-app/backstage.json.hbs similarity index 100% rename from packages/create-app/templates/next-app/backstage.json.hbs rename to packages/create-app/templates/legacy-app/backstage.json.hbs diff --git a/packages/create-app/templates/next-app/catalog-info.yaml.hbs b/packages/create-app/templates/legacy-app/catalog-info.yaml.hbs similarity index 100% rename from packages/create-app/templates/next-app/catalog-info.yaml.hbs rename to packages/create-app/templates/legacy-app/catalog-info.yaml.hbs diff --git a/packages/create-app/templates/next-app/examples/entities.yaml b/packages/create-app/templates/legacy-app/examples/entities.yaml similarity index 100% rename from packages/create-app/templates/next-app/examples/entities.yaml rename to packages/create-app/templates/legacy-app/examples/entities.yaml diff --git a/packages/create-app/templates/next-app/examples/org.yaml b/packages/create-app/templates/legacy-app/examples/org.yaml similarity index 100% rename from packages/create-app/templates/next-app/examples/org.yaml rename to packages/create-app/templates/legacy-app/examples/org.yaml diff --git a/packages/create-app/templates/next-app/examples/template/content/catalog-info.yaml b/packages/create-app/templates/legacy-app/examples/template/content/catalog-info.yaml similarity index 100% rename from packages/create-app/templates/next-app/examples/template/content/catalog-info.yaml rename to packages/create-app/templates/legacy-app/examples/template/content/catalog-info.yaml diff --git a/packages/create-app/templates/next-app/examples/template/content/index.js b/packages/create-app/templates/legacy-app/examples/template/content/index.js similarity index 100% rename from packages/create-app/templates/next-app/examples/template/content/index.js rename to packages/create-app/templates/legacy-app/examples/template/content/index.js diff --git a/packages/create-app/templates/next-app/examples/template/content/package.json b/packages/create-app/templates/legacy-app/examples/template/content/package.json similarity index 100% rename from packages/create-app/templates/next-app/examples/template/content/package.json rename to packages/create-app/templates/legacy-app/examples/template/content/package.json diff --git a/packages/create-app/templates/next-app/examples/template/template.yaml b/packages/create-app/templates/legacy-app/examples/template/template.yaml similarity index 100% rename from packages/create-app/templates/next-app/examples/template/template.yaml rename to packages/create-app/templates/legacy-app/examples/template/template.yaml diff --git a/packages/create-app/templates/legacy-app/package.json b/packages/create-app/templates/legacy-app/package.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/packages/create-app/templates/legacy-app/package.json @@ -0,0 +1 @@ +{} diff --git a/packages/create-app/templates/next-app/package.json.hbs b/packages/create-app/templates/legacy-app/package.json.hbs similarity index 69% rename from packages/create-app/templates/next-app/package.json.hbs rename to packages/create-app/templates/legacy-app/package.json.hbs index 6e2d899860..836ecccac5 100644 --- a/packages/create-app/templates/next-app/package.json.hbs +++ b/packages/create-app/templates/legacy-app/package.json.hbs @@ -27,7 +27,20 @@ "new": { "globals": { "license": "UNLICENSED" - } + }, + "templates": [ + "@backstage/cli-module-new/templates/legacy-frontend-plugin", + "@backstage/cli-module-new/templates/backend-plugin", + "@backstage/cli-module-new/templates/backend-plugin-module", + "@backstage/cli-module-new/templates/plugin-web-library", + "@backstage/cli-module-new/templates/plugin-node-library", + "@backstage/cli-module-new/templates/plugin-common-library", + "@backstage/cli-module-new/templates/web-library", + "@backstage/cli-module-new/templates/node-library", + "@backstage/cli-module-new/templates/cli-module", + "@backstage/cli-module-new/templates/catalog-provider-module", + "@backstage/cli-module-new/templates/scaffolder-backend-module" + ] } } }, diff --git a/packages/create-app/templates/next-app/packages/README.md b/packages/create-app/templates/legacy-app/packages/README.md similarity index 100% rename from packages/create-app/templates/next-app/packages/README.md rename to packages/create-app/templates/legacy-app/packages/README.md diff --git a/packages/create-app/templates/next-app/packages/app/.eslintignore b/packages/create-app/templates/legacy-app/packages/app/.eslintignore similarity index 100% rename from packages/create-app/templates/next-app/packages/app/.eslintignore rename to packages/create-app/templates/legacy-app/packages/app/.eslintignore diff --git a/packages/create-app/templates/next-app/packages/app/.eslintrc.js.hbs b/packages/create-app/templates/legacy-app/packages/app/.eslintrc.js.hbs similarity index 100% rename from packages/create-app/templates/next-app/packages/app/.eslintrc.js.hbs rename to packages/create-app/templates/legacy-app/packages/app/.eslintrc.js.hbs diff --git a/packages/create-app/templates/next-app/packages/app/e2e-tests/app.test.ts b/packages/create-app/templates/legacy-app/packages/app/e2e-tests/app.test.ts similarity index 79% rename from packages/create-app/templates/next-app/packages/app/e2e-tests/app.test.ts rename to packages/create-app/templates/legacy-app/packages/app/e2e-tests/app.test.ts index d8dbc1faa8..839ff883de 100644 --- a/packages/create-app/templates/next-app/packages/app/e2e-tests/app.test.ts +++ b/packages/create-app/templates/legacy-app/packages/app/e2e-tests/app.test.ts @@ -23,11 +23,5 @@ test('App should render the welcome page', async ({ page }) => { await expect(enterButton).toBeVisible(); await enterButton.click(); - const nav = page.getByRole('navigation'); - await expect( - nav.getByRole('link', { name: 'Catalog', exact: true }), - ).toBeVisible(); - await expect( - page.getByRole('link', { name: 'APIs', exact: true }), - ).toBeVisible(); + await expect(page.getByText('My Company Catalog')).toBeVisible(); }); diff --git a/packages/create-app/templates/legacy-app/packages/app/package.json.hbs b/packages/create-app/templates/legacy-app/packages/app/package.json.hbs new file mode 100644 index 0000000000..392a00200b --- /dev/null +++ b/packages/create-app/templates/legacy-app/packages/app/package.json.hbs @@ -0,0 +1,76 @@ +{ + "name": "app", + "version": "0.0.0", + "private": true, + "bundled": true, + "backstage": { + "role": "frontend" + }, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "test": "backstage-cli package test", + "lint": "backstage-cli package lint" + }, + "dependencies": { + "@backstage/app-defaults": "^{{version '@backstage/app-defaults'}}", + "@backstage/catalog-model": "^{{version '@backstage/catalog-model'}}", + "@backstage/cli": "^{{version '@backstage/cli'}}", + "@backstage/core-app-api": "^{{version '@backstage/core-app-api'}}", + "@backstage/core-components": "^{{version '@backstage/core-components'}}", + "@backstage/core-plugin-api": "^{{version '@backstage/core-plugin-api'}}", + "@backstage/integration-react": "^{{version '@backstage/integration-react'}}", + "@backstage/plugin-api-docs": "^{{version '@backstage/plugin-api-docs'}}", + "@backstage/plugin-catalog": "^{{version '@backstage/plugin-catalog'}}", + "@backstage/plugin-catalog-common": "^{{version '@backstage/plugin-catalog-common'}}", + "@backstage/plugin-catalog-graph": "^{{version '@backstage/plugin-catalog-graph'}}", + "@backstage/plugin-catalog-import": "^{{version '@backstage/plugin-catalog-import'}}", + "@backstage/plugin-catalog-react": "^{{version '@backstage/plugin-catalog-react'}}", + "@backstage/plugin-kubernetes": "^{{version '@backstage/plugin-kubernetes'}}", + "@backstage/plugin-notifications": "^{{ version '@backstage/plugin-notifications'}}", + "@backstage/plugin-org": "^{{version '@backstage/plugin-org'}}", + "@backstage/plugin-permission-react": "^{{version '@backstage/plugin-permission-react'}}", + "@backstage/plugin-scaffolder": "^{{version '@backstage/plugin-scaffolder'}}", + "@backstage/plugin-search": "^{{version '@backstage/plugin-search'}}", + "@backstage/plugin-search-react": "^{{version '@backstage/plugin-search-react'}}", + "@backstage/plugin-signals": "^{{ version '@backstage/plugin-signals'}}", + "@backstage/plugin-techdocs": "^{{version '@backstage/plugin-techdocs'}}", + "@backstage/plugin-techdocs-module-addons-contrib": "^{{version '@backstage/plugin-techdocs-module-addons-contrib'}}", + "@backstage/plugin-techdocs-react": "^{{version '@backstage/plugin-techdocs-react'}}", + "@backstage/plugin-user-settings": "^{{version '@backstage/plugin-user-settings'}}", + "@backstage/theme": "^{{version '@backstage/theme'}}", + "@backstage/ui": "^{{version '@backstage/ui'}}", + "@material-ui/core": "^4.12.2", + "@material-ui/icons": "^4.9.1", + "react": "^18.0.2", + "react-dom": "^18.0.2", + "react-router": "^6.30.2", + "react-router-dom": "^6.30.2" + }, + "devDependencies": { + "@backstage/test-utils": "^{{version '@backstage/test-utils'}}", + "@playwright/test": "^1.32.3", + "@testing-library/dom": "^9.0.0", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.0.0", + "@types/react-dom": "*", + "cross-env": "^7.0.0" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "files": [ + "dist" + ] +} diff --git a/packages/create-app/templates/next-app/packages/app/public/android-chrome-192x192.png b/packages/create-app/templates/legacy-app/packages/app/public/android-chrome-192x192.png similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/android-chrome-192x192.png rename to packages/create-app/templates/legacy-app/packages/app/public/android-chrome-192x192.png diff --git a/packages/create-app/templates/next-app/packages/app/public/apple-touch-icon.png b/packages/create-app/templates/legacy-app/packages/app/public/apple-touch-icon.png similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/apple-touch-icon.png rename to packages/create-app/templates/legacy-app/packages/app/public/apple-touch-icon.png diff --git a/packages/create-app/templates/next-app/packages/app/public/favicon-16x16.png b/packages/create-app/templates/legacy-app/packages/app/public/favicon-16x16.png similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/favicon-16x16.png rename to packages/create-app/templates/legacy-app/packages/app/public/favicon-16x16.png diff --git a/packages/create-app/templates/next-app/packages/app/public/favicon-32x32.png b/packages/create-app/templates/legacy-app/packages/app/public/favicon-32x32.png similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/favicon-32x32.png rename to packages/create-app/templates/legacy-app/packages/app/public/favicon-32x32.png diff --git a/packages/create-app/templates/next-app/packages/app/public/favicon.ico b/packages/create-app/templates/legacy-app/packages/app/public/favicon.ico similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/favicon.ico rename to packages/create-app/templates/legacy-app/packages/app/public/favicon.ico diff --git a/packages/create-app/templates/next-app/packages/app/public/index.html b/packages/create-app/templates/legacy-app/packages/app/public/index.html similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/index.html rename to packages/create-app/templates/legacy-app/packages/app/public/index.html diff --git a/packages/create-app/templates/next-app/packages/app/public/manifest.json b/packages/create-app/templates/legacy-app/packages/app/public/manifest.json similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/manifest.json rename to packages/create-app/templates/legacy-app/packages/app/public/manifest.json diff --git a/packages/create-app/templates/next-app/packages/app/public/robots.txt b/packages/create-app/templates/legacy-app/packages/app/public/robots.txt similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/robots.txt rename to packages/create-app/templates/legacy-app/packages/app/public/robots.txt diff --git a/packages/create-app/templates/next-app/packages/app/public/safari-pinned-tab.svg b/packages/create-app/templates/legacy-app/packages/app/public/safari-pinned-tab.svg similarity index 100% rename from packages/create-app/templates/next-app/packages/app/public/safari-pinned-tab.svg rename to packages/create-app/templates/legacy-app/packages/app/public/safari-pinned-tab.svg diff --git a/packages/create-app/templates/next-app/packages/app/src/App.test.tsx b/packages/create-app/templates/legacy-app/packages/app/src/App.test.tsx similarity index 92% rename from packages/create-app/templates/next-app/packages/app/src/App.test.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/App.test.tsx index 98e7a6438d..b6ca21d422 100644 --- a/packages/create-app/templates/next-app/packages/app/src/App.test.tsx +++ b/packages/create-app/templates/legacy-app/packages/app/src/App.test.tsx @@ -19,7 +19,7 @@ describe('App', () => { ] as any, }; - const rendered = render(App.createRoot()); + const rendered = render(); await waitFor(() => { expect(rendered.baseElement).toBeInTheDocument(); diff --git a/packages/create-app/templates/legacy-app/packages/app/src/App.tsx b/packages/create-app/templates/legacy-app/packages/app/src/App.tsx new file mode 100644 index 0000000000..bb9c98eff8 --- /dev/null +++ b/packages/create-app/templates/legacy-app/packages/app/src/App.tsx @@ -0,0 +1,112 @@ +import { Navigate, Route } from 'react-router-dom'; +import { apiDocsPlugin, ApiExplorerPage } from '@backstage/plugin-api-docs'; +import { + CatalogEntityPage, + CatalogIndexPage, + catalogPlugin, +} from '@backstage/plugin-catalog'; +import { + CatalogImportPage, + catalogImportPlugin, +} from '@backstage/plugin-catalog-import'; +import { ScaffolderPage, scaffolderPlugin } from '@backstage/plugin-scaffolder'; +import { orgPlugin } from '@backstage/plugin-org'; +import { SearchPage } from '@backstage/plugin-search'; +import { + TechDocsIndexPage, + techdocsPlugin, + TechDocsReaderPage, +} from '@backstage/plugin-techdocs'; +import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; +import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; +import { UserSettingsPage } from '@backstage/plugin-user-settings'; +import { apis } from './apis'; +import { entityPage } from './components/catalog/EntityPage'; +import { searchPage } from './components/search/SearchPage'; +import { Root } from './components/Root'; + +import { + AlertDisplay, + OAuthRequestDialog, + SignInPage, +} from '@backstage/core-components'; +import { createApp } from '@backstage/app-defaults'; +import { AppRouter, FlatRoutes } from '@backstage/core-app-api'; +import { CatalogGraphPage } from '@backstage/plugin-catalog-graph'; +import { RequirePermission } from '@backstage/plugin-permission-react'; +import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha'; +import { NotificationsPage } from '@backstage/plugin-notifications'; +import { SignalsDisplay } from '@backstage/plugin-signals'; + +const app = createApp({ + apis, + bindRoutes({ bind }) { + bind(catalogPlugin.externalRoutes, { + createComponent: scaffolderPlugin.routes.root, + viewTechDoc: techdocsPlugin.routes.docRoot, + createFromTemplate: scaffolderPlugin.routes.selectedTemplate, + }); + bind(apiDocsPlugin.externalRoutes, { + registerApi: catalogImportPlugin.routes.importPage, + }); + bind(scaffolderPlugin.externalRoutes, { + registerComponent: catalogImportPlugin.routes.importPage, + viewTechDoc: techdocsPlugin.routes.docRoot, + }); + bind(orgPlugin.externalRoutes, { + catalogIndex: catalogPlugin.routes.catalogIndex, + }); + }, + components: { + SignInPage: props => , + }, +}); + +const routes = ( + + } /> + } /> + } + > + {entityPage} + + } /> + } + > + + + + + } /> + } /> + + + + } + /> + }> + {searchPage} + + } /> + } /> + } /> + +); + +export default app.createRoot( + <> + + + + + {routes} + + , +); diff --git a/packages/create-app/templates/default-app/packages/app/src/apis.ts b/packages/create-app/templates/legacy-app/packages/app/src/apis.ts similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/apis.ts rename to packages/create-app/templates/legacy-app/packages/app/src/apis.ts diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx b/packages/create-app/templates/legacy-app/packages/app/src/components/Root/LogoFull.tsx similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/components/Root/LogoFull.tsx diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx b/packages/create-app/templates/legacy-app/packages/app/src/components/Root/LogoIcon.tsx similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/components/Root/LogoIcon.tsx diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx b/packages/create-app/templates/legacy-app/packages/app/src/components/Root/Root.tsx similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/components/Root/Root.tsx diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts b/packages/create-app/templates/legacy-app/packages/app/src/components/Root/index.ts similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts rename to packages/create-app/templates/legacy-app/packages/app/src/components/Root/index.ts diff --git a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx b/packages/create-app/templates/legacy-app/packages/app/src/components/catalog/EntityPage.tsx similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/components/catalog/EntityPage.tsx diff --git a/packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx b/packages/create-app/templates/legacy-app/packages/app/src/components/search/SearchPage.tsx similarity index 100% rename from packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/components/search/SearchPage.tsx diff --git a/packages/create-app/templates/next-app/packages/app/src/index.tsx b/packages/create-app/templates/legacy-app/packages/app/src/index.tsx similarity index 64% rename from packages/create-app/templates/next-app/packages/app/src/index.tsx rename to packages/create-app/templates/legacy-app/packages/app/src/index.tsx index ac9e52bdc1..46f31902f4 100644 --- a/packages/create-app/templates/next-app/packages/app/src/index.tsx +++ b/packages/create-app/templates/legacy-app/packages/app/src/index.tsx @@ -3,4 +3,4 @@ import ReactDOM from 'react-dom/client'; import App from './App'; import '@backstage/ui/css/styles.css'; -ReactDOM.createRoot(document.getElementById('root')!).render(App.createRoot()); +ReactDOM.createRoot(document.getElementById('root')!).render(); diff --git a/packages/create-app/templates/next-app/packages/app/src/setupTests.ts b/packages/create-app/templates/legacy-app/packages/app/src/setupTests.ts similarity index 100% rename from packages/create-app/templates/next-app/packages/app/src/setupTests.ts rename to packages/create-app/templates/legacy-app/packages/app/src/setupTests.ts diff --git a/packages/create-app/templates/next-app/packages/backend/.eslintrc.js.hbs b/packages/create-app/templates/legacy-app/packages/backend/.eslintrc.js.hbs similarity index 100% rename from packages/create-app/templates/next-app/packages/backend/.eslintrc.js.hbs rename to packages/create-app/templates/legacy-app/packages/backend/.eslintrc.js.hbs diff --git a/packages/create-app/templates/next-app/packages/backend/Dockerfile b/packages/create-app/templates/legacy-app/packages/backend/Dockerfile similarity index 100% rename from packages/create-app/templates/next-app/packages/backend/Dockerfile rename to packages/create-app/templates/legacy-app/packages/backend/Dockerfile diff --git a/packages/create-app/templates/next-app/packages/backend/README.md b/packages/create-app/templates/legacy-app/packages/backend/README.md similarity index 100% rename from packages/create-app/templates/next-app/packages/backend/README.md rename to packages/create-app/templates/legacy-app/packages/backend/README.md diff --git a/packages/create-app/templates/next-app/packages/backend/package.json.hbs b/packages/create-app/templates/legacy-app/packages/backend/package.json.hbs similarity index 100% rename from packages/create-app/templates/next-app/packages/backend/package.json.hbs rename to packages/create-app/templates/legacy-app/packages/backend/package.json.hbs diff --git a/packages/create-app/templates/next-app/packages/backend/src/index.ts b/packages/create-app/templates/legacy-app/packages/backend/src/index.ts similarity index 100% rename from packages/create-app/templates/next-app/packages/backend/src/index.ts rename to packages/create-app/templates/legacy-app/packages/backend/src/index.ts diff --git a/packages/create-app/templates/next-app/playwright.config.ts b/packages/create-app/templates/legacy-app/playwright.config.ts similarity index 100% rename from packages/create-app/templates/next-app/playwright.config.ts rename to packages/create-app/templates/legacy-app/playwright.config.ts diff --git a/packages/create-app/templates/next-app/plugins/README.md b/packages/create-app/templates/legacy-app/plugins/README.md similarity index 100% rename from packages/create-app/templates/next-app/plugins/README.md rename to packages/create-app/templates/legacy-app/plugins/README.md diff --git a/packages/create-app/templates/next-app/tsconfig.json b/packages/create-app/templates/legacy-app/tsconfig.json similarity index 100% rename from packages/create-app/templates/next-app/tsconfig.json rename to packages/create-app/templates/legacy-app/tsconfig.json diff --git a/packages/create-app/templates/next-app/yarn.lock b/packages/create-app/templates/legacy-app/yarn.lock similarity index 100% rename from packages/create-app/templates/next-app/yarn.lock rename to packages/create-app/templates/legacy-app/yarn.lock diff --git a/packages/create-app/templates/next-app/packages/app/package.json.hbs b/packages/create-app/templates/next-app/packages/app/package.json.hbs deleted file mode 100644 index 54672f6afa..0000000000 --- a/packages/create-app/templates/next-app/packages/app/package.json.hbs +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "app", - "version": "0.0.0", - "private": true, - "bundled": true, - "backstage": { - "role": "frontend" - }, - "scripts": { - "start": "backstage-cli package start", - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "test": "backstage-cli package test", - "lint": "backstage-cli package lint" - }, - "dependencies": { - "@backstage/cli": "^{{ version '@backstage/cli'}}", - "@backstage/core-components": "^{{ version '@backstage/core-components'}}", - "@backstage/core-plugin-api": "^{{ version '@backstage/core-plugin-api'}}", - "@backstage/frontend-defaults": "^{{ version '@backstage/frontend-defaults'}}", - "@backstage/frontend-plugin-api": "^{{ version '@backstage/frontend-plugin-api'}}", - "@backstage/integration-react": "^{{ version '@backstage/integration-react'}}", - "@backstage/plugin-api-docs": "^{{ version '@backstage/plugin-api-docs'}}", - "@backstage/plugin-app-react": "^{{ version '@backstage/plugin-app-react'}}", - "@backstage/plugin-app-visualizer": "^{{ version '@backstage/plugin-app-visualizer'}}", - "@backstage/plugin-auth": "^{{ version '@backstage/plugin-auth'}}", - "@backstage/plugin-catalog": "^{{ version '@backstage/plugin-catalog'}}", - "@backstage/plugin-catalog-graph": "^{{ version '@backstage/plugin-catalog-graph'}}", - "@backstage/plugin-catalog-import": "^{{ version '@backstage/plugin-catalog-import'}}", - "@backstage/plugin-kubernetes": "^{{ version '@backstage/plugin-kubernetes'}}", - "@backstage/plugin-notifications": "^{{ version '@backstage/plugin-notifications'}}", - "@backstage/plugin-org": "^{{ version '@backstage/plugin-org'}}", - "@backstage/plugin-scaffolder": "^{{ version '@backstage/plugin-scaffolder'}}", - "@backstage/plugin-search": "^{{ version '@backstage/plugin-search'}}", - "@backstage/plugin-signals": "^{{ version '@backstage/plugin-signals'}}", - "@backstage/plugin-techdocs": "^{{ version '@backstage/plugin-techdocs'}}", - "@backstage/plugin-techdocs-module-addons-contrib": "^{{ version '@backstage/plugin-techdocs-module-addons-contrib'}}", - "@backstage/plugin-user-settings": "^{{ version '@backstage/plugin-user-settings'}}", - "@backstage/ui": "^{{ version '@backstage/ui'}}", - "@material-ui/core": "^4.12.2", - "@material-ui/icons": "^4.9.1", - "react": "^18.0.2", - "react-dom": "^18.0.2", - "react-router": "^6.30.2", - "react-router-dom": "^6.30.2" - }, - "devDependencies": { - "@backstage/frontend-test-utils": "^{{ version '@backstage/frontend-test-utils'}}", - "@playwright/test": "^1.32.3", - "@testing-library/dom": "^9.0.0", - "@testing-library/jest-dom": "^6.0.0", - "@testing-library/react": "^14.0.0", - "@testing-library/user-event": "^14.0.0", - "@types/react-dom": "*", - "cross-env": "^7.0.0" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "files": [ - "dist" - ] -} diff --git a/packages/create-app/templates/next-app/packages/app/src/App.tsx b/packages/create-app/templates/next-app/packages/app/src/App.tsx deleted file mode 100644 index c0206fec07..0000000000 --- a/packages/create-app/templates/next-app/packages/app/src/App.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { createApp } from '@backstage/frontend-defaults'; -import catalogPlugin from '@backstage/plugin-catalog/alpha'; -import { navModule } from './modules/nav'; - -export default createApp({ - features: [catalogPlugin, navModule], -}); diff --git a/packages/e2e-test/src/commands/runCommand.ts b/packages/e2e-test/src/commands/runCommand.ts index 22d0867c4b..a99cee005f 100644 --- a/packages/e2e-test/src/commands/runCommand.ts +++ b/packages/e2e-test/src/commands/runCommand.ts @@ -35,9 +35,9 @@ const ownPaths = findOwnPaths(__dirname); const templatePackagePaths = [ 'packages/cli-module-new/templates/frontend-plugin/package.json.hbs', - 'packages/create-app/templates/next-app/package.json.hbs', - 'packages/create-app/templates/next-app/packages/app/package.json.hbs', - 'packages/create-app/templates/next-app/packages/backend/package.json.hbs', + 'packages/create-app/templates/default-app/package.json.hbs', + 'packages/create-app/templates/default-app/packages/app/package.json.hbs', + 'packages/create-app/templates/default-app/packages/backend/package.json.hbs', ]; export async function runCommand(opts: OptionValues) {