diff --git a/env-config/example.env b/env-config/example.env
index 28787448..d3effadd 100644
--- a/env-config/example.env
+++ b/env-config/example.env
@@ -1,5 +1,19 @@
SENTRY_ORG=
+NEXT_PUBLIC_DSN=
+NEXT_PUBLIC_ENVIRONMENT=
+NEXT_RELEASE_PACKAGE_NAME=
+NEXT_SENTRY_PROJECT=
+NEXT_SOURCEMAPS_DIR=
+NEXT_SOURCEMAPS_URL_PREFIX=
+NEXT_PUBLIC_FLASK_BACKEND=
+NEXT_PUBLIC_EXPRESS_BACKEND=
+NEXT_PUBLIC_SPRINGBOOT_BACKEND=
+NEXT_PUBLIC_ASPNETCORE_BACKEND=
+NEXT_PUBLIC_LARAVEL_BACKEND=
+NEXT_PUBLIC_RUBY_BACKEND=
+NEXT_PUBLIC_RUBYONRAILS_BACKEND=
+
REACT_APP_DSN=
REACT_APP_ENGINE_SERVICE=
REACT_APP_ENVIRONMENT=
diff --git a/next/package-lock.json b/next/package-lock.json
index 391ced25..3b3bab61 100644
--- a/next/package-lock.json
+++ b/next/package-lock.json
@@ -21,7 +21,7 @@
"prisma": "^5.21.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "react-loader-spinner": "~4.0.0",
+ "react-loader-spinner": "~6.1.6",
"react-redux": "~7.2.4",
"react-router-dom": "~6.3.0",
"react-scripts": "~5.0.1",
@@ -2170,6 +2170,24 @@
"tslib": "^2.4.0"
}
},
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
+ "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.1"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
+ "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
"license": "MIT",
@@ -6559,6 +6577,11 @@
"version": "2.0.3",
"license": "MIT"
},
+ "node_modules/@types/stylis": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz",
+ "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw=="
+ },
"node_modules/@types/testing-library__jest-dom": {
"version": "5.14.9",
"license": "MIT",
@@ -7999,6 +8022,14 @@
"node": ">= 6"
}
},
+ "node_modules/camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/caniuse-api": {
"version": "3.0.0",
"license": "MIT",
@@ -8507,6 +8538,14 @@
"postcss": "^8.4"
}
},
+ "node_modules/css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/css-declaration-sorter": {
"version": "6.4.1",
"license": "ISC",
@@ -8643,6 +8682,16 @@
"version": "0.1.1",
"license": "MIT"
},
+ "node_modules/css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "dependencies": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
"node_modules/css-tree": {
"version": "1.0.0-alpha.37",
"license": "MIT",
@@ -20802,16 +20851,26 @@
"license": "MIT"
},
"node_modules/react-loader-spinner": {
- "version": "4.0.0",
- "license": "MIT",
+ "version": "6.1.6",
+ "resolved": "https://registry.npmjs.org/react-loader-spinner/-/react-loader-spinner-6.1.6.tgz",
+ "integrity": "sha512-x5h1Jcit7Qn03MuKlrWcMG9o12cp9SNDVHVJTNRi9TgtGPKcjKiXkou4NRfLAtXaFB3+Z8yZsVzONmPzhv2ErA==",
"dependencies": {
- "prop-types": "^15.7.2"
+ "react-is": "^18.2.0",
+ "styled-components": "^6.1.2"
+ },
+ "engines": {
+ "node": ">= 12"
},
"peerDependencies": {
- "react": "*",
- "react-dom": "*"
+ "react": "^16.0.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/react-loader-spinner/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+ },
"node_modules/react-redux": {
"version": "7.2.9",
"license": "MIT",
@@ -21771,6 +21830,11 @@
"version": "1.2.0",
"license": "ISC"
},
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
"node_modules/sharp": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
@@ -22405,6 +22469,65 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/styled-components": {
+ "version": "6.1.13",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz",
+ "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==",
+ "dependencies": {
+ "@emotion/is-prop-valid": "1.2.2",
+ "@emotion/unitless": "0.8.1",
+ "@types/stylis": "4.2.5",
+ "css-to-react-native": "3.2.0",
+ "csstype": "3.1.3",
+ "postcss": "8.4.38",
+ "shallowequal": "1.1.0",
+ "stylis": "4.3.2",
+ "tslib": "2.6.2"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/styled-components"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0",
+ "react-dom": ">= 16.8.0"
+ }
+ },
+ "node_modules/styled-components/node_modules/postcss": {
+ "version": "8.4.38",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/styled-components/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
"node_modules/styled-jsx": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
@@ -22441,6 +22564,11 @@
"postcss": "^8.2.15"
}
},
+ "node_modules/stylis": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
+ "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg=="
+ },
"node_modules/sucrase": {
"version": "3.35.0",
"license": "MIT",
diff --git a/next/package.json b/next/package.json
index 2eab552d..422fe2b1 100644
--- a/next/package.json
+++ b/next/package.json
@@ -16,7 +16,7 @@
"prisma": "^5.21.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "react-loader-spinner": "~4.0.0",
+ "react-loader-spinner": "~6.1.6",
"react-redux": "~7.2.4",
"react-router-dom": "~6.3.0",
"react-scripts": "~5.0.1",
diff --git a/next/src/app/layout.jsx b/next/src/app/layout.jsx
index 98095cb1..37bff9f0 100644
--- a/next/src/app/layout.jsx
+++ b/next/src/app/layout.jsx
@@ -2,8 +2,8 @@ import React from 'react';
import { Suspense } from 'react';
-import SentryQueryInitializer from '/src/ui/SentryQueryInitializer';
-import HomeContent from '/src/ui/HomeContent';
+import SentryQueryInitializer from '/src/components/SentryQueryInitializer';
+import HomeContent from '/src/components/HomeContent';
export default function RootLayout({
// Layouts must accept a children prop.
diff --git a/next/src/app/page.jsx b/next/src/app/page.jsx
index bd310849..dcbccd25 100644
--- a/next/src/app/page.jsx
+++ b/next/src/app/page.jsx
@@ -18,9 +18,8 @@ const divStyle = {
export default function Page() {
- console.log("in home page");
const router = useRouter();
- const { backend, frontendSlowdown } = useSearchParams();
+ const { backend } = useSearchParams();
const backendType = determineBackendType(backend);
const backendUrl = determineBackendUrl(backendType);
console.log('backend is ' + backendUrl);
diff --git a/next/src/app/products-sc/page.jsx b/next/src/app/products-sc/page.jsx
index 37424ff1..be801ed1 100644
--- a/next/src/app/products-sc/page.jsx
+++ b/next/src/app/products-sc/page.jsx
@@ -1,5 +1,5 @@
-import ThreeDotLoader from '/src/ui/ThreeDotLoader';
-import ProductCatalog from '/src/ui/ProductCatalog';
+import ThreeDotLoader from '/src/components/ThreeDotLoader';
+import ProductCatalog from '/src/components/ProductCatalog';
import { Suspense } from 'react';
export const dynamic = 'force-dynamic';
@@ -7,6 +7,7 @@ export const fetchCache = 'force-no-store';
export default function Products() {
+ // ToDo: figure out why three dot animation is frozen when rendering ThreeDotLoader or replace it
return (