@backstage/create-app 0.7.2-next.0 → 0.7.2-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/createApp.cjs.js +2 -1
- package/dist/createApp.cjs.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/lib/tasks.cjs.js +2 -4
- package/dist/lib/tasks.cjs.js.map +1 -1
- package/dist/lib/versions.cjs.js +114 -106
- package/dist/lib/versions.cjs.js.map +1 -1
- package/dist/package.json.cjs.js +1 -1
- package/dist/packages/app-defaults/package.json.cjs.js +1 -1
- package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
- package/dist/packages/catalog-client/package.json.cjs.js +1 -1
- package/dist/packages/cli/package.json.cjs.js +1 -1
- package/dist/packages/core-compat-api/package.json.cjs.js +6 -0
- package/dist/packages/core-compat-api/package.json.cjs.js.map +1 -0
- package/dist/packages/core-components/package.json.cjs.js +1 -1
- package/dist/packages/frontend-defaults/package.json.cjs.js +6 -0
- package/dist/packages/frontend-defaults/package.json.cjs.js.map +1 -0
- package/dist/packages/frontend-plugin-api/package.json.cjs.js +6 -0
- package/dist/packages/frontend-plugin-api/package.json.cjs.js.map +1 -0
- package/dist/packages/frontend-test-utils/package.json.cjs.js +6 -0
- package/dist/packages/frontend-test-utils/package.json.cjs.js.map +1 -0
- package/dist/packages/repo-tools/package.json.cjs.js +1 -1
- package/dist/packages/test-utils/package.json.cjs.js +1 -1
- package/dist/packages/theme/package.json.cjs.js +1 -1
- package/dist/packages/ui/package.json.cjs.js +1 -1
- package/dist/plugins/api-docs/package.json.cjs.js +1 -1
- package/dist/plugins/app-backend/package.json.cjs.js +1 -1
- package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
- package/dist/plugins/auth-backend-module-github-provider/package.json.cjs.js +1 -1
- package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
- package/dist/plugins/auth-node/package.json.cjs.js +1 -1
- package/dist/plugins/catalog/package.json.cjs.js +1 -1
- package/dist/plugins/catalog-backend/package.json.cjs.js +1 -1
- package/dist/plugins/catalog-backend-module-logs/package.json.cjs.js +1 -1
- package/dist/plugins/catalog-backend-module-scaffolder-entity-model/package.json.cjs.js +1 -1
- package/dist/plugins/catalog-graph/package.json.cjs.js +1 -1
- package/dist/plugins/catalog-import/package.json.cjs.js +1 -1
- package/dist/plugins/catalog-react/package.json.cjs.js +1 -1
- package/dist/plugins/kubernetes/package.json.cjs.js +1 -1
- package/dist/plugins/kubernetes-backend/package.json.cjs.js +1 -1
- package/dist/plugins/org/package.json.cjs.js +1 -1
- package/dist/plugins/permission-backend/package.json.cjs.js +1 -1
- package/dist/plugins/permission-backend-module-policy-allow-all/package.json.cjs.js +1 -1
- package/dist/plugins/permission-node/package.json.cjs.js +1 -1
- package/dist/plugins/proxy-backend/package.json.cjs.js +1 -1
- package/dist/plugins/scaffolder/package.json.cjs.js +1 -1
- package/dist/plugins/scaffolder-backend/package.json.cjs.js +1 -1
- package/dist/plugins/scaffolder-backend-module-github/package.json.cjs.js +1 -1
- package/dist/plugins/search/package.json.cjs.js +1 -1
- package/dist/plugins/search-backend/package.json.cjs.js +1 -1
- package/dist/plugins/search-backend-module-catalog/package.json.cjs.js +1 -1
- package/dist/plugins/search-backend-module-pg/package.json.cjs.js +1 -1
- package/dist/plugins/search-backend-module-techdocs/package.json.cjs.js +1 -1
- package/dist/plugins/search-backend-node/package.json.cjs.js +1 -1
- package/dist/plugins/search-react/package.json.cjs.js +1 -1
- package/dist/plugins/techdocs/package.json.cjs.js +1 -1
- package/dist/plugins/techdocs-backend/package.json.cjs.js +1 -1
- package/dist/plugins/techdocs-module-addons-contrib/package.json.cjs.js +1 -1
- package/dist/plugins/techdocs-react/package.json.cjs.js +1 -1
- package/dist/plugins/user-settings/package.json.cjs.js +1 -1
- package/package.json +3 -3
- package/templates/default-app/packages/backend/package.json.hbs +1 -1
- package/templates/next-app/.dockerignore +8 -0
- package/templates/next-app/.eslintignore +1 -0
- package/templates/next-app/.eslintrc.js.hbs +3 -0
- package/templates/next-app/.gitignore.hbs +56 -0
- package/templates/next-app/.prettierignore +4 -0
- package/templates/next-app/.yarn/releases/yarn-4.4.1.cjs +925 -0
- package/templates/next-app/.yarnrc.yml.hbs +3 -0
- package/templates/next-app/README.md +10 -0
- package/templates/next-app/app-config.production.yaml +55 -0
- package/templates/next-app/app-config.yaml.hbs +124 -0
- package/templates/next-app/backstage.json.hbs +3 -0
- package/templates/next-app/catalog-info.yaml.hbs +13 -0
- package/templates/next-app/examples/entities.yaml +41 -0
- package/templates/next-app/examples/org.yaml +17 -0
- package/templates/next-app/examples/template/content/catalog-info.yaml +8 -0
- package/templates/next-app/examples/template/content/index.js +1 -0
- package/templates/next-app/examples/template/content/package.json +5 -0
- package/templates/next-app/examples/template/template.yaml +76 -0
- package/templates/next-app/package.json.hbs +54 -0
- package/templates/next-app/packages/README.md +9 -0
- package/templates/next-app/packages/app/.eslintignore +1 -0
- package/templates/next-app/packages/app/.eslintrc.js.hbs +1 -0
- package/templates/next-app/packages/app/e2e-tests/app.test.ts +27 -0
- package/templates/next-app/packages/app/package.json.hbs +59 -0
- package/templates/next-app/packages/app/public/android-chrome-192x192.png +0 -0
- package/templates/next-app/packages/app/public/apple-touch-icon.png +0 -0
- package/templates/next-app/packages/app/public/favicon-16x16.png +0 -0
- package/templates/next-app/packages/app/public/favicon-32x32.png +0 -0
- package/templates/next-app/packages/app/public/favicon.ico +0 -0
- package/templates/next-app/packages/app/public/index.html +60 -0
- package/templates/next-app/packages/app/public/manifest.json +15 -0
- package/templates/next-app/packages/app/public/robots.txt +2 -0
- package/templates/next-app/packages/app/public/safari-pinned-tab.svg +1 -0
- package/templates/next-app/packages/app/src/App.test.tsx +28 -0
- package/templates/next-app/packages/app/src/App.tsx +7 -0
- package/templates/next-app/packages/app/src/index.tsx +6 -0
- package/templates/next-app/packages/app/src/modules/nav/LogoFull.tsx +28 -0
- package/templates/next-app/packages/app/src/modules/nav/LogoIcon.tsx +28 -0
- package/templates/next-app/packages/app/src/modules/nav/Sidebar.tsx +58 -0
- package/templates/next-app/packages/app/src/modules/nav/SidebarLogo.tsx +36 -0
- package/templates/next-app/packages/app/src/modules/nav/index.ts +7 -0
- package/templates/next-app/packages/app/src/setupTests.ts +1 -0
- package/templates/next-app/packages/backend/.eslintrc.js.hbs +1 -0
- package/templates/next-app/packages/backend/Dockerfile +70 -0
- package/templates/next-app/packages/backend/README.md +59 -0
- package/templates/next-app/packages/backend/package.json.hbs +54 -0
- package/templates/next-app/packages/backend/src/index.ts +55 -0
- package/templates/next-app/playwright.config.ts +60 -0
- package/templates/next-app/plugins/README.md +9 -0
- package/templates/next-app/tsconfig.json +17 -0
- package/templates/next-app/yarn.lock +12 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { makeStyles } from '@material-ui/core';
|
|
2
|
+
|
|
3
|
+
const useStyles = makeStyles({
|
|
4
|
+
svg: {
|
|
5
|
+
width: 'auto',
|
|
6
|
+
height: 30,
|
|
7
|
+
},
|
|
8
|
+
path: {
|
|
9
|
+
fill: '#7df3e1',
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
export const LogoFull = () => {
|
|
14
|
+
const classes = useStyles();
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<svg
|
|
18
|
+
className={classes.svg}
|
|
19
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
20
|
+
viewBox="0 0 2079.95 456.05"
|
|
21
|
+
>
|
|
22
|
+
<path
|
|
23
|
+
className={classes.path}
|
|
24
|
+
d="M302.9,180a80.62,80.62,0,0,0,13.44-10.37c.8-.77,1.55-1.54,2.31-2.31a81.89,81.89,0,0,0,7.92-9.37,62.37,62.37,0,0,0,6.27-10.77,48.6,48.6,0,0,0,4.36-16.4c1.49-19.39-10-38.67-35.62-54.22L198.42,14,78.16,129.22l-78.29,75,108.6,65.9a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.8,66.42-25.69,19.16-18.36,25.52-42.12,13.7-61.87a49.69,49.69,0,0,0-6.8-8.87,89.78,89.78,0,0,0,19.28,2.15H259a85.09,85.09,0,0,0,31-5.79A80.88,80.88,0,0,0,302.9,180Zm-100.59,59.8c-19.32,18.51-50.4,21.24-75.7,5.9l-75.13-45.6,67.44-64.65,76.42,46.39C222.88,198.57,221.36,221.6,202.31,239.84Zm8.94-82.21L140.6,114.74,205,53l69.37,42.11c25.94,15.73,29.31,37.05,10.55,55A60.71,60.71,0,0,1,211.25,157.63Zm29.86,190c-19.57,18.75-46.17,29.08-74.88,29.08a123.84,123.84,0,0,1-64.11-18.19L-.13,296.51v24.67l108.6,65.91a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.81,66.42-25.69,12.88-12.34,20-27.13,19.68-41.49v-1.79A87.85,87.85,0,0,1,241.11,347.67Zm0-39c-19.57,18.76-46.17,29.09-74.88,29.09a123.84,123.84,0,0,1-64.11-18.19L-.13,257.52V282.2l108.6,65.91a111.59,111.59,0,0,0,57.76,16.41c24.92,0,48.8-8.8,66.42-25.68,12.88-12.35,20-27.13,19.68-41.5v-1.79A86.86,86.86,0,0,1,241.11,308.68Zm0-39c-19.57,18.76-46.17,29.09-74.88,29.09a123.84,123.84,0,0,1-64.11-18.19L-.13,218.54v24.68l108.6,65.91a111.59,111.59,0,0,0,57.76,16.41c24.92,0,48.8-8.8,66.42-25.69,12.88-12.34,20-27.12,19.68-41.49v-1.82A87.14,87.14,0,0,1,241.11,269.7Zm83.69,25.74a94.16,94.16,0,0,1-60.19,25.86h0V348a81.6,81.6,0,0,0,51.73-22.37c14-13.38,21.15-28.11,21-42.64v-2.2A95.14,95.14,0,0,1,324.8,295.44Zm-83.69,91.21c-19.57,18.75-46.17,29.09-74.88,29.09a123.76,123.76,0,0,1-64.11-18.2L-.13,335.49v24.67l108.6,65.91a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.81,66.42-25.69,12.88-12.34,20-27.13,19.68-41.49v-1.79A87.35,87.35,0,0,1,241.11,386.65Zm85.75-210.21c-.68.69-1.35,1.38-2.06,2.05a99.19,99.19,0,0,1-22.23,15.69,94.53,94.53,0,0,1-26.24,8.71,97.84,97.84,0,0,1-14.16,1.57c.5,1.61.9,3.25,1.25,4.9a52.7,52.7,0,0,1,1.13,12V231h.05A84.48,84.48,0,0,0,290,225.47a80.83,80.83,0,0,0,26.38-16.82c.81-.77,1.51-1.56,2.27-2.34a82,82,0,0,0,7.92-9.38,62.85,62.85,0,0,0,6.29-10.78,48.5,48.5,0,0,0,4.32-16.44c.09-1.23.2-2.47.19-3.7v-2c-.72,1-1.48,2.06-2.26,3.09A98,98,0,0,1,326.86,176.44Zm0,77.92c-.68.7-1.3,1.41-2,2.1a94.09,94.09,0,0,1-60.19,25.85h0V309h0a81.65,81.65,0,0,0,51.73-22.37,73.51,73.51,0,0,0,16.48-22.49,48.56,48.56,0,0,0,4.32-16.44c.09-1.24.2-2.48.19-3.71v-2.2c-.74,1.08-1.47,2.16-2.27,3.22A95.81,95.81,0,0,1,326.82,254.36Zm0-39c-.68.7-1.3,1.41-2,2.1a92.22,92.22,0,0,1-10.62,8.65,93.53,93.53,0,0,1-11.63,7,95.63,95.63,0,0,1-37.94,10.18h-.05l0,26.67h0a81.63,81.63,0,0,0,51.73-22.37c.81-.77,1.51-1.56,2.27-2.34a82,82,0,0,0,7.92-9.38,63.16,63.16,0,0,0,6.29-10.77,48.55,48.55,0,0,0,4.32-16.45c.09-1.23.2-2.47.19-3.7v-2.2c-.74,1.08-1.47,2.16-2.27,3.22A98.19,98.19,0,0,1,326.82,215.38Zm241-88.84q7.94,0,17.09.17t18.12,1a139.3,139.3,0,0,1,16.74,2.57,42.78,42.78,0,0,1,13.3,5.14,64.27,64.27,0,0,1,20.54,19.89Q662,168,662,186.54q0,19.54-9.49,33.78t-27.1,21.09v.68q22.78,4.82,34.87,20.58t12.08,38.4a72.62,72.62,0,0,1-4.83,26.06,65.29,65.29,0,0,1-14.33,22.46,71.57,71.57,0,0,1-23.47,15.78q-14,6-32.28,6H478.38V126.54Zm9,105.27q28,0,40.21-9.78t12.26-29.31q0-13-4.14-20.58a29.47,29.47,0,0,0-11.4-11.66A45,45,0,0,0,597,155.17a161.2,161.2,0,0,0-20.19-1.2h-65.6v77.84Zm16.57,112.13q21.74,0,34-11.66T639.59,300q0-12-4.48-19.88a34.85,34.85,0,0,0-11.91-12.52,50.14,50.14,0,0,0-17.09-6.52,105,105,0,0,0-20-1.88H511.17v84.7Zm274.79,26.74q-7.61,4.45-21.06,4.46-11.4,0-18.12-6.34t-6.74-20.75a70.17,70.17,0,0,1-28.13,20.75,97.87,97.87,0,0,1-57.65,3.6,53.51,53.51,0,0,1-18.82-8.58A41.19,41.19,0,0,1,705,348.56q-4.65-9.42-4.66-22.8,0-15.09,5.18-24.69a44.92,44.92,0,0,1,13.64-15.6,62.63,62.63,0,0,1,19.33-9.09q10.88-3.08,22.27-5.14,12.08-2.4,23-3.6a128,128,0,0,0,19.16-3.43c5.53-1.48,9.89-3.65,13.12-6.51s4.83-7,4.83-12.52q0-9.6-3.62-15.43a24.94,24.94,0,0,0-9.32-8.92,38.38,38.38,0,0,0-12.78-4.11,96.54,96.54,0,0,0-14-1q-18.63,0-31.07,7T736.6,249.29H707.26q.69-16.46,6.9-27.77a52.21,52.21,0,0,1,16.57-18.35,70,70,0,0,1,23.65-10.11A125.51,125.51,0,0,1,782.86,190a168.63,168.63,0,0,1,24,1.72,63.26,63.26,0,0,1,21.58,7A41.23,41.23,0,0,1,844,213.59q5.87,9.57,5.87,25v91q0,10.26,1.21,15.05t8.11,4.79a35.57,35.57,0,0,0,9-1.37Zm-47.64-90.87c-3.69,2.74-8.52,4.72-14.5,6s-12.26,2.27-18.82,3.07-13.17,1.71-19.85,2.73a73.7,73.7,0,0,0-18,4.94,32.62,32.62,0,0,0-12.94,9.73q-5,6.32-5,17.23a23.31,23.31,0,0,0,2.94,12.11,24.11,24.11,0,0,0,7.59,8,32,32,0,0,0,10.88,4.44,60.94,60.94,0,0,0,13.11,1.36q14.5,0,24.86-3.92a52.49,52.49,0,0,0,16.91-9.9,39.1,39.1,0,0,0,9.67-13,32.53,32.53,0,0,0,3.11-13.14ZM1002.07,225q-11.05-9.25-29.69-9.26-15.89,0-26.58,5.83A47.29,47.29,0,0,0,928.71,237a64.66,64.66,0,0,0-9.15,22.12A119.83,119.83,0,0,0,916.8,285a98.22,98.22,0,0,0,2.93,24,64.18,64.18,0,0,0,9.15,20.74,46.2,46.2,0,0,0,16.23,14.58q10,5.49,23.82,5.48,21.75,0,34-11.31t15-31.89h30q-4.83,32.91-24.68,50.75t-54,17.83q-20.37,0-36.07-6.52A69.86,69.86,0,0,1,907,350.11a79.92,79.92,0,0,1-15.88-28.63A118.64,118.64,0,0,1,885.73,285a129.41,129.41,0,0,1,5.18-37.21,85.63,85.63,0,0,1,15.71-30.17A73.46,73.46,0,0,1,933,197.35Q948.91,190,970,190a108.54,108.54,0,0,1,28.48,3.6,69.59,69.59,0,0,1,23.48,11.15,61,61,0,0,1,16.74,19q6.55,11.49,8.29,27.26h-30.38Q1013.11,234.21,1002.07,225Zm109.77-98.41v145l81.47-77.49h39.36l-70.77,64.46,75.95,112.82h-37.29l-61.1-92.59-27.62,25.38v67.21H1082.5V126.54Zm170.54,205.22a31.07,31.07,0,0,0,10.87,10.63,49,49,0,0,0,15.19,5.66,87.06,87.06,0,0,0,17.44,1.71,109.18,109.18,0,0,0,14.5-1,53.22,53.22,0,0,0,14-3.78,26.27,26.27,0,0,0,10.53-8q4.14-5.32,4.14-13.55,0-11.31-8.63-17.14a73.69,73.69,0,0,0-21.58-9.43q-12.94-3.6-28.13-6.52a146,146,0,0,1-28.14-8.23A58.16,58.16,0,0,1,1261,267.13q-8.64-9.6-8.63-26.75,0-13.38,6-23a49.26,49.26,0,0,1,15.53-15.61,71.76,71.76,0,0,1,21.4-8.91A99.41,99.41,0,0,1,1319,190a141.31,141.31,0,0,1,28,2.58,64.85,64.85,0,0,1,22.62,8.91,46.16,46.16,0,0,1,15.7,17.15q5.87,10.8,6.91,26.91h-29.35q-.69-8.57-4.48-14.23a29.36,29.36,0,0,0-9.67-9.08,44.16,44.16,0,0,0-12.94-5,67.68,67.68,0,0,0-14.33-1.54,87.29,87.29,0,0,0-13.29,1,45.28,45.28,0,0,0-12.26,3.6,24.49,24.49,0,0,0-9,6.86q-3.46,4.29-3.46,11.14a16.32,16.32,0,0,0,5.36,12.52,42.75,42.75,0,0,0,13.63,8.23,120,120,0,0,0,18.64,5.48q10.37,2.24,20.72,4.63,11,2.4,21.57,5.83A70.74,70.74,0,0,1,1382,284.1a44.55,44.55,0,0,1,13.12,14.23q5,8.58,5,21.26,0,16.13-6.73,26.75a52.5,52.5,0,0,1-17.61,17.14,73.89,73.89,0,0,1-24.51,9.09,146.3,146.3,0,0,1-27.1,2.57,126.24,126.24,0,0,1-28.31-3.09A69.56,69.56,0,0,1,1272,361.94a51.74,51.74,0,0,1-16.57-18.52q-6.21-11.49-6.9-27.95h29.34A32.65,32.65,0,0,0,1282.38,331.76Zm226.46-137.67v25.72h-35.56V329.88a31.37,31.37,0,0,0,.87,8.23,8.42,8.42,0,0,0,3.28,4.8,14.61,14.61,0,0,0,6.73,2.23,99.19,99.19,0,0,0,11.22.51h13.46v25.72H1486.4a105.8,105.8,0,0,1-19.5-1.55,28.65,28.65,0,0,1-13.12-5.65,24.09,24.09,0,0,1-7.42-11.66q-2.43-7.54-2.42-19.89V219.81h-30.38V194.09h30.38V140.94h29.34v53.15ZM1699.4,370.68q-7.61,4.45-21.06,4.46-11.4,0-18.12-6.34t-6.74-20.75a70.17,70.17,0,0,1-28.13,20.75,97.87,97.87,0,0,1-57.65,3.6,53.51,53.51,0,0,1-18.82-8.58,41.19,41.19,0,0,1-12.6-15.26q-4.65-9.42-4.66-22.8,0-15.09,5.18-24.69a44.92,44.92,0,0,1,13.64-15.6,62.63,62.63,0,0,1,19.33-9.09q10.88-3.08,22.27-5.14,12.07-2.4,23-3.6a128,128,0,0,0,19.16-3.43c5.53-1.48,9.89-3.65,13.12-6.51s4.83-7,4.83-12.52q0-9.6-3.62-15.43a24.94,24.94,0,0,0-9.32-8.92,38.38,38.38,0,0,0-12.78-4.11,96.54,96.54,0,0,0-14-1q-18.63,0-31.07,7t-13.46,26.57h-29.34q.67-16.46,6.9-27.77A52.21,52.21,0,0,1,1562,203.17a70,70,0,0,1,23.65-10.11,125.51,125.51,0,0,1,28.48-3.09,168.63,168.63,0,0,1,24,1.72,63.26,63.26,0,0,1,21.58,7,41.23,41.23,0,0,1,15.53,14.89q5.87,9.57,5.87,25v91q0,10.26,1.21,15.05t8.11,4.79a35.57,35.57,0,0,0,9-1.37Zm-47.64-90.87c-3.69,2.74-8.52,4.72-14.5,6s-12.26,2.27-18.82,3.07-13.17,1.71-19.85,2.73a73.7,73.7,0,0,0-17.95,4.94,32.62,32.62,0,0,0-12.94,9.73q-5,6.32-5,17.23a23.31,23.31,0,0,0,2.94,12.11,24.11,24.11,0,0,0,7.59,8,32,32,0,0,0,10.88,4.44,60.94,60.94,0,0,0,13.11,1.36q14.51,0,24.86-3.92a52.49,52.49,0,0,0,16.91-9.9,39.1,39.1,0,0,0,9.67-13,32.53,32.53,0,0,0,3.11-13.14Zm208.85,141.62q-20,21.6-62.83,21.6a122.11,122.11,0,0,1-25.37-2.74,78,78,0,0,1-23.48-8.92,54.41,54.41,0,0,1-17.43-16.11q-6.91-10-7.6-24.35h29.35a21.47,21.47,0,0,0,5,13.38,36.67,36.67,0,0,0,11.4,8.91,55.52,55.52,0,0,0,14.67,5,79.51,79.51,0,0,0,15.19,1.55q14.49,0,24.51-5A46,46,0,0,0,1840.59,401a56.53,56.53,0,0,0,9.49-21.09,117.46,117.46,0,0,0,2.94-27.09V341.19h-.7q-7.59,16.46-23,24.18a71.8,71.8,0,0,1-32.63,7.71q-20,0-34.86-7.2A72.88,72.88,0,0,1,1737,346.51a82.13,82.13,0,0,1-15-28.46,116.62,116.62,0,0,1-5-34.47,133.92,133.92,0,0,1,4.14-32.4A88.17,88.17,0,0,1,1735,221a75.49,75.49,0,0,1,25.55-22.29q15.87-8.75,39-8.75a66.21,66.21,0,0,1,31.07,7.38,52.13,52.13,0,0,1,22.09,22.11h.35V194.09h27.61V356.28Q1880.63,399.83,1860.61,421.43Zm-37.46-79.72a47.94,47.94,0,0,0,16.4-15.78,71.89,71.89,0,0,0,9.15-22.11,106.77,106.77,0,0,0,2.93-24.69,96.71,96.71,0,0,0-2.76-23,64,64,0,0,0-8.8-20.4,45.76,45.76,0,0,0-15.71-14.57q-9.66-5.49-23.47-5.49-14.16,0-24.17,5.32a46.77,46.77,0,0,0-16.4,14.23,60.14,60.14,0,0,0-9.32,20.57,99.69,99.69,0,0,0-2.93,24.35,120.63,120.63,0,0,0,2.42,24,67.5,67.5,0,0,0,8.28,21.77,46.37,46.37,0,0,0,15.54,15.78q9.66,6,24.16,6T1823.15,341.71Zm228,18.34q-20,15.09-50.41,15.09-21.4,0-37.11-6.86a73.16,73.16,0,0,1-26.41-19.2,81.52,81.52,0,0,1-16-29.49,141.12,141.12,0,0,1-6-37.38,106.1,106.1,0,0,1,6.21-37A88.56,88.56,0,0,1,1938.8,216a79.09,79.09,0,0,1,26.58-19.2A81.66,81.66,0,0,1,1999,190q23.82,0,39.53,9.78a78,78,0,0,1,25.2,24.86,98.18,98.18,0,0,1,13.12,32.91,140.6,140.6,0,0,1,2.93,34h-133.6a70,70,0,0,0,2.76,22.12,49.9,49.9,0,0,0,10,18.51A49.1,49.1,0,0,0,1976.6,345q10.7,4.82,25.2,4.8,18.65,0,30.55-8.57t15.71-26.06h29Q2071.18,345,2051.17,360.05Zm-7.08-113.84a50,50,0,0,0-10.7-16,53.1,53.1,0,0,0-56.62-10.63,47.48,47.48,0,0,0-15.71,10.81,51.69,51.69,0,0,0-10.35,15.94,60.18,60.18,0,0,0-4.49,19.37h102.53A59.47,59.47,0,0,0,2044.09,246.21ZM302.9,180a80.62,80.62,0,0,0,13.44-10.37c.8-.77,1.55-1.54,2.31-2.31a81.89,81.89,0,0,0,7.92-9.37,62.37,62.37,0,0,0,6.27-10.77,48.6,48.6,0,0,0,4.36-16.4c1.49-19.39-10-38.67-35.62-54.22L198.42,14,78.16,129.22l-78.29,75,108.6,65.9a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.8,66.42-25.69,19.16-18.36,25.52-42.12,13.7-61.87a49.69,49.69,0,0,0-6.8-8.87,89.78,89.78,0,0,0,19.28,2.15H259a85.09,85.09,0,0,0,31-5.79A80.88,80.88,0,0,0,302.9,180Zm-100.59,59.8c-19.32,18.51-50.4,21.24-75.7,5.9l-75.13-45.6,67.44-64.65,76.42,46.39C222.88,198.57,221.36,221.6,202.31,239.84Zm8.94-82.21L140.6,114.74,205,53l69.37,42.11c25.94,15.73,29.31,37.05,10.55,55A60.71,60.71,0,0,1,211.25,157.63Zm29.86,190c-19.57,18.75-46.17,29.08-74.88,29.08a123.84,123.84,0,0,1-64.11-18.19L-.13,296.51v24.67l108.6,65.91a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.81,66.42-25.69,12.88-12.34,20-27.13,19.68-41.49v-1.79A87.85,87.85,0,0,1,241.11,347.67Zm0-39c-19.57,18.76-46.17,29.09-74.88,29.09a123.84,123.84,0,0,1-64.11-18.19L-.13,257.52V282.2l108.6,65.91a111.59,111.59,0,0,0,57.76,16.41c24.92,0,48.8-8.8,66.42-25.68,12.88-12.35,20-27.13,19.68-41.5v-1.79A86.86,86.86,0,0,1,241.11,308.68Zm0-39c-19.57,18.76-46.17,29.09-74.88,29.09a123.84,123.84,0,0,1-64.11-18.19L-.13,218.54v24.68l108.6,65.91a111.59,111.59,0,0,0,57.76,16.41c24.92,0,48.8-8.8,66.42-25.69,12.88-12.34,20-27.12,19.68-41.49v-1.82A87.14,87.14,0,0,1,241.11,269.7Zm83.69,25.74a94.16,94.16,0,0,1-60.19,25.86h0V348a81.6,81.6,0,0,0,51.73-22.37c14-13.38,21.15-28.11,21-42.64v-2.2A95.14,95.14,0,0,1,324.8,295.44Zm-83.69,91.21c-19.57,18.75-46.17,29.09-74.88,29.09a123.76,123.76,0,0,1-64.11-18.2L-.13,335.49v24.67l108.6,65.91a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.81,66.42-25.69,12.88-12.34,20-27.13,19.68-41.49v-1.79A87.35,87.35,0,0,1,241.11,386.65Zm85.75-210.21c-.68.69-1.35,1.38-2.06,2.05a99.19,99.19,0,0,1-22.23,15.69,94.53,94.53,0,0,1-26.24,8.71,97.84,97.84,0,0,1-14.16,1.57c.5,1.61.9,3.25,1.25,4.9a52.7,52.7,0,0,1,1.13,12V231h.05A84.48,84.48,0,0,0,290,225.47a80.83,80.83,0,0,0,26.38-16.82c.81-.77,1.51-1.56,2.27-2.34a82,82,0,0,0,7.92-9.38,62.85,62.85,0,0,0,6.29-10.78,48.5,48.5,0,0,0,4.32-16.44c.09-1.23.2-2.47.19-3.7v-2c-.72,1-1.48,2.06-2.26,3.09A98,98,0,0,1,326.86,176.44Zm0,77.92c-.68.7-1.3,1.41-2,2.1a94.09,94.09,0,0,1-60.19,25.85h0V309h0a81.65,81.65,0,0,0,51.73-22.37,73.51,73.51,0,0,0,16.48-22.49,48.56,48.56,0,0,0,4.32-16.44c.09-1.24.2-2.48.19-3.71v-2.2c-.74,1.08-1.47,2.16-2.27,3.22A95.81,95.81,0,0,1,326.82,254.36Zm0-39c-.68.7-1.3,1.41-2,2.1a92.22,92.22,0,0,1-10.62,8.65,93.53,93.53,0,0,1-11.63,7,95.63,95.63,0,0,1-37.94,10.18h-.05l0,26.67h0a81.63,81.63,0,0,0,51.73-22.37c.81-.77,1.51-1.56,2.27-2.34a82,82,0,0,0,7.92-9.38,63.16,63.16,0,0,0,6.29-10.77,48.55,48.55,0,0,0,4.32-16.45c.09-1.23.2-2.47.19-3.7v-2.2c-.74,1.08-1.47,2.16-2.27,3.22A98.19,98.19,0,0,1,326.82,215.38Z"
|
|
25
|
+
/>
|
|
26
|
+
</svg>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { makeStyles } from '@material-ui/core';
|
|
2
|
+
|
|
3
|
+
const useStyles = makeStyles({
|
|
4
|
+
svg: {
|
|
5
|
+
width: 'auto',
|
|
6
|
+
height: 28,
|
|
7
|
+
},
|
|
8
|
+
path: {
|
|
9
|
+
fill: '#7df3e1',
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
export const LogoIcon = () => {
|
|
14
|
+
const classes = useStyles();
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<svg
|
|
18
|
+
className={classes.svg}
|
|
19
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
20
|
+
viewBox="0 0 337.46 428.5"
|
|
21
|
+
>
|
|
22
|
+
<path
|
|
23
|
+
className={classes.path}
|
|
24
|
+
d="M303,166.05a80.69,80.69,0,0,0,13.45-10.37c.79-.77,1.55-1.53,2.3-2.3a83.12,83.12,0,0,0,7.93-9.38A63.69,63.69,0,0,0,333,133.23a48.58,48.58,0,0,0,4.35-16.4c1.49-19.39-10-38.67-35.62-54.22L198.56,0,78.3,115.23,0,190.25l108.6,65.91a111.59,111.59,0,0,0,57.76,16.41c24.92,0,48.8-8.8,66.42-25.69,19.16-18.36,25.52-42.12,13.7-61.87a49.22,49.22,0,0,0-6.8-8.87A89.17,89.17,0,0,0,259,178.29h.15a85.08,85.08,0,0,0,31-5.79A80.88,80.88,0,0,0,303,166.05ZM202.45,225.86c-19.32,18.51-50.4,21.23-75.7,5.9L51.61,186.15l67.45-64.64,76.41,46.38C223,184.58,221.49,207.61,202.45,225.86Zm8.93-82.22-70.65-42.89L205.14,39,274.51,81.1c25.94,15.72,29.31,37,10.55,55A60.69,60.69,0,0,1,211.38,143.64Zm29.86,190c-19.57,18.75-46.17,29.09-74.88,29.09a123.73,123.73,0,0,1-64.1-18.2L0,282.52v24.67L108.6,373.1a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.81,66.42-25.69,12.88-12.34,20-27.13,19.68-41.49v-1.79A87.27,87.27,0,0,1,241.24,333.68Zm0-39c-19.57,18.75-46.17,29.08-74.88,29.08a123.81,123.81,0,0,1-64.1-18.19L0,243.53v24.68l108.6,65.91a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.81,66.42-25.69,12.88-12.34,20-27.13,19.68-41.5v-1.78A87.27,87.27,0,0,1,241.24,294.7Zm0-39c-19.57,18.76-46.17,29.09-74.88,29.09a123.81,123.81,0,0,1-64.1-18.19L0,204.55v24.68l108.6,65.91a111.59,111.59,0,0,0,57.76,16.41c24.92,0,48.8-8.8,66.42-25.68,12.88-12.35,20-27.13,19.68-41.5v-1.82A86.09,86.09,0,0,1,241.24,255.71Zm83.7,25.74a94.15,94.15,0,0,1-60.2,25.86h0V334a81.6,81.6,0,0,0,51.74-22.37c14-13.38,21.14-28.11,21-42.64v-2.19A94.92,94.92,0,0,1,324.94,281.45Zm-83.7,91.21c-19.57,18.76-46.17,29.09-74.88,29.09a123.73,123.73,0,0,1-64.1-18.2L0,321.5v24.68l108.6,65.9a111.6,111.6,0,0,0,57.76,16.42c24.92,0,48.8-8.8,66.42-25.69,12.88-12.34,20-27.13,19.68-41.49v-1.79A86.29,86.29,0,0,1,241.24,372.66ZM327,162.45c-.68.69-1.35,1.38-2.05,2.06a94.37,94.37,0,0,1-10.64,8.65,91.35,91.35,0,0,1-11.6,7,94.53,94.53,0,0,1-26.24,8.71,97.69,97.69,0,0,1-14.16,1.57c.5,1.61.9,3.25,1.25,4.9a53.27,53.27,0,0,1,1.14,12V217h.05a84.41,84.41,0,0,0,25.35-5.55,81,81,0,0,0,26.39-16.82c.8-.77,1.5-1.56,2.26-2.34a82.08,82.08,0,0,0,7.93-9.38A63.76,63.76,0,0,0,333,172.17a48.55,48.55,0,0,0,4.32-16.45c.09-1.23.2-2.47.19-3.7V150q-1.08,1.54-2.25,3.09A96.73,96.73,0,0,1,327,162.45Zm0,77.92c-.69.7-1.31,1.41-2,2.1a94.2,94.2,0,0,1-60.2,25.86h0l0,26.67h0a81.6,81.6,0,0,0,51.74-22.37A73.51,73.51,0,0,0,333,250.13a48.56,48.56,0,0,0,4.32-16.44c.09-1.24.2-2.47.19-3.71v-2.19c-.74,1.07-1.46,2.15-2.27,3.21A95.68,95.68,0,0,1,327,240.37Zm0-39c-.69.7-1.31,1.41-2,2.1a93.18,93.18,0,0,1-10.63,8.65,91.63,91.63,0,0,1-11.63,7,95.47,95.47,0,0,1-37.94,10.18h0V256h0a81.65,81.65,0,0,0,51.74-22.37c.8-.77,1.5-1.56,2.26-2.34a82.08,82.08,0,0,0,7.93-9.38A63.76,63.76,0,0,0,333,211.15a48.56,48.56,0,0,0,4.32-16.44c.09-1.24.2-2.48.19-3.71v-2.2c-.74,1.08-1.46,2.16-2.27,3.22A95.68,95.68,0,0,1,327,201.39Z"
|
|
25
|
+
/>
|
|
26
|
+
</svg>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SidebarDivider,
|
|
3
|
+
SidebarGroup,
|
|
4
|
+
SidebarItem,
|
|
5
|
+
SidebarScrollWrapper,
|
|
6
|
+
SidebarSpace,
|
|
7
|
+
} from '@backstage/core-components';
|
|
8
|
+
import { compatWrapper } from '@backstage/core-compat-api';
|
|
9
|
+
import { Sidebar } from '@backstage/core-components';
|
|
10
|
+
import { NavContentBlueprint } from '@backstage/frontend-plugin-api';
|
|
11
|
+
import { SidebarLogo } from './SidebarLogo';
|
|
12
|
+
import CreateComponentIcon from '@material-ui/icons/AddCircleOutline';
|
|
13
|
+
import HomeIcon from '@material-ui/icons/Home';
|
|
14
|
+
import MenuIcon from '@material-ui/icons/Menu';
|
|
15
|
+
import SearchIcon from '@material-ui/icons/Search';
|
|
16
|
+
import { SidebarSearchModal } from '@backstage/plugin-search';
|
|
17
|
+
import { UserSettingsSignInAvatar, Settings as SidebarSettings } from '@backstage/plugin-user-settings';
|
|
18
|
+
|
|
19
|
+
export const SidebarContent = NavContentBlueprint.make({
|
|
20
|
+
params: {
|
|
21
|
+
component: ({ items }) =>
|
|
22
|
+
compatWrapper(
|
|
23
|
+
<Sidebar>
|
|
24
|
+
<SidebarLogo />
|
|
25
|
+
<SidebarGroup label="Search" icon={<SearchIcon />} to="/search">
|
|
26
|
+
<SidebarSearchModal />
|
|
27
|
+
</SidebarGroup>
|
|
28
|
+
<SidebarDivider />
|
|
29
|
+
<SidebarGroup label="Menu" icon={<MenuIcon />}>
|
|
30
|
+
{/* Global nav, not org-specific */}
|
|
31
|
+
<SidebarItem icon={HomeIcon} to="catalog" text="Home" />
|
|
32
|
+
<SidebarItem
|
|
33
|
+
icon={CreateComponentIcon}
|
|
34
|
+
to="create"
|
|
35
|
+
text="Create..."
|
|
36
|
+
/>
|
|
37
|
+
{/* End global nav */}
|
|
38
|
+
<SidebarDivider />
|
|
39
|
+
<SidebarScrollWrapper>
|
|
40
|
+
{/* Items in this group will be scrollable if they run out of space */}
|
|
41
|
+
{items.map((item, index) => (
|
|
42
|
+
<SidebarItem {...item} key={index} />
|
|
43
|
+
))}
|
|
44
|
+
</SidebarScrollWrapper>
|
|
45
|
+
</SidebarGroup>
|
|
46
|
+
<SidebarSpace />
|
|
47
|
+
<SidebarDivider />
|
|
48
|
+
<SidebarGroup
|
|
49
|
+
label="Settings"
|
|
50
|
+
icon={<UserSettingsSignInAvatar />}
|
|
51
|
+
to="/settings"
|
|
52
|
+
>
|
|
53
|
+
<SidebarSettings />
|
|
54
|
+
</SidebarGroup>
|
|
55
|
+
</Sidebar>,
|
|
56
|
+
),
|
|
57
|
+
},
|
|
58
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Link,
|
|
3
|
+
sidebarConfig,
|
|
4
|
+
useSidebarOpenState,
|
|
5
|
+
} from '@backstage/core-components';
|
|
6
|
+
import { makeStyles } from '@material-ui/core';
|
|
7
|
+
import { LogoFull } from './LogoFull';
|
|
8
|
+
import { LogoIcon } from './LogoIcon';
|
|
9
|
+
|
|
10
|
+
const useSidebarLogoStyles = makeStyles({
|
|
11
|
+
root: {
|
|
12
|
+
width: sidebarConfig.drawerWidthClosed,
|
|
13
|
+
height: 3 * sidebarConfig.logoHeight,
|
|
14
|
+
display: 'flex',
|
|
15
|
+
flexFlow: 'row nowrap',
|
|
16
|
+
alignItems: 'center',
|
|
17
|
+
marginBottom: -14,
|
|
18
|
+
},
|
|
19
|
+
link: {
|
|
20
|
+
width: sidebarConfig.drawerWidthClosed,
|
|
21
|
+
marginLeft: 24,
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export const SidebarLogo = () => {
|
|
26
|
+
const classes = useSidebarLogoStyles();
|
|
27
|
+
const { isOpen } = useSidebarOpenState();
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<div className={classes.root}>
|
|
31
|
+
<Link to="/" underline="none" className={classes.link} aria-label="Home">
|
|
32
|
+
{isOpen ? <LogoFull /> : <LogoIcon />}
|
|
33
|
+
</Link>
|
|
34
|
+
</div>
|
|
35
|
+
);
|
|
36
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# This dockerfile builds an image for the backend package.
|
|
2
|
+
# It should be executed with the root of the repo as docker context.
|
|
3
|
+
#
|
|
4
|
+
# Before building this image, be sure to have run the following commands in the repo root:
|
|
5
|
+
#
|
|
6
|
+
# yarn install --immutable
|
|
7
|
+
# yarn tsc
|
|
8
|
+
# yarn build:backend
|
|
9
|
+
#
|
|
10
|
+
# Once the commands have been run, you can build the image using `yarn build-image`
|
|
11
|
+
#
|
|
12
|
+
# Alternatively, there is also a multi-stage Dockerfile documented here:
|
|
13
|
+
# https://backstage.io/docs/deployment/docker#multi-stage-build
|
|
14
|
+
|
|
15
|
+
FROM node:20-bookworm-slim
|
|
16
|
+
|
|
17
|
+
# Set Python interpreter for `node-gyp` to use
|
|
18
|
+
ENV PYTHON=/usr/bin/python3
|
|
19
|
+
|
|
20
|
+
# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend.
|
|
21
|
+
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
22
|
+
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
23
|
+
apt-get update && \
|
|
24
|
+
apt-get install -y --no-install-recommends python3 g++ build-essential && \
|
|
25
|
+
rm -rf /var/lib/apt/lists/*
|
|
26
|
+
|
|
27
|
+
# Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image,
|
|
28
|
+
# in which case you should also move better-sqlite3 to "devDependencies" in package.json.
|
|
29
|
+
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
30
|
+
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
31
|
+
apt-get update && \
|
|
32
|
+
apt-get install -y --no-install-recommends libsqlite3-dev && \
|
|
33
|
+
rm -rf /var/lib/apt/lists/*
|
|
34
|
+
|
|
35
|
+
# From here on we use the least-privileged `node` user to run the backend.
|
|
36
|
+
USER node
|
|
37
|
+
|
|
38
|
+
# This should create the app dir as `node`.
|
|
39
|
+
# If it is instead created as `root` then the `tar` command below will fail: `can't create directory 'packages/': Permission denied`.
|
|
40
|
+
# If this occurs, then ensure BuildKit is enabled (`DOCKER_BUILDKIT=1`) so the app dir is correctly created as `node`.
|
|
41
|
+
WORKDIR /app
|
|
42
|
+
|
|
43
|
+
# Copy files needed by Yarn
|
|
44
|
+
COPY --chown=node:node .yarn ./.yarn
|
|
45
|
+
COPY --chown=node:node .yarnrc.yml ./
|
|
46
|
+
COPY --chown=node:node backstage.json ./
|
|
47
|
+
|
|
48
|
+
# This switches many Node.js dependencies to production mode.
|
|
49
|
+
ENV NODE_ENV=production
|
|
50
|
+
|
|
51
|
+
# This disables node snapshot for Node 20 to work with the Scaffolder
|
|
52
|
+
ENV NODE_OPTIONS="--no-node-snapshot"
|
|
53
|
+
|
|
54
|
+
# Copy repo skeleton first, to avoid unnecessary docker cache invalidation.
|
|
55
|
+
# The skeleton contains the package.json of each package in the monorepo,
|
|
56
|
+
# and along with yarn.lock and the root package.json, that's enough to run yarn install.
|
|
57
|
+
COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./
|
|
58
|
+
RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz
|
|
59
|
+
|
|
60
|
+
RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \
|
|
61
|
+
yarn workspaces focus --all --production && rm -rf "$(yarn cache clean)"
|
|
62
|
+
|
|
63
|
+
# This will include the examples, if you don't need these simply remove this line
|
|
64
|
+
COPY --chown=node:node examples ./examples
|
|
65
|
+
|
|
66
|
+
# Then copy the rest of the backend bundle, along with any other files we might want.
|
|
67
|
+
COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./
|
|
68
|
+
RUN tar xzf bundle.tar.gz && rm bundle.tar.gz
|
|
69
|
+
|
|
70
|
+
CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# example-backend
|
|
2
|
+
|
|
3
|
+
This package is an EXAMPLE of a Backstage backend.
|
|
4
|
+
|
|
5
|
+
The main purpose of this package is to provide a test bed for Backstage plugins
|
|
6
|
+
that have a backend part. Feel free to experiment locally or within your fork by
|
|
7
|
+
adding dependencies and routes to this backend, to try things out.
|
|
8
|
+
|
|
9
|
+
Our goal is to eventually amend the create-app flow of the CLI, such that a
|
|
10
|
+
production ready version of a backend skeleton is made alongside the frontend
|
|
11
|
+
app. Until then, feel free to experiment here!
|
|
12
|
+
|
|
13
|
+
## Development
|
|
14
|
+
|
|
15
|
+
To run the example backend, first go to the project root and run
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
yarn install
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
You should only need to do this once.
|
|
22
|
+
|
|
23
|
+
After that, go to the `packages/backend` directory and run
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
yarn start
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
If you want to override any configuration locally, for example adding any secrets,
|
|
30
|
+
you can do so in `app-config.local.yaml`.
|
|
31
|
+
|
|
32
|
+
The backend starts up on port 7007 per default.
|
|
33
|
+
|
|
34
|
+
## Populating The Catalog
|
|
35
|
+
|
|
36
|
+
If you want to use the catalog functionality, you need to add so called
|
|
37
|
+
locations to the backend. These are places where the backend can find some
|
|
38
|
+
entity descriptor data to consume and serve. For more information, see
|
|
39
|
+
[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog).
|
|
40
|
+
|
|
41
|
+
To get started quickly, this template already includes some statically configured example locations
|
|
42
|
+
in `app-config.yaml` under `catalog.locations`. You can remove and replace these locations as you
|
|
43
|
+
like, and also override them for local development in `app-config.local.yaml`.
|
|
44
|
+
|
|
45
|
+
## Authentication
|
|
46
|
+
|
|
47
|
+
We chose [Passport](http://www.passportjs.org/) as authentication platform due
|
|
48
|
+
to its comprehensive set of supported authentication
|
|
49
|
+
[strategies](http://www.passportjs.org/packages/).
|
|
50
|
+
|
|
51
|
+
Read more about the
|
|
52
|
+
[auth-backend](https://github.com/backstage/backstage/blob/master/plugins/auth-backend/README.md)
|
|
53
|
+
and
|
|
54
|
+
[how to add a new provider](https://github.com/backstage/backstage/blob/master/docs/auth/add-auth-provider.md)
|
|
55
|
+
|
|
56
|
+
## Documentation
|
|
57
|
+
|
|
58
|
+
- [Backstage Readme](https://github.com/backstage/backstage/blob/master/README.md)
|
|
59
|
+
- [Backstage Documentation](https://backstage.io/docs)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "backend",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"main": "dist/index.cjs.js",
|
|
5
|
+
"types": "src/index.ts",
|
|
6
|
+
"private": true,
|
|
7
|
+
"backstage": {
|
|
8
|
+
"role": "backend"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"start": "backstage-cli package start",
|
|
12
|
+
"build": "backstage-cli package build",
|
|
13
|
+
"lint": "backstage-cli package lint",
|
|
14
|
+
"test": "backstage-cli package test",
|
|
15
|
+
"clean": "backstage-cli package clean",
|
|
16
|
+
"build-image": "docker build ../.. -f Dockerfile --tag backstage"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@backstage/backend-defaults": "^{{version '@backstage/backend-defaults'}}",
|
|
20
|
+
"@backstage/config": "^{{version '@backstage/config'}}",
|
|
21
|
+
"@backstage/plugin-app-backend": "^{{version '@backstage/plugin-app-backend'}}",
|
|
22
|
+
"@backstage/plugin-auth-backend": "^{{version '@backstage/plugin-auth-backend'}}",
|
|
23
|
+
"@backstage/plugin-auth-backend-module-github-provider": "^{{version '@backstage/plugin-auth-backend-module-github-provider'}}",
|
|
24
|
+
"@backstage/plugin-auth-backend-module-guest-provider": "^{{version '@backstage/plugin-auth-backend-module-guest-provider'}}",
|
|
25
|
+
"@backstage/plugin-auth-node": "^{{version '@backstage/plugin-auth-node'}}",
|
|
26
|
+
"@backstage/plugin-catalog-backend": "^{{version '@backstage/plugin-catalog-backend'}}",
|
|
27
|
+
"@backstage/plugin-catalog-backend-module-logs": "^{{version '@backstage/plugin-catalog-backend-module-logs'}}",
|
|
28
|
+
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^{{version '@backstage/plugin-catalog-backend-module-scaffolder-entity-model'}}",
|
|
29
|
+
"@backstage/plugin-kubernetes-backend": "^{{version '@backstage/plugin-kubernetes-backend'}}",
|
|
30
|
+
"@backstage/plugin-permission-backend": "^{{version '@backstage/plugin-permission-backend'}}",
|
|
31
|
+
"@backstage/plugin-permission-backend-module-allow-all-policy": "^{{version '@backstage/plugin-permission-backend-module-allow-all-policy'}}",
|
|
32
|
+
"@backstage/plugin-permission-common": "^{{version '@backstage/plugin-permission-common'}}",
|
|
33
|
+
"@backstage/plugin-permission-node": "^{{version '@backstage/plugin-permission-node'}}",
|
|
34
|
+
"@backstage/plugin-proxy-backend": "^{{version '@backstage/plugin-proxy-backend'}}",
|
|
35
|
+
"@backstage/plugin-scaffolder-backend": "^{{version '@backstage/plugin-scaffolder-backend'}}",
|
|
36
|
+
"@backstage/plugin-scaffolder-backend-module-github": "^{{version '@backstage/plugin-scaffolder-backend-module-github'}}",
|
|
37
|
+
"@backstage/plugin-search-backend": "^{{version '@backstage/plugin-search-backend'}}",
|
|
38
|
+
"@backstage/plugin-search-backend-module-catalog": "^{{version '@backstage/plugin-search-backend-module-catalog'}}",
|
|
39
|
+
"@backstage/plugin-search-backend-module-pg": "^{{version '@backstage/plugin-search-backend-module-pg'}}",
|
|
40
|
+
"@backstage/plugin-search-backend-module-techdocs": "^{{version '@backstage/plugin-search-backend-module-techdocs'}}",
|
|
41
|
+
"@backstage/plugin-search-backend-node": "^{{version '@backstage/plugin-search-backend-node'}}",
|
|
42
|
+
"@backstage/plugin-techdocs-backend": "^{{version '@backstage/plugin-techdocs-backend'}}",
|
|
43
|
+
"app": "link:../app",
|
|
44
|
+
"better-sqlite3": "^9.0.0",
|
|
45
|
+
"node-gyp": "^10.0.0",
|
|
46
|
+
"pg": "^8.11.3"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@backstage/cli": "^{{version '@backstage/cli'}}"
|
|
50
|
+
},
|
|
51
|
+
"files": [
|
|
52
|
+
"dist"
|
|
53
|
+
]
|
|
54
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Hi!
|
|
3
|
+
*
|
|
4
|
+
* Note that this is an EXAMPLE Backstage backend. Please check the README.
|
|
5
|
+
*
|
|
6
|
+
* Happy hacking!
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { createBackend } from '@backstage/backend-defaults';
|
|
10
|
+
|
|
11
|
+
const backend = createBackend();
|
|
12
|
+
|
|
13
|
+
backend.add(import('@backstage/plugin-app-backend'));
|
|
14
|
+
backend.add(import('@backstage/plugin-proxy-backend'));
|
|
15
|
+
backend.add(import('@backstage/plugin-scaffolder-backend'));
|
|
16
|
+
backend.add(import('@backstage/plugin-scaffolder-backend-module-github'));
|
|
17
|
+
backend.add(import('@backstage/plugin-techdocs-backend'));
|
|
18
|
+
|
|
19
|
+
// auth plugin
|
|
20
|
+
backend.add(import('@backstage/plugin-auth-backend'));
|
|
21
|
+
// See https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin
|
|
22
|
+
backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
|
|
23
|
+
// See https://backstage.io/docs/auth/guest/provider
|
|
24
|
+
|
|
25
|
+
// catalog plugin
|
|
26
|
+
backend.add(import('@backstage/plugin-catalog-backend'));
|
|
27
|
+
backend.add(
|
|
28
|
+
import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'),
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
// See https://backstage.io/docs/features/software-catalog/configuration#subscribing-to-catalog-errors
|
|
32
|
+
backend.add(import('@backstage/plugin-catalog-backend-module-logs'));
|
|
33
|
+
|
|
34
|
+
// permission plugin
|
|
35
|
+
backend.add(import('@backstage/plugin-permission-backend'));
|
|
36
|
+
// See https://backstage.io/docs/permissions/getting-started for how to create your own permission policy
|
|
37
|
+
backend.add(
|
|
38
|
+
import('@backstage/plugin-permission-backend-module-allow-all-policy'),
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
// search plugin
|
|
42
|
+
backend.add(import('@backstage/plugin-search-backend'));
|
|
43
|
+
|
|
44
|
+
// search engine
|
|
45
|
+
// See https://backstage.io/docs/features/search/search-engines
|
|
46
|
+
backend.add(import('@backstage/plugin-search-backend-module-pg'));
|
|
47
|
+
|
|
48
|
+
// search collators
|
|
49
|
+
backend.add(import('@backstage/plugin-search-backend-module-catalog'));
|
|
50
|
+
backend.add(import('@backstage/plugin-search-backend-module-techdocs'));
|
|
51
|
+
|
|
52
|
+
// kubernetes
|
|
53
|
+
backend.add(import('@backstage/plugin-kubernetes-backend'));
|
|
54
|
+
|
|
55
|
+
backend.start();
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 The Backstage Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { defineConfig } from '@playwright/test';
|
|
18
|
+
import { generateProjects } from '@backstage/e2e-test-utils/playwright';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* See https://playwright.dev/docs/test-configuration.
|
|
22
|
+
*/
|
|
23
|
+
export default defineConfig({
|
|
24
|
+
timeout: 60_000,
|
|
25
|
+
|
|
26
|
+
expect: {
|
|
27
|
+
timeout: 5_000,
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
// Run your local dev server before starting the tests
|
|
31
|
+
webServer: process.env.CI
|
|
32
|
+
? []
|
|
33
|
+
: [
|
|
34
|
+
{
|
|
35
|
+
command: 'yarn start',
|
|
36
|
+
port: 3000,
|
|
37
|
+
reuseExistingServer: true,
|
|
38
|
+
timeout: 60_000,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
|
|
42
|
+
forbidOnly: !!process.env.CI,
|
|
43
|
+
|
|
44
|
+
retries: process.env.CI ? 2 : 0,
|
|
45
|
+
|
|
46
|
+
reporter: [['html', { open: 'never', outputFolder: 'e2e-test-report' }]],
|
|
47
|
+
|
|
48
|
+
use: {
|
|
49
|
+
actionTimeout: 0,
|
|
50
|
+
baseURL:
|
|
51
|
+
process.env.PLAYWRIGHT_URL ??
|
|
52
|
+
(process.env.CI ? 'http://localhost:7007' : 'http://localhost:3000'),
|
|
53
|
+
screenshot: 'only-on-failure',
|
|
54
|
+
trace: 'on-first-retry',
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
outputDir: 'node_modules/.cache/e2e-test-results',
|
|
58
|
+
|
|
59
|
+
projects: generateProjects(), // Find all packages with e2e-test folders
|
|
60
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# The Plugins Folder
|
|
2
|
+
|
|
3
|
+
This is where your own plugins and their associated modules live, each in a
|
|
4
|
+
separate folder of its own.
|
|
5
|
+
|
|
6
|
+
If you want to create a new plugin here, go to your project root directory, run
|
|
7
|
+
the command `yarn new`, and follow the on-screen instructions.
|
|
8
|
+
|
|
9
|
+
You can also check out existing plugins on [the plugin marketplace](https://backstage.io/plugins)!
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "@backstage/cli/config/tsconfig.json",
|
|
3
|
+
"include": [
|
|
4
|
+
"packages/*/src",
|
|
5
|
+
"packages/*/config.d.ts",
|
|
6
|
+
"plugins/*/src",
|
|
7
|
+
"plugins/*/config.d.ts",
|
|
8
|
+
"plugins/*/dev",
|
|
9
|
+
"plugins/*/migrations"
|
|
10
|
+
],
|
|
11
|
+
"exclude": ["node_modules"],
|
|
12
|
+
"compilerOptions": {
|
|
13
|
+
"outDir": "dist-types",
|
|
14
|
+
"rootDir": ".",
|
|
15
|
+
"jsx": "react-jsx"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# This file is generated by running "yarn install" inside your project.
|
|
2
|
+
# Manual changes might be lost - proceed with caution!
|
|
3
|
+
|
|
4
|
+
__metadata:
|
|
5
|
+
version: 8
|
|
6
|
+
cacheKey: 10
|
|
7
|
+
|
|
8
|
+
"root-workspace-0b6124@workspace:.":
|
|
9
|
+
version: 0.0.0-use.local
|
|
10
|
+
resolution: "root-workspace-0b6124@workspace:."
|
|
11
|
+
languageName: unknown
|
|
12
|
+
linkType: soft
|