diff --git a/.github/workflows/docker-build-and-push.yml b/.github/workflows/docker-build-and-push.yml index 06a082c603..3732433747 100644 --- a/.github/workflows/docker-build-and-push.yml +++ b/.github/workflows/docker-build-and-push.yml @@ -71,7 +71,7 @@ jobs: # image: docs - context: src/api/feed-discovery image: feed-discovery - - context: src/web + - context: src/web/app image: nginx build-args: | WEB_URL=${{ inputs.web_url }} diff --git a/.prettierignore b/.prettierignore index 0192afd47a..cb128b9544 100644 --- a/.prettierignore +++ b/.prettierignore @@ -11,8 +11,8 @@ pnpm-lock.yaml # We don't maintain these files src/api/status/public/assets -src/web/public/sw* -src/web/public/workbox* +src/web/app/public/sw* +src/web/app/public/workbox* src/api/status/src/views # Ignore these directories for the docusaurus docs website diff --git a/README.md b/README.md index bde7100561..87e5f2068b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Telescope +# Telescope [![js-airbnb/prettier-style](https://img.shields.io/badge/code%20style-airbnb%2Fprettier-blue)](https://github.com/airbnb/javascript) [![renovatebot - enabled](https://img.shields.io/badge/renovatebot-enabled-2ea44f?logo=renovatebot)](https://renovatebot.com) diff --git a/docker/development.yml b/docker/development.yml index 9cb1a79cd5..5deec5b4c7 100644 --- a/docker/development.yml +++ b/docker/development.yml @@ -13,7 +13,7 @@ services: # API Gateway nginx: build: - context: ../src/web + context: ../src/web/app cache_from: - docker.cdot.systems/nginx:buildcache # next.js needs build-time access to a number of API URL values, forward as ARGs diff --git a/jest.config.js b/jest.config.js index aff86c648e..e037525c15 100644 --- a/jest.config.js +++ b/jest.config.js @@ -4,7 +4,7 @@ module.exports = { ...baseConfig, projects: [ // Our front-end - '/src/web/jest.config.js', + '/src/web/app/jest.config.js', // Our legacy backend tests, slowly being migrated to microservices '/test/jest.config.js', // Satellite diff --git a/package.json b/package.json index 5463bb2c80..20e9c1cbf1 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ }, "scripts": { "build": "pnpm turbo run build", - "dev": "pnpm dev --prefix src/web --", + "dev": "pnpm dev --prefix src/web/app --", "develop": "pnpm dev", "eslint": "TIMING=1 eslint --config .eslintrc.js --ignore-path .gitignore \"./src/backend/**/*.js\" \"./test/**/*.js\"", "eslint-fix": "eslint --config .eslintrc.js --ignore-path .gitignore \"./src/backend/**/*.js\" \"./test/**/*.js\" --fix", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a189ecec91..3a79c68215 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -242,7 +242,6 @@ importers: normalize-url: 6.1.0 rss-parser: 3.12.0 sanitize-html: 2.5.3 - set-interval-async: 2.0.3 devDependencies: '@senecacdot/eslint-config-telescope': 1.1.0_eslint@7.32.0 babel-jest: 27.5.1_@babel+core@7.17.8 @@ -481,7 +480,7 @@ importers: nock: 13.2.4 pretty-quick: 3.1.3_prettier@2.5.1 - src/web: + src/web/app: specifiers: '@emotion/react': 11.8.2 '@emotion/styled': 11.8.1 @@ -794,7 +793,7 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.4 - /@apideck/better-ajv-errors/0.3.2_ajv@8.10.0: + /@apideck/better-ajv-errors/0.3.2_ajv@8.9.0: resolution: {integrity: sha512-JdEazx7qiVqTBzzBl5rolRwl5cmhihjfIcpqRzIZjtT6b18liVmDn/VlWpqW4C/qP2hrFFMLRV1wlex8ZVBPTg==} engines: {node: '>=10'} peerDependencies: @@ -821,7 +820,6 @@ packages: /@babel/compat-data/7.16.8: resolution: {integrity: sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==} engines: {node: '>=6.9.0'} - dev: false /@babel/compat-data/7.17.7: resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} @@ -866,13 +864,12 @@ packages: '@babel/traverse': 7.17.3 '@babel/types': 7.17.0 convert-source-map: 1.8.0 - debug: 4.3.4 + debug: 4.3.3 gensync: 1.0.0-beta.2 json5: 2.2.0 semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false /@babel/core/7.17.8: resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==} @@ -903,7 +900,6 @@ packages: '@babel/types': 7.17.0 jsesc: 2.5.2 source-map: 0.5.7 - dev: false /@babel/generator/7.17.7: resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} @@ -932,12 +928,23 @@ packages: peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.16.8 + '@babel/compat-data': 7.17.7 '@babel/core': 7.17.5 '@babel/helper-validator-option': 7.16.7 browserslist: 4.19.1 semver: 6.3.0 - dev: false + + /@babel/helper-compilation-targets/7.16.7_@babel+core@7.17.8: + resolution: {integrity: sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.17.7 + '@babel/core': 7.17.8 + '@babel/helper-validator-option': 7.16.7 + browserslist: 4.19.1 + semver: 6.3.0 /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.5: resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} @@ -948,7 +955,7 @@ packages: '@babel/compat-data': 7.17.7 '@babel/core': 7.17.5 '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.2 + browserslist: 4.19.1 semver: 6.3.0 dev: false @@ -964,8 +971,8 @@ packages: browserslist: 4.19.1 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.17.5: - resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} + /@babel/helper-create-class-features-plugin/7.16.10_@babel+core@7.17.5: + resolution: {integrity: sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -974,7 +981,7 @@ packages: '@babel/helper-annotate-as-pure': 7.16.7 '@babel/helper-environment-visitor': 7.16.7 '@babel/helper-function-name': 7.16.7 - '@babel/helper-member-expression-to-functions': 7.17.7 + '@babel/helper-member-expression-to-functions': 7.16.7 '@babel/helper-optimise-call-expression': 7.16.7 '@babel/helper-replace-supers': 7.16.7 '@babel/helper-split-export-declaration': 7.16.7 @@ -982,8 +989,8 @@ packages: - supports-color dev: false - /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.17.8: - resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} + /@babel/helper-create-class-features-plugin/7.16.10_@babel+core@7.17.8: + resolution: {integrity: sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -999,19 +1006,19 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.17.5: - resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} + /@babel/helper-create-regexp-features-plugin/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.17.5 '@babel/helper-annotate-as-pure': 7.16.7 - regexpu-core: 5.0.1 + regexpu-core: 4.8.0 dev: false - /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.17.8: - resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} + /@babel/helper-create-regexp-features-plugin/7.16.7_@babel+core@7.17.8: + resolution: {integrity: sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1038,24 +1045,6 @@ packages: - supports-color dev: false - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.17.5: - resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.17.5 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.5 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.16.7 - '@babel/traverse': 7.17.3 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.17.8: resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} peerDependencies: @@ -1131,7 +1120,6 @@ packages: '@babel/types': 7.17.0 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-module-transforms/7.17.7: resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} @@ -1189,7 +1177,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 - dev: false /@babel/helper-simple-access/7.17.7: resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} @@ -1237,7 +1224,6 @@ packages: '@babel/types': 7.17.0 transitivePeerDependencies: - supports-color - dev: false /@babel/helpers/7.17.8: resolution: {integrity: sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==} @@ -1261,7 +1247,6 @@ packages: resolution: {integrity: sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==} engines: {node: '>=6.0.0'} hasBin: true - dev: false /@babel/parser/7.17.8: resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==} @@ -1344,7 +1329,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.5 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-create-class-features-plugin': 7.16.10_@babel+core@7.17.5 '@babel/helper-plugin-utils': 7.16.7 transitivePeerDependencies: - supports-color @@ -1362,22 +1347,22 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.17.5: - resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} + /@babel/plugin-proposal-class-static-block/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.17.5 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-create-class-features-plugin': 7.16.10_@babel+core@7.17.5 '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.5 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.17.8: - resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} + /@babel/plugin-proposal-class-static-block/7.16.7_@babel+core@7.17.8: + resolution: {integrity: sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 @@ -1540,8 +1525,8 @@ packages: '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.12.9 dev: false - /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.17.5: - resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} + /@babel/plugin-proposal-object-rest-spread/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1554,8 +1539,8 @@ packages: '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.5 dev: false - /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.17.8: - resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} + /@babel/plugin-proposal-object-rest-spread/7.16.7_@babel+core@7.17.8: + resolution: {integrity: sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1618,7 +1603,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.5 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-create-class-features-plugin': 7.16.10_@babel+core@7.17.5 '@babel/helper-plugin-utils': 7.16.7 transitivePeerDependencies: - supports-color @@ -1644,7 +1629,7 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-create-class-features-plugin': 7.16.10_@babel+core@7.17.5 '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.17.5 transitivePeerDependencies: @@ -1672,7 +1657,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.5 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.5 + '@babel/helper-create-regexp-features-plugin': 7.16.7_@babel+core@7.17.5 '@babel/helper-plugin-utils': 7.16.7 dev: false @@ -1694,15 +1679,6 @@ packages: '@babel/core': 7.17.5 '@babel/helper-plugin-utils': 7.16.7 - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.5: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.5 - '@babel/helper-plugin-utils': 7.16.7 - dev: false - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.8: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -1735,7 +1711,6 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.17.8: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -1832,7 +1807,6 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -1877,7 +1851,6 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.17.8: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -1894,7 +1867,6 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -1911,7 +1883,6 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.8: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -1937,7 +1908,6 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -1954,7 +1924,6 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -1971,7 +1940,6 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -2008,7 +1976,6 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.8: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -2179,8 +2146,8 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.16.7 - /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.17.5: - resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} + /@babel/plugin-transform-destructuring/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2189,8 +2156,8 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: false - /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.17.8: - resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} + /@babel/plugin-transform-destructuring/7.16.7_@babel+core@7.17.8: + resolution: {integrity: sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2205,7 +2172,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.5 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.5 + '@babel/helper-create-regexp-features-plugin': 7.16.7_@babel+core@7.17.5 '@babel/helper-plugin-utils': 7.16.7 dev: false @@ -2366,8 +2333,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.17.5: - resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} + /@babel/plugin-transform-modules-commonjs/7.16.8_@babel+core@7.17.5: + resolution: {integrity: sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2381,8 +2348,8 @@ packages: - supports-color dev: false - /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.17.8: - resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} + /@babel/plugin-transform-modules-commonjs/7.16.8_@babel+core@7.17.8: + resolution: {integrity: sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2395,8 +2362,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.17.5: - resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} + /@babel/plugin-transform-modules-systemjs/7.16.7_@babel+core@7.17.5: + resolution: {integrity: sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2411,8 +2378,8 @@ packages: - supports-color dev: false - /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.17.8: - resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} + /@babel/plugin-transform-modules-systemjs/7.16.7_@babel+core@7.17.8: + resolution: {integrity: sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2458,7 +2425,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.17.5 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.5 + '@babel/helper-create-regexp-features-plugin': 7.16.7_@babel+core@7.17.5 dev: false /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.17.8: @@ -2480,16 +2447,6 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: false - /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.17.5: - resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.5 - '@babel/helper-plugin-utils': 7.16.7 - dev: false - /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} engines: {node: '>=6.9.0'} @@ -2609,7 +2566,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.5 - '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.5 + '@babel/plugin-transform-react-jsx': 7.16.7_@babel+core@7.17.5 dev: false /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.17.8: @@ -2619,23 +2576,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.8 + '@babel/plugin-transform-react-jsx': 7.16.7_@babel+core@7.17.8 dev: true - /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.17.5: - resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.5 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.16.7 - '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.5 - '@babel/types': 7.17.0 - dev: false - /@babel/plugin-transform-react-jsx/7.16.7_@babel+core@7.17.5: resolution: {integrity: sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==} engines: {node: '>=6.9.0'} @@ -2734,7 +2677,7 @@ packages: '@babel/helper-module-imports': 7.16.7 '@babel/helper-plugin-utils': 7.16.7 babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.17.5 - babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.17.5 + babel-plugin-polyfill-corejs3: 0.5.1_@babel+core@7.17.5 babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.17.5 semver: 6.3.0 transitivePeerDependencies: @@ -2862,7 +2805,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.5 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.5 + '@babel/helper-create-class-features-plugin': 7.16.10_@babel+core@7.17.5 '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.5 transitivePeerDependencies: @@ -2909,7 +2852,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.5 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.5 + '@babel/helper-create-regexp-features-plugin': 7.16.7_@babel+core@7.17.5 '@babel/helper-plugin-utils': 7.16.7 dev: false @@ -2929,23 +2872,23 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.16.8 '@babel/core': 7.17.5 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.5 + '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.17.5 '@babel/helper-plugin-utils': 7.16.7 '@babel/helper-validator-option': 7.16.7 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.17.5 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.17.5 '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.17.5 '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.5 - '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.17.5 + '@babel/plugin-proposal-class-static-block': 7.16.7_@babel+core@7.17.5 '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.17.5 '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.17.5 '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.17.5 '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.17.5 '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.5 '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.17.5 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.17.5 + '@babel/plugin-proposal-object-rest-spread': 7.16.7_@babel+core@7.17.5 '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.17.5 '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.5 '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.17.5 @@ -2971,7 +2914,7 @@ packages: '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.17.5 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.17.5 + '@babel/plugin-transform-destructuring': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.17.5 @@ -2980,8 +2923,8 @@ packages: '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.17.5 - '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.17.5 - '@babel/plugin-transform-modules-systemjs': 7.17.8_@babel+core@7.17.5 + '@babel/plugin-transform-modules-commonjs': 7.16.8_@babel+core@7.17.5 + '@babel/plugin-transform-modules-systemjs': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.17.5 '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.17.5 @@ -3000,9 +2943,9 @@ packages: '@babel/preset-modules': 0.1.5_@babel+core@7.17.5 '@babel/types': 7.17.0 babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.17.5 - babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.17.5 + babel-plugin-polyfill-corejs3: 0.5.1_@babel+core@7.17.5 babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.17.5 - core-js-compat: 3.21.1 + core-js-compat: 3.20.3 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -3127,7 +3070,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 '@babel/helper-validator-option': 7.16.7 '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.17.5 - '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.5 + '@babel/plugin-transform-react-jsx': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-react-jsx-development': 7.16.7_@babel+core@7.17.5 '@babel/plugin-transform-react-pure-annotations': 7.16.7_@babel+core@7.17.5 dev: false @@ -3175,22 +3118,24 @@ packages: - supports-color dev: true - /@babel/runtime-corejs3/7.17.2: - resolution: {integrity: sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg==} + /@babel/runtime-corejs3/7.16.8: + resolution: {integrity: sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg==} engines: {node: '>=6.9.0'} dependencies: core-js-pure: 3.20.3 regenerator-runtime: 0.13.9 + dev: true - /@babel/runtime/7.16.7: - resolution: {integrity: sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==} + /@babel/runtime-corejs3/7.17.2: + resolution: {integrity: sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg==} engines: {node: '>=6.9.0'} dependencies: + core-js-pure: 3.20.3 regenerator-runtime: 0.13.9 dev: false - /@babel/runtime/7.17.2: - resolution: {integrity: sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==} + /@babel/runtime/7.16.7: + resolution: {integrity: sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.9 @@ -3844,7 +3789,7 @@ packages: '@docusaurus/utils': 2.0.0-beta.17 '@docusaurus/utils-validation': 2.0.0-beta.17 algoliasearch: 4.12.1 - algoliasearch-helper: 3.7.0_algoliasearch@4.12.1 + algoliasearch-helper: 3.7.3_algoliasearch@4.12.1 clsx: 1.1.1 eta: 1.12.3 fs-extra: 10.0.1 @@ -4559,7 +4504,7 @@ packages: '@babel/runtime': 7.17.2 '@emotion/is-prop-valid': 1.1.2 '@mui/utils': 5.4.4_react@17.0.2 - '@popperjs/core': 2.11.3 + '@popperjs/core': 2.11.4 '@types/react': 17.0.41 clsx: 1.1.1 prop-types: 15.8.1 @@ -5066,10 +5011,6 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: false - /@popperjs/core/2.11.3: - resolution: {integrity: sha512-8U7hIl7+30XbIrJ0deQMXpXESM1L4yrt6BHok5hzcR0LivivuNkk+tHU1iRVScOwCmQcrOr6kvtIr29MNbQHqQ==} - dev: false - /@popperjs/core/2.11.4: resolution: {integrity: sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg==} dev: false @@ -5667,10 +5608,6 @@ packages: /@types/node/17.0.12: resolution: {integrity: sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA==} - dev: false - - /@types/node/17.0.21: - resolution: {integrity: sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==} /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -5981,8 +5918,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.15.0 - '@typescript-eslint/visitor-keys': 5.15.0 + '@typescript-eslint/types': 5.12.0 + '@typescript-eslint/visitor-keys': 5.12.0 debug: 4.3.3 globby: 11.1.0 is-glob: 4.0.3 @@ -6000,9 +5937,9 @@ packages: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.9 - '@typescript-eslint/scope-manager': 5.15.0 - '@typescript-eslint/types': 5.15.0 - '@typescript-eslint/typescript-estree': 5.15.0_typescript@4.4.4 + '@typescript-eslint/scope-manager': 5.12.0 + '@typescript-eslint/types': 5.12.0 + '@typescript-eslint/typescript-estree': 5.12.0_typescript@4.4.4 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@7.32.0 @@ -6339,7 +6276,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.3 transitivePeerDependencies: - supports-color @@ -6391,17 +6328,9 @@ packages: require-from-string: 2.0.2 uri-js: 4.4.1 - /ajv/8.9.0: - resolution: {integrity: sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: false - - /algoliasearch-helper/3.7.0_algoliasearch@4.12.1: - resolution: {integrity: sha512-XJ3QfERBLfeVCyTVx80gon7r3/rgm/CE8Ha1H7cbablRe/X7SfYQ14g/eO+MhjVKIQp+gy9oC6G5ilmLwS1k6w==} + /algoliasearch-helper/3.7.3_algoliasearch@4.12.1: + resolution: {integrity: sha512-ra+SYf+R9bFdnBVMDYxjzdX246k4LtaeTPxww9EodnQcOSKn35TOb1/LOj1nIPZla/LjDr7wczVFqeH85O9kpg==} + deprecated: 3.7.3 peerDependencies: algoliasearch: '>= 3.1 < 5' dependencies: @@ -6564,8 +6493,8 @@ packages: resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} engines: {node: '>=6.0'} dependencies: - '@babel/runtime': 7.17.2 - '@babel/runtime-corejs3': 7.17.2 + '@babel/runtime': 7.16.7 + '@babel/runtime-corejs3': 7.16.8 dev: true /aria-query/5.0.0: @@ -6736,7 +6665,7 @@ packages: /axios/0.21.4_debug@4.3.3: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.14.7_debug@4.3.3 + follow-redirects: 1.14.7 transitivePeerDependencies: - debug dev: false @@ -6744,7 +6673,7 @@ packages: /axios/0.25.0: resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} dependencies: - follow-redirects: 1.14.7_debug@4.3.3 + follow-redirects: 1.14.7 transitivePeerDependencies: - debug dev: false @@ -6900,20 +6829,20 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.17.5: - resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} + /babel-plugin-polyfill-corejs3/0.5.1_@babel+core@7.17.5: + resolution: {integrity: sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.5 '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.5 - core-js-compat: 3.21.1 + core-js-compat: 3.20.3 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.17.8: - resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} + /babel-plugin-polyfill-corejs3/0.5.1_@babel+core@7.17.8: + resolution: {integrity: sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -7186,17 +7115,6 @@ packages: node-releases: 2.0.1 picocolors: 1.0.0 - /browserslist/4.20.2: - resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001301 - electron-to-chromium: 1.4.53 - escalade: 3.1.1 - node-releases: 2.0.1 - picocolors: 1.0.0 - /bs-logger/0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -7383,14 +7301,6 @@ packages: /caniuse-lite/1.0.30001301: resolution: {integrity: sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA==} - /caniuse-lite/1.0.30001317: - resolution: {integrity: sha512-xIZLh8gBm4dqNX0gkzrBeyI86J2eCjWzYAs40q88smG844YIrN4tVQl/RhquHvKEKImWWFIVh1Lxe5n1G/N+GQ==} - - /capture-stack-trace/1.0.1: - resolution: {integrity: sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==} - engines: {node: '>=0.10.0'} - dev: false - /ccount/1.1.0: resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} dev: false @@ -8732,17 +8642,6 @@ packages: dependencies: ms: 2.1.2 - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - /debuglog/1.0.1: resolution: {integrity: sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=} dev: false @@ -9180,9 +9079,6 @@ packages: /electron-to-chromium/1.4.53: resolution: {integrity: sha512-rFveSKQczlcav+H3zkKqykU6ANseFwXwkl855jOIap5/0gnEcuIhv2ecz6aoTrXavF6I/CEBeRnBnkB51k06ew==} - /electron-to-chromium/1.4.88: - resolution: {integrity: sha512-oA7mzccefkvTNi9u7DXmT0LqvhnOiN2BhSrKerta7HeUC1cLoIwtbf2wL+Ah2ozh5KQd3/1njrGrwDBXx6d14Q==} - /emitter-listener/1.1.2: resolution: {integrity: sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==} dependencies: @@ -9718,7 +9614,7 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.17.2 + '@babel/runtime': 7.16.7 aria-query: 4.2.2 array-includes: 3.1.4 ast-types-flow: 0.0.7 @@ -10501,29 +10397,6 @@ packages: peerDependenciesMeta: debug: optional: true - dev: true - - /follow-redirects/1.14.7_debug@4.3.3: - resolution: {integrity: sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.3 - dev: false - - /follow-redirects/1.14.9: - resolution: {integrity: sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -10585,7 +10458,7 @@ packages: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 - mime-types: 2.1.35 + mime-types: 2.1.34 dev: false /formidable/1.2.6: @@ -11333,7 +11206,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.3 transitivePeerDependencies: - supports-color dev: false @@ -11399,7 +11272,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.3 transitivePeerDependencies: - supports-color @@ -12576,7 +12449,7 @@ packages: resolution: {integrity: sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 17.0.21 + '@types/node': 17.0.12 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12617,7 +12490,6 @@ packages: '@sideway/address': 4.1.3 '@sideway/formula': 3.0.0 '@sideway/pinpoint': 2.0.0 - dev: false /joi/17.6.0: resolution: {integrity: sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==} @@ -13411,10 +13283,6 @@ packages: resolution: {integrity: sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==} engines: {node: '>= 0.6'} - /mime-db/1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - /mime-types/2.1.18: resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} engines: {node: '>= 0.6'} @@ -13428,12 +13296,6 @@ packages: dependencies: mime-db: 1.51.0 - /mime-types/2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.51.0 - /mime/1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -13814,9 +13676,6 @@ packages: /node-releases/2.0.1: resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} - /node-releases/2.0.2: - resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==} - /nodemon/2.0.15: resolution: {integrity: sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==} engines: {node: '>=8.10.0'} @@ -15267,20 +15126,11 @@ packages: postcss: 8.4.8 dev: false - /postcss/8.4.12: - resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.1 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: false - /postcss/8.4.5: resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.2.0 + nanoid: 3.3.1 picocolors: 1.0.0 source-map-js: 1.0.2 dev: false @@ -16835,10 +16685,6 @@ packages: /signal-exit/3.0.6: resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} - dev: false - - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} /simple-concat/1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} @@ -16919,7 +16765,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.3 socks: 2.6.1 transitivePeerDependencies: - supports-color @@ -16942,15 +16788,6 @@ packages: dependencies: ip: 1.1.5 smart-buffer: 4.2.0 - dev: false - - /socks/2.6.2: - resolution: {integrity: sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - dependencies: - ip: 1.1.5 - smart-buffer: 4.2.0 - dev: true /sonic-boom/2.6.0: resolution: {integrity: sha512-6xYZFRmDEtxGqfOKcDQ4cPLrNa0SPEDI+wlzDAHowXE6YV42NeXqg9mP2KkiM8JVu3lHfZ2iQKYlGOz+kTpphg==} @@ -18385,7 +18222,7 @@ packages: call-bind: 1.0.2 define-properties: 1.1.3 for-each: 0.3.3 - has-symbols: 1.0.3 + has-symbols: 1.0.2 object.getownpropertydescriptors: 2.1.3 dev: false @@ -18971,10 +18808,10 @@ packages: resolution: {integrity: sha512-coDUDzHvFZ1ADOl3wKCsCSyOBvkPKlPgcQDb6LMMShN1zgF31Mev/1HzN3+9T2cjjWAgFwZKkuRyExqc1v21Zw==} engines: {node: '>=10.0.0'} dependencies: - '@apideck/better-ajv-errors': 0.3.2_ajv@8.10.0 + '@apideck/better-ajv-errors': 0.3.2_ajv@8.9.0 '@babel/core': 7.17.8 '@babel/preset-env': 7.16.11_@babel+core@7.17.8 - '@babel/runtime': 7.17.8 + '@babel/runtime': 7.17.2 '@rollup/plugin-babel': 5.3.0_@babel+core@7.17.8+rollup@2.64.0 '@rollup/plugin-node-resolve': 11.2.1_rollup@2.64.0 '@rollup/plugin-replace': 2.4.2_rollup@2.64.0 @@ -19180,20 +19017,6 @@ packages: optional: true utf-8-validate: optional: true - dev: false - - /ws/7.5.7: - resolution: {integrity: sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true /ws/8.4.2: resolution: {integrity: sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==} @@ -19207,19 +19030,6 @@ packages: utf-8-validate: optional: true - /ws/8.5.0: - resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - /xdg-basedir/4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} engines: {node: '>=8'} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d707517f47..3171191b88 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,7 +3,7 @@ packages: # docusaurus web app - 'src/docs' # web front-end - - 'src/web' + - 'src/web/app' # microservices - 'src/api/*' # satellite diff --git a/src/docs/docs/architecture.md b/src/docs/docs/architecture.md index eec27439f8..8a78ece4ff 100644 --- a/src/docs/docs/architecture.md +++ b/src/docs/docs/architecture.md @@ -70,11 +70,11 @@ On Windows and macOS, Docker Desktop must be running before you can call these s ### Front-end Web App -The front-end web app is written in TypeScript and uses next.js and Material UI for routing, component system, etc. The code lives in `src/web`. +The front-end web app is written in TypeScript and uses next.js and Material UI for routing, component system, etc. The code lives in `src/web/app`. -The web app accesses many of the microservices at runtime, and we depend on a build step to export and include the necessary runtime variables. In the front-end app, they are available at runtime via `src/web/src/config.ts`. These are populated via the `src/web/next.config.js` during build time. See [Environment Setup](../docs/getting-started/environment-setup.md) for details on how to populate these with different values for local, CI, staging, or production environments. See also [Front End](../docs/tools-and-technologies/nextjs.md) for more details about the front-end. +The web app accesses many of the microservices at runtime, and we depend on a build step to export and include the necessary runtime variables. In the front-end app, they are available at runtime via `src/web/app/src/config.ts`. These are populated via the `src/web/app/next.config.js` during build time. See [Environment Setup](../docs/getting-started/environment-setup.md) for details on how to populate these with different values for local, CI, staging, or production environments. See also [Front End](../docs/tools-and-technologies/nextjs.md) for more details about the front-end. -The front-end is run via its own container, and hosted statically by nginx. The container is defined in `src/web/Dockerfile`. Locally, it is available at , on staging at , and on production at . +The front-end is run via its own container, and hosted statically by nginx. The container is defined in `src/web/app/Dockerfile`. Locally, it is available at , on staging at , and on production at . ### SAML2-based authentication and authorization diff --git a/src/docs/docs/tools-and-technologies/nextjs.md b/src/docs/docs/tools-and-technologies/nextjs.md index 4834fa763e..3edc1ebc95 100644 --- a/src/docs/docs/tools-and-technologies/nextjs.md +++ b/src/docs/docs/tools-and-technologies/nextjs.md @@ -121,7 +121,7 @@ Here is the colour palette that we use to make our web site looks pretty and up- # Theming Palette -Here is how we construct our Theme with MUI ([frontend/src/web/src/theme/index.ts](https://github.com/Seneca-CDOT/telescope/blob/master/src/web/src/theme/index.ts)) +Here is how we construct our Theme with MUI ([frontend/src/web/app/src/theme/index.ts](https://github.com/Seneca-CDOT/telescope/blob/master/src/web/app/src/theme/index.ts)) ```ts export const lightTheme: Theme = createMuiTheme({ diff --git a/src/web/.dockerignore b/src/web/app/.dockerignore similarity index 100% rename from src/web/.dockerignore rename to src/web/app/.dockerignore diff --git a/src/web/.eslintrc.js b/src/web/app/.eslintrc.js similarity index 100% rename from src/web/.eslintrc.js rename to src/web/app/.eslintrc.js diff --git a/src/web/.gitignore b/src/web/app/.gitignore similarity index 100% rename from src/web/.gitignore rename to src/web/app/.gitignore diff --git a/src/web/Dockerfile b/src/web/app/Dockerfile similarity index 100% rename from src/web/Dockerfile rename to src/web/app/Dockerfile diff --git a/src/web/README.md b/src/web/app/README.md similarity index 100% rename from src/web/README.md rename to src/web/app/README.md diff --git a/src/web/jest.config.js b/src/web/app/jest.config.js similarity index 64% rename from src/web/jest.config.js rename to src/web/app/jest.config.js index 1adc25e30b..be42754515 100644 --- a/src/web/jest.config.js +++ b/src/web/app/jest.config.js @@ -1,6 +1,6 @@ const nextJest = require('next/jest'); -const baseConfig = require('../../jest.config.base'); +const baseConfig = require('../../../jest.config.base'); // Providing the path to your Next.js app which will enable loading next.config.js and .env files const createJestConfig = nextJest({ dir: '.' }); @@ -9,9 +9,9 @@ module.exports = createJestConfig({ ...baseConfig, preset: 'ts-jest', testEnvironment: 'jsdom', - rootDir: '../..', - testMatch: ['/src/web/src/**/*.test.{ts,tsx}'], - testPathIgnorePatterns: ['/src/web/.next', '/src/web/out'], + rootDir: '../../..', + testMatch: ['/src/web/app/src/**/*.test.{ts,tsx}'], + testPathIgnorePatterns: ['/src/web/app/.next', '/src/web/app/out'], collectCoverageFrom: ['/src/**/*{ts,tsx}'], transform: { '^.+\\.(ts)$': 'ts-jest', @@ -19,7 +19,7 @@ module.exports = createJestConfig({ }, globals: { 'ts-jest': { - tsconfig: '/src/web/tsconfig.jest.json', + tsconfig: '/src/web/app/tsconfig.jest.json', }, }, }); diff --git a/src/web/next-env.d.ts b/src/web/app/next-env.d.ts similarity index 100% rename from src/web/next-env.d.ts rename to src/web/app/next-env.d.ts diff --git a/src/web/next.config.js b/src/web/app/next.config.js similarity index 94% rename from src/web/next.config.js rename to src/web/app/next.config.js index 15c004c0bd..a6bba71c16 100644 --- a/src/web/next.config.js +++ b/src/web/app/next.config.js @@ -38,12 +38,12 @@ const forwardToNext = (envVar) => { }; // Try using .env in the root (legacy Telescope 1.0) -const legacyEnvPath = path.join(__dirname, '../..', '.env'); +const legacyEnvPath = path.join(__dirname, '../../..', '.env'); console.info(`Trying to load missing ENV variables from ${legacyEnvPath}`); loadApiUrlFromEnv(legacyEnvPath); // Try using the env.development file in config/ (Telescope 2.0) -const envDevelopmentPath = path.join(__dirname, '../..', 'config/env.development'); +const envDevelopmentPath = path.join(__dirname, '../../..', 'config/env.development'); console.info(`Trying to load missing ENV variables from ${envDevelopmentPath}`); loadApiUrlFromEnv(envDevelopmentPath); diff --git a/src/web/package.json b/src/web/app/package.json similarity index 100% rename from src/web/package.json rename to src/web/app/package.json diff --git a/src/web/public/googlee1d86717a49db532.html b/src/web/app/public/googlee1d86717a49db532.html similarity index 100% rename from src/web/public/googlee1d86717a49db532.html rename to src/web/app/public/googlee1d86717a49db532.html diff --git a/src/web/public/logo-badged.svg b/src/web/app/public/logo-badged.svg similarity index 100% rename from src/web/public/logo-badged.svg rename to src/web/app/public/logo-badged.svg diff --git a/src/web/public/logo.svg b/src/web/app/public/logo.svg similarity index 100% rename from src/web/public/logo.svg rename to src/web/app/public/logo.svg diff --git a/src/web/public/logoImages/apple-icon-180.png b/src/web/app/public/logoImages/apple-icon-180.png similarity index 100% rename from src/web/public/logoImages/apple-icon-180.png rename to src/web/app/public/logoImages/apple-icon-180.png diff --git a/src/web/public/logoImages/apple-splash-1125-2436.jpg b/src/web/app/public/logoImages/apple-splash-1125-2436.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1125-2436.jpg rename to src/web/app/public/logoImages/apple-splash-1125-2436.jpg diff --git a/src/web/public/logoImages/apple-splash-1136-640.jpg b/src/web/app/public/logoImages/apple-splash-1136-640.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1136-640.jpg rename to src/web/app/public/logoImages/apple-splash-1136-640.jpg diff --git a/src/web/public/logoImages/apple-splash-1170-2532.jpg b/src/web/app/public/logoImages/apple-splash-1170-2532.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1170-2532.jpg rename to src/web/app/public/logoImages/apple-splash-1170-2532.jpg diff --git a/src/web/public/logoImages/apple-splash-1242-2208.jpg b/src/web/app/public/logoImages/apple-splash-1242-2208.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1242-2208.jpg rename to src/web/app/public/logoImages/apple-splash-1242-2208.jpg diff --git a/src/web/public/logoImages/apple-splash-1242-2688.jpg b/src/web/app/public/logoImages/apple-splash-1242-2688.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1242-2688.jpg rename to src/web/app/public/logoImages/apple-splash-1242-2688.jpg diff --git a/src/web/public/logoImages/apple-splash-1284-2778.jpg b/src/web/app/public/logoImages/apple-splash-1284-2778.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1284-2778.jpg rename to src/web/app/public/logoImages/apple-splash-1284-2778.jpg diff --git a/src/web/public/logoImages/apple-splash-1334-750.jpg b/src/web/app/public/logoImages/apple-splash-1334-750.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1334-750.jpg rename to src/web/app/public/logoImages/apple-splash-1334-750.jpg diff --git a/src/web/public/logoImages/apple-splash-1536-2048.jpg b/src/web/app/public/logoImages/apple-splash-1536-2048.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1536-2048.jpg rename to src/web/app/public/logoImages/apple-splash-1536-2048.jpg diff --git a/src/web/public/logoImages/apple-splash-1620-2160.jpg b/src/web/app/public/logoImages/apple-splash-1620-2160.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1620-2160.jpg rename to src/web/app/public/logoImages/apple-splash-1620-2160.jpg diff --git a/src/web/public/logoImages/apple-splash-1668-2224.jpg b/src/web/app/public/logoImages/apple-splash-1668-2224.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1668-2224.jpg rename to src/web/app/public/logoImages/apple-splash-1668-2224.jpg diff --git a/src/web/public/logoImages/apple-splash-1668-2388.jpg b/src/web/app/public/logoImages/apple-splash-1668-2388.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1668-2388.jpg rename to src/web/app/public/logoImages/apple-splash-1668-2388.jpg diff --git a/src/web/public/logoImages/apple-splash-1792-828.jpg b/src/web/app/public/logoImages/apple-splash-1792-828.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-1792-828.jpg rename to src/web/app/public/logoImages/apple-splash-1792-828.jpg diff --git a/src/web/public/logoImages/apple-splash-2048-1536.jpg b/src/web/app/public/logoImages/apple-splash-2048-1536.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2048-1536.jpg rename to src/web/app/public/logoImages/apple-splash-2048-1536.jpg diff --git a/src/web/public/logoImages/apple-splash-2048-2732.jpg b/src/web/app/public/logoImages/apple-splash-2048-2732.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2048-2732.jpg rename to src/web/app/public/logoImages/apple-splash-2048-2732.jpg diff --git a/src/web/public/logoImages/apple-splash-2160-1620.jpg b/src/web/app/public/logoImages/apple-splash-2160-1620.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2160-1620.jpg rename to src/web/app/public/logoImages/apple-splash-2160-1620.jpg diff --git a/src/web/public/logoImages/apple-splash-2208-1242.jpg b/src/web/app/public/logoImages/apple-splash-2208-1242.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2208-1242.jpg rename to src/web/app/public/logoImages/apple-splash-2208-1242.jpg diff --git a/src/web/public/logoImages/apple-splash-2224-1668.jpg b/src/web/app/public/logoImages/apple-splash-2224-1668.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2224-1668.jpg rename to src/web/app/public/logoImages/apple-splash-2224-1668.jpg diff --git a/src/web/public/logoImages/apple-splash-2388-1668.jpg b/src/web/app/public/logoImages/apple-splash-2388-1668.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2388-1668.jpg rename to src/web/app/public/logoImages/apple-splash-2388-1668.jpg diff --git a/src/web/public/logoImages/apple-splash-2436-1125.jpg b/src/web/app/public/logoImages/apple-splash-2436-1125.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2436-1125.jpg rename to src/web/app/public/logoImages/apple-splash-2436-1125.jpg diff --git a/src/web/public/logoImages/apple-splash-2532-1170.jpg b/src/web/app/public/logoImages/apple-splash-2532-1170.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2532-1170.jpg rename to src/web/app/public/logoImages/apple-splash-2532-1170.jpg diff --git a/src/web/public/logoImages/apple-splash-2688-1242.jpg b/src/web/app/public/logoImages/apple-splash-2688-1242.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2688-1242.jpg rename to src/web/app/public/logoImages/apple-splash-2688-1242.jpg diff --git a/src/web/public/logoImages/apple-splash-2732-2048.jpg b/src/web/app/public/logoImages/apple-splash-2732-2048.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2732-2048.jpg rename to src/web/app/public/logoImages/apple-splash-2732-2048.jpg diff --git a/src/web/public/logoImages/apple-splash-2778-1284.jpg b/src/web/app/public/logoImages/apple-splash-2778-1284.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-2778-1284.jpg rename to src/web/app/public/logoImages/apple-splash-2778-1284.jpg diff --git a/src/web/public/logoImages/apple-splash-640-1136.jpg b/src/web/app/public/logoImages/apple-splash-640-1136.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-640-1136.jpg rename to src/web/app/public/logoImages/apple-splash-640-1136.jpg diff --git a/src/web/public/logoImages/apple-splash-750-1334.jpg b/src/web/app/public/logoImages/apple-splash-750-1334.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-750-1334.jpg rename to src/web/app/public/logoImages/apple-splash-750-1334.jpg diff --git a/src/web/public/logoImages/apple-splash-828-1792.jpg b/src/web/app/public/logoImages/apple-splash-828-1792.jpg similarity index 100% rename from src/web/public/logoImages/apple-splash-828-1792.jpg rename to src/web/app/public/logoImages/apple-splash-828-1792.jpg diff --git a/src/web/public/logoImages/manifest-icon-192.png b/src/web/app/public/logoImages/manifest-icon-192.png similarity index 100% rename from src/web/public/logoImages/manifest-icon-192.png rename to src/web/app/public/logoImages/manifest-icon-192.png diff --git a/src/web/public/logoImages/manifest-icon-512.png b/src/web/app/public/logoImages/manifest-icon-512.png similarity index 100% rename from src/web/public/logoImages/manifest-icon-512.png rename to src/web/app/public/logoImages/manifest-icon-512.png diff --git a/src/web/public/manifest.json b/src/web/app/public/manifest.json similarity index 100% rename from src/web/public/manifest.json rename to src/web/app/public/manifest.json diff --git a/src/web/public/noResults.svg b/src/web/app/public/noResults.svg similarity index 100% rename from src/web/public/noResults.svg rename to src/web/app/public/noResults.svg diff --git a/src/web/public/robots.txt b/src/web/app/public/robots.txt similarity index 100% rename from src/web/public/robots.txt rename to src/web/app/public/robots.txt diff --git a/src/web/public/styles/github-dark.min.css b/src/web/app/public/styles/github-dark.min.css similarity index 100% rename from src/web/public/styles/github-dark.min.css rename to src/web/app/public/styles/github-dark.min.css diff --git a/src/web/public/styles/github.min.css b/src/web/app/public/styles/github.min.css similarity index 100% rename from src/web/public/styles/github.min.css rename to src/web/app/public/styles/github.min.css diff --git a/src/web/public/vercel.svg b/src/web/app/public/vercel.svg similarity index 100% rename from src/web/public/vercel.svg rename to src/web/app/public/vercel.svg diff --git a/src/web/src/User.ts b/src/web/app/src/User.ts similarity index 100% rename from src/web/src/User.ts rename to src/web/app/src/User.ts diff --git a/src/web/src/components/AboutFooter.test.tsx b/src/web/app/src/components/AboutFooter.test.tsx similarity index 100% rename from src/web/src/components/AboutFooter.test.tsx rename to src/web/app/src/components/AboutFooter.test.tsx diff --git a/src/web/src/components/AboutFooter.tsx b/src/web/app/src/components/AboutFooter.tsx similarity index 100% rename from src/web/src/components/AboutFooter.tsx rename to src/web/app/src/components/AboutFooter.tsx diff --git a/src/web/src/components/AboutPage.tsx b/src/web/app/src/components/AboutPage.tsx similarity index 100% rename from src/web/src/components/AboutPage.tsx rename to src/web/app/src/components/AboutPage.tsx diff --git a/src/web/src/components/AdminButtons.tsx b/src/web/app/src/components/AdminButtons.tsx similarity index 100% rename from src/web/src/components/AdminButtons.tsx rename to src/web/app/src/components/AdminButtons.tsx diff --git a/src/web/src/components/AuthProvider.tsx b/src/web/app/src/components/AuthProvider.tsx similarity index 100% rename from src/web/src/components/AuthProvider.tsx rename to src/web/app/src/components/AuthProvider.tsx diff --git a/src/web/src/components/Banner.tsx b/src/web/app/src/components/Banner.tsx similarity index 100% rename from src/web/src/components/Banner.tsx rename to src/web/app/src/components/Banner.tsx diff --git a/src/web/src/components/BannerButtons.tsx b/src/web/app/src/components/BannerButtons.tsx similarity index 100% rename from src/web/src/components/BannerButtons.tsx rename to src/web/app/src/components/BannerButtons.tsx diff --git a/src/web/src/components/BannerDynamicItems.tsx b/src/web/app/src/components/BannerDynamicItems.tsx similarity index 100% rename from src/web/src/components/BannerDynamicItems.tsx rename to src/web/app/src/components/BannerDynamicItems.tsx diff --git a/src/web/src/components/DynamicImage.tsx b/src/web/app/src/components/DynamicImage.tsx similarity index 100% rename from src/web/src/components/DynamicImage.tsx rename to src/web/app/src/components/DynamicImage.tsx diff --git a/src/web/src/components/GenericInfoProvider.tsx b/src/web/app/src/components/GenericInfoProvider.tsx similarity index 100% rename from src/web/src/components/GenericInfoProvider.tsx rename to src/web/app/src/components/GenericInfoProvider.tsx diff --git a/src/web/src/components/GitHubContributorCard.tsx b/src/web/app/src/components/GitHubContributorCard.tsx similarity index 100% rename from src/web/src/components/GitHubContributorCard.tsx rename to src/web/app/src/components/GitHubContributorCard.tsx diff --git a/src/web/src/components/GitHubInfo.tsx b/src/web/app/src/components/GitHubInfo.tsx similarity index 100% rename from src/web/src/components/GitHubInfo.tsx rename to src/web/app/src/components/GitHubInfo.tsx diff --git a/src/web/src/components/LanguageSelector.tsx b/src/web/app/src/components/LanguageSelector.tsx similarity index 100% rename from src/web/src/components/LanguageSelector.tsx rename to src/web/app/src/components/LanguageSelector.tsx diff --git a/src/web/src/components/Login/LoggedIn.tsx b/src/web/app/src/components/Login/LoggedIn.tsx similarity index 100% rename from src/web/src/components/Login/LoggedIn.tsx rename to src/web/app/src/components/Login/LoggedIn.tsx diff --git a/src/web/src/components/Login/LoggedOut.tsx b/src/web/app/src/components/Login/LoggedOut.tsx similarity index 100% rename from src/web/src/components/Login/LoggedOut.tsx rename to src/web/app/src/components/Login/LoggedOut.tsx diff --git a/src/web/src/components/Login/index.tsx b/src/web/app/src/components/Login/index.tsx similarity index 100% rename from src/web/src/components/Login/index.tsx rename to src/web/app/src/components/Login/index.tsx diff --git a/src/web/src/components/Logo.test.tsx b/src/web/app/src/components/Logo.test.tsx similarity index 100% rename from src/web/src/components/Logo.test.tsx rename to src/web/app/src/components/Logo.test.tsx diff --git a/src/web/src/components/Logo.tsx b/src/web/app/src/components/Logo.tsx similarity index 100% rename from src/web/src/components/Logo.tsx rename to src/web/app/src/components/Logo.tsx diff --git a/src/web/src/components/NavBar/NavBarButton.tsx b/src/web/app/src/components/NavBar/NavBarButton.tsx similarity index 100% rename from src/web/src/components/NavBar/NavBarButton.tsx rename to src/web/app/src/components/NavBar/NavBarButton.tsx diff --git a/src/web/src/components/NavBar/index.tsx b/src/web/app/src/components/NavBar/index.tsx similarity index 100% rename from src/web/src/components/NavBar/index.tsx rename to src/web/app/src/components/NavBar/index.tsx diff --git a/src/web/src/components/PopUp.tsx b/src/web/app/src/components/PopUp.tsx similarity index 100% rename from src/web/src/components/PopUp.tsx rename to src/web/app/src/components/PopUp.tsx diff --git a/src/web/src/components/Posts/ExpandIcon.tsx b/src/web/app/src/components/Posts/ExpandIcon.tsx similarity index 100% rename from src/web/src/components/Posts/ExpandIcon.tsx rename to src/web/app/src/components/Posts/ExpandIcon.tsx diff --git a/src/web/src/components/Posts/GitHubInfo/Commits.tsx b/src/web/app/src/components/Posts/GitHubInfo/Commits.tsx similarity index 100% rename from src/web/src/components/Posts/GitHubInfo/Commits.tsx rename to src/web/app/src/components/Posts/GitHubInfo/Commits.tsx diff --git a/src/web/src/components/Posts/GitHubInfo/GitHubInfoMobile.tsx b/src/web/app/src/components/Posts/GitHubInfo/GitHubInfoMobile.tsx similarity index 100% rename from src/web/src/components/Posts/GitHubInfo/GitHubInfoMobile.tsx rename to src/web/app/src/components/Posts/GitHubInfo/GitHubInfoMobile.tsx diff --git a/src/web/src/components/Posts/GitHubInfo/Issues.tsx b/src/web/app/src/components/Posts/GitHubInfo/Issues.tsx similarity index 100% rename from src/web/src/components/Posts/GitHubInfo/Issues.tsx rename to src/web/app/src/components/Posts/GitHubInfo/Issues.tsx diff --git a/src/web/src/components/Posts/GitHubInfo/PullRequests.tsx b/src/web/app/src/components/Posts/GitHubInfo/PullRequests.tsx similarity index 100% rename from src/web/src/components/Posts/GitHubInfo/PullRequests.tsx rename to src/web/app/src/components/Posts/GitHubInfo/PullRequests.tsx diff --git a/src/web/src/components/Posts/GitHubInfo/Repos.tsx b/src/web/app/src/components/Posts/GitHubInfo/Repos.tsx similarity index 100% rename from src/web/src/components/Posts/GitHubInfo/Repos.tsx rename to src/web/app/src/components/Posts/GitHubInfo/Repos.tsx diff --git a/src/web/src/components/Posts/GitHubInfo/Users.tsx b/src/web/app/src/components/Posts/GitHubInfo/Users.tsx similarity index 100% rename from src/web/src/components/Posts/GitHubInfo/Users.tsx rename to src/web/app/src/components/Posts/GitHubInfo/Users.tsx diff --git a/src/web/src/components/Posts/GitHubInfo/index.tsx b/src/web/app/src/components/Posts/GitHubInfo/index.tsx similarity index 100% rename from src/web/src/components/Posts/GitHubInfo/index.tsx rename to src/web/app/src/components/Posts/GitHubInfo/index.tsx diff --git a/src/web/src/components/Posts/LoadAutoScroll.tsx b/src/web/app/src/components/Posts/LoadAutoScroll.tsx similarity index 100% rename from src/web/src/components/Posts/LoadAutoScroll.tsx rename to src/web/app/src/components/Posts/LoadAutoScroll.tsx diff --git a/src/web/src/components/Posts/Post.tsx b/src/web/app/src/components/Posts/Post.tsx similarity index 100% rename from src/web/src/components/Posts/Post.tsx rename to src/web/app/src/components/Posts/Post.tsx diff --git a/src/web/src/components/Posts/PostAvatar.tsx b/src/web/app/src/components/Posts/PostAvatar.tsx similarity index 100% rename from src/web/src/components/Posts/PostAvatar.tsx rename to src/web/app/src/components/Posts/PostAvatar.tsx diff --git a/src/web/src/components/Posts/PostInfo.tsx b/src/web/app/src/components/Posts/PostInfo.tsx similarity index 100% rename from src/web/src/components/Posts/PostInfo.tsx rename to src/web/app/src/components/Posts/PostInfo.tsx diff --git a/src/web/src/components/Posts/ShareButton.tsx b/src/web/app/src/components/Posts/ShareButton.tsx similarity index 100% rename from src/web/src/components/Posts/ShareButton.tsx rename to src/web/app/src/components/Posts/ShareButton.tsx diff --git a/src/web/src/components/Posts/Timeline.tsx b/src/web/app/src/components/Posts/Timeline.tsx similarity index 100% rename from src/web/src/components/Posts/Timeline.tsx rename to src/web/app/src/components/Posts/Timeline.tsx diff --git a/src/web/src/components/Posts/index.tsx b/src/web/app/src/components/Posts/index.tsx similarity index 100% rename from src/web/src/components/Posts/index.tsx rename to src/web/app/src/components/Posts/index.tsx diff --git a/src/web/src/components/SEO.tsx b/src/web/app/src/components/SEO.tsx similarity index 100% rename from src/web/src/components/SEO.tsx rename to src/web/app/src/components/SEO.tsx diff --git a/src/web/src/components/ScrollAction.tsx b/src/web/app/src/components/ScrollAction.tsx similarity index 100% rename from src/web/src/components/ScrollAction.tsx rename to src/web/app/src/components/ScrollAction.tsx diff --git a/src/web/src/components/SearchBar.tsx b/src/web/app/src/components/SearchBar.tsx similarity index 100% rename from src/web/src/components/SearchBar.tsx rename to src/web/app/src/components/SearchBar.tsx diff --git a/src/web/src/components/SearchHelp.tsx b/src/web/app/src/components/SearchHelp.tsx similarity index 100% rename from src/web/src/components/SearchHelp.tsx rename to src/web/app/src/components/SearchHelp.tsx diff --git a/src/web/src/components/SearchInput/AuthorSearchInput.tsx b/src/web/app/src/components/SearchInput/AuthorSearchInput.tsx similarity index 100% rename from src/web/src/components/SearchInput/AuthorSearchInput.tsx rename to src/web/app/src/components/SearchInput/AuthorSearchInput.tsx diff --git a/src/web/src/components/SearchInput/PostSearchInput.tsx b/src/web/app/src/components/SearchInput/PostSearchInput.tsx similarity index 100% rename from src/web/src/components/SearchInput/PostSearchInput.tsx rename to src/web/app/src/components/SearchInput/PostSearchInput.tsx diff --git a/src/web/src/components/SearchInput/SearchInput.tsx b/src/web/app/src/components/SearchInput/SearchInput.tsx similarity index 100% rename from src/web/src/components/SearchInput/SearchInput.tsx rename to src/web/app/src/components/SearchInput/SearchInput.tsx diff --git a/src/web/src/components/SearchPage.tsx b/src/web/app/src/components/SearchPage.tsx similarity index 100% rename from src/web/src/components/SearchPage.tsx rename to src/web/app/src/components/SearchPage.tsx diff --git a/src/web/src/components/SearchProvider.tsx b/src/web/app/src/components/SearchProvider.tsx similarity index 100% rename from src/web/src/components/SearchProvider.tsx rename to src/web/app/src/components/SearchProvider.tsx diff --git a/src/web/src/components/SearchResults.tsx b/src/web/app/src/components/SearchResults.tsx similarity index 100% rename from src/web/src/components/SearchResults.tsx rename to src/web/app/src/components/SearchResults.tsx diff --git a/src/web/src/components/SignUp/FormFields/CheckBoxInput.tsx b/src/web/app/src/components/SignUp/FormFields/CheckBoxInput.tsx similarity index 100% rename from src/web/src/components/SignUp/FormFields/CheckBoxInput.tsx rename to src/web/app/src/components/SignUp/FormFields/CheckBoxInput.tsx diff --git a/src/web/src/components/SignUp/FormFields/TextInput.tsx b/src/web/app/src/components/SignUp/FormFields/TextInput.tsx similarity index 100% rename from src/web/src/components/SignUp/FormFields/TextInput.tsx rename to src/web/app/src/components/SignUp/FormFields/TextInput.tsx diff --git a/src/web/src/components/SignUp/FormFields/index.tsx b/src/web/app/src/components/SignUp/FormFields/index.tsx similarity index 100% rename from src/web/src/components/SignUp/FormFields/index.tsx rename to src/web/app/src/components/SignUp/FormFields/index.tsx diff --git a/src/web/src/components/SignUp/Forms/BasicInfo.tsx b/src/web/app/src/components/SignUp/Forms/BasicInfo.tsx similarity index 100% rename from src/web/src/components/SignUp/Forms/BasicInfo.tsx rename to src/web/app/src/components/SignUp/Forms/BasicInfo.tsx diff --git a/src/web/src/components/SignUp/Forms/GitHubAccount.tsx b/src/web/app/src/components/SignUp/Forms/GitHubAccount.tsx similarity index 100% rename from src/web/src/components/SignUp/Forms/GitHubAccount.tsx rename to src/web/app/src/components/SignUp/Forms/GitHubAccount.tsx diff --git a/src/web/src/components/SignUp/Forms/Overview.tsx b/src/web/app/src/components/SignUp/Forms/Overview.tsx similarity index 100% rename from src/web/src/components/SignUp/Forms/Overview.tsx rename to src/web/app/src/components/SignUp/Forms/Overview.tsx diff --git a/src/web/src/components/SignUp/Forms/RSSFeeds.tsx b/src/web/app/src/components/SignUp/Forms/RSSFeeds.tsx similarity index 100% rename from src/web/src/components/SignUp/Forms/RSSFeeds.tsx rename to src/web/app/src/components/SignUp/Forms/RSSFeeds.tsx diff --git a/src/web/src/components/SignUp/Forms/Review.tsx b/src/web/app/src/components/SignUp/Forms/Review.tsx similarity index 100% rename from src/web/src/components/SignUp/Forms/Review.tsx rename to src/web/app/src/components/SignUp/Forms/Review.tsx diff --git a/src/web/src/components/SignUp/Forms/index.tsx b/src/web/app/src/components/SignUp/Forms/index.tsx similarity index 100% rename from src/web/src/components/SignUp/Forms/index.tsx rename to src/web/app/src/components/SignUp/Forms/index.tsx diff --git a/src/web/src/components/SignUp/Schema/FormModel.tsx b/src/web/app/src/components/SignUp/Schema/FormModel.tsx similarity index 100% rename from src/web/src/components/SignUp/Schema/FormModel.tsx rename to src/web/app/src/components/SignUp/Schema/FormModel.tsx diff --git a/src/web/src/components/SignUp/Schema/FormSchema.tsx b/src/web/app/src/components/SignUp/Schema/FormSchema.tsx similarity index 100% rename from src/web/src/components/SignUp/Schema/FormSchema.tsx rename to src/web/app/src/components/SignUp/Schema/FormSchema.tsx diff --git a/src/web/src/components/Spinner.tsx b/src/web/app/src/components/Spinner.tsx similarity index 100% rename from src/web/src/components/Spinner.tsx rename to src/web/app/src/components/Spinner.tsx diff --git a/src/web/src/components/StarField.tsx b/src/web/app/src/components/StarField.tsx similarity index 100% rename from src/web/src/components/StarField.tsx rename to src/web/app/src/components/StarField.tsx diff --git a/src/web/src/components/TelescopeAvatar.tsx b/src/web/app/src/components/TelescopeAvatar.tsx similarity index 100% rename from src/web/src/components/TelescopeAvatar.tsx rename to src/web/app/src/components/TelescopeAvatar.tsx diff --git a/src/web/src/components/ThemeProvider.tsx b/src/web/app/src/components/ThemeProvider.tsx similarity index 100% rename from src/web/src/components/ThemeProvider.tsx rename to src/web/app/src/components/ThemeProvider.tsx diff --git a/src/web/src/components/ThemeToggleButton.tsx b/src/web/app/src/components/ThemeToggleButton.tsx similarity index 100% rename from src/web/src/components/ThemeToggleButton.tsx rename to src/web/app/src/components/ThemeToggleButton.tsx diff --git a/src/web/src/components/__snapshots__/AboutFooter.test.tsx.snap b/src/web/app/src/components/__snapshots__/AboutFooter.test.tsx.snap similarity index 100% rename from src/web/src/components/__snapshots__/AboutFooter.test.tsx.snap rename to src/web/app/src/components/__snapshots__/AboutFooter.test.tsx.snap diff --git a/src/web/src/components/__snapshots__/Logo.test.tsx.snap b/src/web/app/src/components/__snapshots__/Logo.test.tsx.snap similarity index 100% rename from src/web/src/components/__snapshots__/Logo.test.tsx.snap rename to src/web/app/src/components/__snapshots__/Logo.test.tsx.snap diff --git a/src/web/src/config.ts b/src/web/app/src/config.ts similarity index 100% rename from src/web/src/config.ts rename to src/web/app/src/config.ts diff --git a/src/web/src/githubReservedName.ts b/src/web/app/src/githubReservedName.ts similarity index 100% rename from src/web/src/githubReservedName.ts rename to src/web/app/src/githubReservedName.ts diff --git a/src/web/src/hooks/use-auth.ts b/src/web/app/src/hooks/use-auth.ts similarity index 100% rename from src/web/src/hooks/use-auth.ts rename to src/web/app/src/hooks/use-auth.ts diff --git a/src/web/src/hooks/use-favicon-badge.ts b/src/web/app/src/hooks/use-favicon-badge.ts similarity index 100% rename from src/web/src/hooks/use-favicon-badge.ts rename to src/web/app/src/hooks/use-favicon-badge.ts diff --git a/src/web/src/hooks/use-genericInfo.ts b/src/web/app/src/hooks/use-genericInfo.ts similarity index 100% rename from src/web/src/hooks/use-genericInfo.ts rename to src/web/app/src/hooks/use-genericInfo.ts diff --git a/src/web/src/hooks/use-preferred-theme.ts b/src/web/app/src/hooks/use-preferred-theme.ts similarity index 100% rename from src/web/src/hooks/use-preferred-theme.ts rename to src/web/app/src/hooks/use-preferred-theme.ts diff --git a/src/web/src/hooks/use-search-value.ts b/src/web/app/src/hooks/use-search-value.ts similarity index 100% rename from src/web/src/hooks/use-search-value.ts rename to src/web/app/src/hooks/use-search-value.ts diff --git a/src/web/src/hooks/use-telescope-contributor.ts b/src/web/app/src/hooks/use-telescope-contributor.ts similarity index 100% rename from src/web/src/hooks/use-telescope-contributor.ts rename to src/web/app/src/hooks/use-telescope-contributor.ts diff --git a/src/web/src/hooks/use-visibility.ts b/src/web/app/src/hooks/use-visibility.ts similarity index 100% rename from src/web/src/hooks/use-visibility.ts rename to src/web/app/src/hooks/use-visibility.ts diff --git a/src/web/src/interfaces/index.ts b/src/web/app/src/interfaces/index.ts similarity index 100% rename from src/web/src/interfaces/index.ts rename to src/web/app/src/interfaces/index.ts diff --git a/src/web/src/pages/_app.tsx b/src/web/app/src/pages/_app.tsx similarity index 100% rename from src/web/src/pages/_app.tsx rename to src/web/app/src/pages/_app.tsx diff --git a/src/web/src/pages/_document.tsx b/src/web/app/src/pages/_document.tsx similarity index 100% rename from src/web/src/pages/_document.tsx rename to src/web/app/src/pages/_document.tsx diff --git a/src/web/src/pages/about.tsx b/src/web/app/src/pages/about.tsx similarity index 100% rename from src/web/src/pages/about.tsx rename to src/web/app/src/pages/about.tsx diff --git a/src/web/src/pages/error.tsx b/src/web/app/src/pages/error.tsx similarity index 100% rename from src/web/src/pages/error.tsx rename to src/web/app/src/pages/error.tsx diff --git a/src/web/src/pages/index.tsx b/src/web/app/src/pages/index.tsx similarity index 100% rename from src/web/src/pages/index.tsx rename to src/web/app/src/pages/index.tsx diff --git a/src/web/src/pages/search.tsx b/src/web/app/src/pages/search.tsx similarity index 100% rename from src/web/src/pages/search.tsx rename to src/web/app/src/pages/search.tsx diff --git a/src/web/src/pages/signup.tsx b/src/web/app/src/pages/signup.tsx similarity index 100% rename from src/web/src/pages/signup.tsx rename to src/web/app/src/pages/signup.tsx diff --git a/src/web/src/student-quotes.js b/src/web/app/src/student-quotes.js similarity index 100% rename from src/web/src/student-quotes.js rename to src/web/app/src/student-quotes.js diff --git a/src/web/src/styles/Home.module.css b/src/web/app/src/styles/Home.module.css similarity index 100% rename from src/web/src/styles/Home.module.css rename to src/web/app/src/styles/Home.module.css diff --git a/src/web/src/styles/globals.css b/src/web/app/src/styles/globals.css similarity index 100% rename from src/web/src/styles/globals.css rename to src/web/app/src/styles/globals.css diff --git a/src/web/src/styles/telescope-post-content.css b/src/web/app/src/styles/telescope-post-content.css similarity index 100% rename from src/web/src/styles/telescope-post-content.css rename to src/web/app/src/styles/telescope-post-content.css diff --git a/src/web/src/theme/createPalette.d.ts b/src/web/app/src/theme/createPalette.d.ts similarity index 100% rename from src/web/src/theme/createPalette.d.ts rename to src/web/app/src/theme/createPalette.d.ts diff --git a/src/web/src/theme/index.ts b/src/web/app/src/theme/index.ts similarity index 100% rename from src/web/src/theme/index.ts rename to src/web/app/src/theme/index.ts diff --git a/src/web/src/translations/en/translations.js b/src/web/app/src/translations/en/translations.js similarity index 100% rename from src/web/src/translations/en/translations.js rename to src/web/app/src/translations/en/translations.js diff --git a/src/web/src/translations/es/translations.js b/src/web/app/src/translations/es/translations.js similarity index 100% rename from src/web/src/translations/es/translations.js rename to src/web/app/src/translations/es/translations.js diff --git a/src/web/src/translations/i18n.js b/src/web/app/src/translations/i18n.js similarity index 100% rename from src/web/src/translations/i18n.js rename to src/web/app/src/translations/i18n.js diff --git a/src/web/tsconfig.jest.json b/src/web/app/tsconfig.jest.json similarity index 100% rename from src/web/tsconfig.jest.json rename to src/web/app/tsconfig.jest.json diff --git a/src/web/tsconfig.json b/src/web/app/tsconfig.json similarity index 100% rename from src/web/tsconfig.json rename to src/web/app/tsconfig.json diff --git a/src/web/vercel.json b/src/web/app/vercel.json similarity index 100% rename from src/web/vercel.json rename to src/web/app/vercel.json