diff --git a/package.json b/package.json
index 8533c589643a..c50867df4cee 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,7 @@
{
"scripts": {
- "linter": "npx eslint ./services/*/client/source/class/*/"
+ "linter": "npx eslint ./services/*/client/source/class/*/",
+ "linter-fix": "npx eslint ./services/*/client/source/class/*/ --fix"
},
"devDependencies": {
"babel-eslint": "^10.1.0",
diff --git a/services/static-webserver/client/scripts/apps_metadata.json b/services/static-webserver/client/scripts/apps_metadata.json
index 6164b2a263ff..38959e460904 100644
--- a/services/static-webserver/client/scripts/apps_metadata.json
+++ b/services/static-webserver/client/scripts/apps_metadata.json
@@ -3,6 +3,9 @@
{
"application": "osparc",
"replacements": {
+ "replace_me_favicon_uri": "/resource/osparc/osparc/icons/favicon-32x32.png",
+ "replace_me_manifest_uri": "/resource/osparc/osparc/manifest.json",
+ "replace_me_browserconfig_uri": "/resource/osparc/osparc/browserconfig.xml",
"replace_me_og_title": "oSPARC",
"replace_me_og_description": "open online simulations for Stimulating Peripheral Activity to Relieve Conditions",
"replace_me_og_image": "https://raw.githubusercontent.com/ITISFoundation/osparc-simcore/master/services/static-webserver/client/source/resource/osparc/favicon-osparc.png"
@@ -10,6 +13,9 @@
}, {
"application": "s4l",
"replacements": {
+ "replace_me_favicon_uri": "/resource/osparc/s4l/icons/favicon-32x32.png",
+ "replace_me_manifest_uri": "/resource/osparc/s4l/manifest.json",
+ "replace_me_browserconfig_uri": "/resource/osparc/s4l/browserconfig.xml",
"replace_me_og_title": "Sim4Life",
"replace_me_og_description": "Computational life sciences platform that combines computable human phantoms, powerful physics solvers and advanced tissue models.",
"replace_me_og_image": "https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/background-images/S4L/Sim4Life-head-default.png"
@@ -17,6 +23,9 @@
}, {
"application": "s4lacad",
"replacements": {
+ "replace_me_favicon_uri": "/resource/osparc/s4l/icons/favicon-32x32.png",
+ "replace_me_manifest_uri": "/resource/osparc/s4l/manifest.json",
+ "replace_me_browserconfig_uri": "/resource/osparc/s4l/browserconfig.xml",
"replace_me_og_title": "Sim4Life Science",
"replace_me_og_description": "Sim4Life for Science - Computational life sciences platform that combines computable human phantoms, powerful physics solvers and advanced tissue models.",
"replace_me_og_image": "https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/background-images/S4L/Sim4Life-head-academy.png"
@@ -24,6 +33,9 @@
}, {
"application": "s4lengine",
"replacements": {
+ "replace_me_favicon_uri": "/resource/osparc/s4l/icons/favicon-32x32.png",
+ "replace_me_manifest_uri": "/resource/osparc/s4l/manifest.json",
+ "replace_me_browserconfig_uri": "/resource/osparc/s4l/browserconfig.xml",
"replace_me_og_title": "Sim4Life Engineering",
"replace_me_og_description": "Sim4Life for Engineers - Computational life sciences platform that combines computable human phantoms, powerful physics solvers and advanced tissue models.",
"replace_me_og_image": "https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/background-images/S4L/Sim4Life-head-default.png"
@@ -31,6 +43,9 @@
}, {
"application": "s4ldesktop",
"replacements": {
+ "replace_me_favicon_uri": "/resource/osparc/s4l/icons/favicon-32x32.png",
+ "replace_me_manifest_uri": "/resource/osparc/s4l/manifest.json",
+ "replace_me_browserconfig_uri": "/resource/osparc/s4l/browserconfig.xml",
"replace_me_og_title": "Sim4Life (Desktop)",
"replace_me_og_description": "Computational life sciences platform that combines computable human phantoms, powerful physics solvers and advanced tissue models.",
"replace_me_og_image": "https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/background-images/S4L/Sim4Life-head-default.png"
@@ -38,6 +53,9 @@
}, {
"application": "s4ldesktopacad",
"replacements": {
+ "replace_me_favicon_uri": "/resource/osparc/s4l/icons/favicon-32x32.png",
+ "replace_me_manifest_uri": "/resource/osparc/s4l/manifest.json",
+ "replace_me_browserconfig_uri": "/resource/osparc/s4l/browserconfig.xml",
"replace_me_og_title": "Sim4Life Science (Desktop)",
"replace_me_og_description": "Sim4Life for Science - Computational life sciences platform that combines computable human phantoms, powerful physics solvers and advanced tissue models.",
"replace_me_og_image": "https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/background-images/S4L/Sim4Life-head-academy.png"
@@ -45,6 +63,9 @@
}, {
"application": "s4llite",
"replacements": {
+ "replace_me_favicon_uri": "/resource/osparc/s4l/icons/favicon-32x32.png",
+ "replace_me_manifest_uri": "/resource/osparc/s4l/manifest.json",
+ "replace_me_browserconfig_uri": "/resource/osparc/s4l/browserconfig.xml",
"replace_me_og_title": "S4L Lite",
"replace_me_og_description": "Sim4Life for Students - Computational life sciences platform that combines computable human phantoms, powerful physics solvers and advanced tissue models.",
"replace_me_og_image": "https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/full/background-images/S4L/Sim4Life-head-lite.png"
@@ -52,6 +73,9 @@
}, {
"application": "tis",
"replacements": {
+ "replace_me_favicon_uri": "/resource/osparc/tis/icons/favicon-32x32.png",
+ "replace_me_manifest_uri": "/resource/osparc/tis/manifest.json",
+ "replace_me_browserconfig_uri": "/resource/osparc/tis/browserconfig.xml",
"replace_me_og_title": "TI Plan - IT'IS",
"replace_me_og_description": "A tool powered by o²S²PARC technology that reduces optimization of targeted neurostimulation protocols.",
"replace_me_og_image": "https://raw.githubusercontent.com/ITISFoundation/osparc-simcore/master/services/static-webserver/client/source/resource/osparc/tip_splitimage.png"
@@ -59,6 +83,9 @@
}, {
"application": "tiplite",
"replacements": {
+ "replace_me_favicon_uri": "/resource/osparc/tis/icons/favicon-32x32.png",
+ "replace_me_manifest_uri": "/resource/osparc/tis/manifest.json",
+ "replace_me_browserconfig_uri": "/resource/osparc/tis/browserconfig.xml",
"replace_me_og_title": "TI Plan lite - IT'IS",
"replace_me_og_description": "A tool powered by o²S²PARC technology that reduces optimization of targeted neurostimulation protocols.",
"replace_me_og_image": "https://raw.githubusercontent.com/ITISFoundation/osparc-simcore/master/services/static-webserver/client/source/resource/osparc/tip_splitimage.png"
diff --git a/services/static-webserver/client/source/boot/index.html b/services/static-webserver/client/source/boot/index.html
index aa9e202a085f..c12e128897c8 100644
--- a/services/static-webserver/client/source/boot/index.html
+++ b/services/static-webserver/client/source/boot/index.html
@@ -24,10 +24,10 @@
-
+
-
+
@@ -35,7 +35,7 @@
-
+
diff --git a/services/static-webserver/client/source/class/osparc/Application.js b/services/static-webserver/client/source/class/osparc/Application.js
index 598ecde09ccb..f77c17245739 100644
--- a/services/static-webserver/client/source/class/osparc/Application.js
+++ b/services/static-webserver/client/source/class/osparc/Application.js
@@ -53,8 +53,10 @@ qx.Class.define("osparc.Application", {
this.__preventAutofillBrowserStyles();
this.__loadCommonCss();
this.__updateTabName();
- this.__updateMetaTags();
-
+ if (osparc.utils.Utils.isDevelopmentPlatform()) {
+ this.__updateMetaTags();
+ this.__setDeviceSpecificIcons();
+ }
if (qx.core.Environment.get("product.name") === "s4lengine") {
const view = new osparc.auth.BlurredLoginPageS4LEngineering();
this.__loadView(view);
@@ -216,226 +218,158 @@ qx.Class.define("osparc.Application", {
}
},
- __updateMetaTags: function() {
- // Update title and meta tags
+
+
+ __setDeviceSpecificIcons: function() {
+ const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
+ const isAndroid = /android/i.test(navigator.userAgent);
+ const isWindows = /windows/i.test(navigator.userAgent);
+ // const productColor = qx.theme.manager.Color.getInstance().resolve("product-color");
+ // const backgroundColor = qx.theme.manager.Color.getInstance().resolve("primary-background-color");
+ // default icons
+ this.__updateMetaTags();
+ this.__setDefaultIcons()
+ if (isIOS) {
+ this.__setIOSpIcons();
+ } else if (isAndroid) {
+ this.__setGoogleIcons();
+ } else if (isWindows) {
+ // this.__updateBrowserConfig(this.__getProductMetaData().productColor);
+ }
+ },
+
+ __getProductMetaData: function() {
+ let productName = osparc.product.Utils.getProductName();
+ if (osparc.product.Utils.isS4LProduct() || osparc.product.Utils.isProduct("s4llite")) {
+ productName = "s4l";
+ } else if (osparc.product.Utils.isProduct("tis") || osparc.product.Utils.isProduct("tiplite")) {
+ productName = "tis";
+ }
+
const productColor = qx.theme.manager.Color.getInstance().resolve("product-color");
const backgroundColor = qx.theme.manager.Color.getInstance().resolve("primary-background-color");
+ return {
+ productName: productName,
+ productColor: productColor,
+ backgroundColor: backgroundColor
+ }
+ },
+ __updateMetaTags: function() {
+ // check device type and only set the icons for the divice type
+ // i.e iOS, Android or windows etc
const themeColorMeta = document.querySelector("meta[name='theme-color']");
const tileColorMeta = document.querySelector("meta[name='msapplication-TileColor']");
const tileImageMeta = document.querySelector("meta[name='msapplication-TileImage']");
- const maskIconMeta = document.querySelector("meta[name='mask-icon']");
+ const maskIconMeta = document.querySelector("meta[rel='mask-icon']");
+ const shortIconMeta = document.querySelector("link[rel='icon']");
+ const manifestLink = document.querySelector("link[rel='manifest']");
+ const msApplicationLink = document.querySelector("link[rel='msapplication-config']");
+
+ const {productName, productColor} = this.__getProductMetaData();
if (themeColorMeta) {
themeColorMeta.setAttribute("content", productColor);
}
if (tileColorMeta && tileImageMeta) {
- const maskIcon = osparc.product.Utils.getManifestIconUrl("ms-icon-150x150.png")
- Promise.resolve(maskIcon)
- .then(resolvedUrl => {
- // Create the manifest data object with resolved URLs
- tileColorMeta.setAttribute("content", productColor);
- tileImageMeta.setAttribute("content", resolvedUrl);
- })
- .catch(error => {
- console.error("Failed to resolve icon URLs:", error);
- });
+ const maskIcon = `../resource/osparc/${productName}/icons/ms-icon-150x150.png`
+ tileColorMeta.setAttribute("content", productColor);
+ tileImageMeta.setAttribute("content", maskIcon);
}
- if (maskIconMeta) {
- const maskIcon = osparc.product.Utils.getManifestIconUrl("safari-pinned-tab.png", "apple-icon-fallback.png")
- Promise.resolve(maskIcon)
- .then(resolvedUrl => {
- // Create the manifest data object with resolved URLs
- maskIconMeta.setAttribute("color", productColor);
- maskIconMeta.setAttribute("href", resolvedUrl);
- })
- .catch(error => {
- console.error("Failed to resolve icon URLs:", error);
- });
+
+ if (shortIconMeta) {
+ const maskIconPath = `../resource/osparc/${productName}/icons/favicon-96x96.png`
+ shortIconMeta.setAttribute("href", maskIconPath);
}
- // Update app icons
- this.__updateAppIcons();
+ if (maskIconMeta) {
+ const maskIconPath = `../resource/osparc/${productName}/apple-icon-fallback.png`
+ maskIconMeta.setAttribute("href", maskIconPath);
+ }
- // Update manifest
- this.__updateManifest(productColor, backgroundColor);
+ if (manifestLink) {
+ const manifestPath = `../resource/osparc/${productName}/manifest.json`
+ manifestLink.setAttribute("href", manifestPath);
+ }
- // Update browserconfig
- this.__updateBrowserConfig(productColor);
+ if (msApplicationLink) {
+ const msApplicationPath = `../resource/osparc/${productName}/broswserconfig.xml`
+ msApplicationLink.setAttribute("href", msApplicationPath);
+ }
},
- __updateAppIcons: function() {
- // Array of promises to resolve icon URLs for Apple Touch Icons
- const appleIconUrls = [
- osparc.product.Utils.getManifestIconUrl("apple-icon-57x57.png", "apple-icon-fallback.png"),
- osparc.product.Utils.getManifestIconUrl("apple-icon-60x60.png", "apple-icon-fallback.png"),
- osparc.product.Utils.getManifestIconUrl("apple-icon-72x72.png", "apple-icon-fallback.png"),
- osparc.product.Utils.getManifestIconUrl("apple-icon-76x76.png", "apple-icon-fallback.png"),
- osparc.product.Utils.getManifestIconUrl("apple-icon-114x114.png", "apple-icon-fallback.png"),
- osparc.product.Utils.getManifestIconUrl("apple-icon-120x120.png", "apple-icon-fallback.png"),
- osparc.product.Utils.getManifestIconUrl("apple-icon-144x144.png", "apple-icon-fallback.png"),
- osparc.product.Utils.getManifestIconUrl("apple-icon-152x152.png", "apple-icon-fallback.png"),
- osparc.product.Utils.getManifestIconUrl("apple-icon-180x180.png", "apple-icon-fallback.png")
- ];
-
- // Array of promises to resolve icon URLs for Favicons
+ __setDefaultIcons: function() {
+ const {productName} = this.__getProductMetaData()
+ const resourcePath = `../resource/osparc/${productName}/icons`;
const favIconUrls = [
- osparc.product.Utils.getManifestIconUrl("android-icon-192x192.png"),
- osparc.product.Utils.getManifestIconUrl("favicon-32x32.png"),
- osparc.product.Utils.getManifestIconUrl("favicon-96x96.png"),
- osparc.product.Utils.getManifestIconUrl("favicon-16x16.png")
+ "favicon-16x16.png",
+ "favicon-32x32.png",
+ "favicon-96x96.png"
];
- // Wait for all icon URLs to be resolved
- Promise.all([...appleIconUrls, ...favIconUrls])
- .then(resolvedUrls => {
- const appleResolvedUrls = resolvedUrls.slice(0, appleIconUrls.length);
- const favResolvedUrls = resolvedUrls.slice(appleIconUrls.length);
-
- // Remove existing Apple Touch Icons and Favicons
- document.querySelectorAll("link[rel='apple-touch-icon'], link[rel='icon']").forEach(link => link.remove());
-
- // Create and insert new Apple Touch Icon links
- const appleIconSizes = [
- "57x57", "60x60", "72x72", "76x76", "114x114", "120x120", "144x144", "152x152", "180x180"
- ];
- appleResolvedUrls.forEach((url, index) => {
- let link = document.createElement("link");
- link.setAttribute("rel", "apple-touch-icon");
- link.setAttribute("sizes", appleIconSizes[index]);
- link.setAttribute("href", url);
- document.head.appendChild(link);
- });
-
- // Create and insert new Favicon links
- const favIconSizes = [
- "192x192", "32x32", "96x96", "16x16"
- ];
- favResolvedUrls.forEach((url, index) => {
- let link = document.createElement("link");
- link.setAttribute("rel", "icon");
- link.setAttribute("type", "image/png");
- link.setAttribute("sizes", favIconSizes[index]);
- link.setAttribute("href", url);
- document.head.appendChild(link);
- });
- })
- .catch(error => {
- console.error("Failed to resolve icon URLs:", error);
- });
+ const iconSizes = [
+ "16x16", "32x32", "96x96"
+ ];
+ favIconUrls.forEach((url, index) => {
+ let link = document.createElement("link");
+ link.setAttribute("rel", "icon");
+ link.setAttribute("sizes", iconSizes[index]);
+ link.setAttribute("type", "image/png");
+ link.setAttribute("href", resourcePath + url);
+ document.head.appendChild(link);
+ });
},
- __updateManifest: function(themeColor, backgroundColor) {
- const productName = osparc.product.Utils.getProductName();
- let manifestLink = document.querySelector("link[rel='manifest']");
-
- // Array of promises to resolve icon URLs
- const iconUrls = [
- osparc.product.Utils.getManifestIconUrl("android-icon-36x36.png"),
- osparc.product.Utils.getManifestIconUrl("android-icon-48x48.png"),
- osparc.product.Utils.getManifestIconUrl("android-icon-72x72.png"),
- osparc.product.Utils.getManifestIconUrl("android-icon-96x96.png"),
- osparc.product.Utils.getManifestIconUrl("android-icon-144x144.png"),
- osparc.product.Utils.getManifestIconUrl("android-icon-192x192.png")
+ __setGoogleIcons: function() {
+ const {productName} = this.__getProductMetaData()
+ const resourcePath = `../resource/osparc/${productName}/icons`;
+
+ const favIconUrls = [
+ "android-icon-48x48.png",
+ "android-icon-192x192.png",
];
- // Wait for all icon URLs to be resolved
- Promise.all(iconUrls)
- .then(resolvedUrls => {
- // Create the manifest data object with resolved URLs
- const manifestData = {
- shortName: productName,
- name: productName,
- icons: [
- {
- src: resolvedUrls[0],
- sizes: "36x36",
- type: "image/png",
- density: "0.75"
- },
- {
- src: resolvedUrls[1],
- sizes: "48x48",
- type: "image/png",
- density: "1.0"
- },
- {
- src: resolvedUrls[2],
- sizes: "72x72",
- type: "image/png",
- density: "1.5"
- },
- {
- src: resolvedUrls[3],
- sizes: "96x96",
- type: "image/png",
- density: "2.0"
- },
- {
- src: resolvedUrls[4],
- sizes: "144x144",
- type: "image/png",
- density: "3.0"
- },
- {
- src: resolvedUrls[5],
- sizes: "192x192",
- type: "image/png",
- density: "4.0"
- }
- ],
- display: "standalone",
- themeColor: themeColor,
- backgroundColor: backgroundColor
- };
-
- const blob = new Blob([JSON.stringify(manifestData)], { type: "application/json" });
- const manifestURL = URL.createObjectURL(blob);
-
- // Create or update the manifest link in the document head
- if (!manifestLink) {
- manifestLink = document.createElement("link");
- manifestLink.setAttribute("rel", "manifest");
- document.head.appendChild(manifestLink);
- }
- manifestLink.setAttribute("href", manifestURL);
- })
- .catch(error => {
- console.error("Failed to resolve icon URLs:", error);
- });
+ const iconSizes = [
+ "48x48", "192x192"
+ ];
+ favIconUrls.forEach((url, index) => {
+ let link = document.createElement("link");
+ link.setAttribute("rel", "icon");
+ link.setAttribute("sizes", iconSizes[index]);
+ link.setAttribute("type", "image/png");
+ link.setAttribute("href", resourcePath + url);
+ document.head.appendChild(link);
+ });
},
- // Method to dynamically update the browserconfig
- __updateBrowserConfig: function(tileColor) {
- // Resolve the icon URL asynchronously
- osparc.product.Utils.getManifestIconUrl("ms-icon-150x150.png")
- .then(msTileIcon => {
- const browserconfigData = `
-
-
-
-
- ${tileColor}
-
-
- `;
-
- const blob = new Blob([browserconfigData], { type: "application/xml" });
- const browserconfigURL = URL.createObjectURL(blob);
-
- // Check if the meta tag exists, create it if not
- let browserConfigLink = document.querySelector("meta[name='msapplication-config']");
- if (!browserConfigLink) {
- browserConfigLink = document.createElement("meta");
- browserConfigLink.setAttribute("name", "msapplication-config");
- document.head.appendChild(browserConfigLink);
- }
- browserConfigLink.setAttribute("content", browserconfigURL);
- })
- .catch(error => {
- console.error("Failed to resolve msTileIcon URL:", error);
- });
+ __setIOSpIcons: function() {
+ // Array of promises to resolve icon URLs for Apple Touch Icons
+ const {productName} = this.__getProductMetaData()
+ const resourcePath = `../resource/osparc/${productName}/icons`;
+
+ const appleIconUrls = [
+ "apple-icon-57x57.png",
+ "apple-icon-60x60.png",
+ "apple-icon-72x72.png",
+ "apple-icon-76x76.png",
+ "apple-icon-114x114.png",
+ "apple-icon-120x120.png",
+ "apple-icon-144x144.png",
+ "apple-icon-152x152.png",
+ "apple-icon-180x180.png"
+ ];
+
+ const appleIconSizes = [
+ "57x57", "60x60", "72x72", "76x76", "114x114", "120x120", "144x144", "152x152", "180x180"
+ ];
+ appleIconUrls.forEach((url, index) => {
+ let link = document.createElement("link");
+ link.setAttribute("rel", "apple-touch-icon");
+ link.setAttribute("sizes", appleIconSizes[index]);
+ link.setAttribute("href", resourcePath + url);
+ document.head.appendChild(link);
+ });
},
__startupChecks: function() {
diff --git a/services/static-webserver/client/source/class/osparc/product/Utils.js b/services/static-webserver/client/source/class/osparc/product/Utils.js
index f83921b3cc65..123d993e01bd 100644
--- a/services/static-webserver/client/source/class/osparc/product/Utils.js
+++ b/services/static-webserver/client/source/class/osparc/product/Utils.js
@@ -131,20 +131,6 @@ qx.Class.define("osparc.product.Utils", {
});
},
- getManifestIconUrl: function(icon, fbIcon = "favicon-osparc.png") {
- let productName = osparc.product.Utils.getProductName();
- if (this.isS4LProduct() || this.isProduct("s4llite")) {
- productName = "s4l";
- } else if (this.isProduct("tis") || this.isProduct("tiplite")) {
- productName = "tis";
- }
- const iconPath = `https://raw.githubusercontent.com/ZurichMedTech/s4l-assets/main/app/favicons/${productName}/icons/${icon}`;
- const fallbackIcon = `/resource/osparc/${fbIcon}`;
- return this.__linkExists(iconPath)
- .then(() => iconPath)
- .catch(() => fallbackIcon);
- },
-
getLogoPath: function(longLogo = true) {
let logosPath = null;
const colorManager = qx.theme.manager.Color.getInstance();
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/browserconfig.xml b/services/static-webserver/client/source/resource/osparc/osparc/browserconfig.xml
new file mode 100644
index 000000000000..7830b99173cc
--- /dev/null
+++ b/services/static-webserver/client/source/resource/osparc/osparc/browserconfig.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+ #8300BF
+
+
+
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-144x144.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-144x144.png
new file mode 100644
index 000000000000..bbb798631969
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-144x144.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-192x192.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-192x192.png
new file mode 100644
index 000000000000..dce93e1e2db9
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-192x192.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-36x36.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-36x36.png
new file mode 100644
index 000000000000..f916256e0871
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-36x36.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-48x48.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-48x48.png
new file mode 100644
index 000000000000..9d72901f3c4a
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-48x48.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-72x72.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-72x72.png
new file mode 100644
index 000000000000..ddd85eb95164
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-72x72.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-96x96.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-96x96.png
new file mode 100644
index 000000000000..cb7b470d467b
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/android-icon-96x96.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-114x114.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-114x114.png
new file mode 100644
index 000000000000..3c8589428738
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-114x114.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-120x120.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-120x120.png
new file mode 100644
index 000000000000..ae7d4cf74405
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-120x120.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-144x144.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-144x144.png
new file mode 100644
index 000000000000..710ec075bc95
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-144x144.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-152x152.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-152x152.png
new file mode 100644
index 000000000000..6cba62a8d66f
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-152x152.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-180x180.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-180x180.png
new file mode 100644
index 000000000000..9b972788c851
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-180x180.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-57x57.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-57x57.png
new file mode 100644
index 000000000000..0ce98ce05c74
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-57x57.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-60x60.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-60x60.png
new file mode 100644
index 000000000000..23296f03c95e
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-60x60.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-72x72.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-72x72.png
new file mode 100644
index 000000000000..f109386d11e9
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-72x72.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-76x76.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-76x76.png
new file mode 100644
index 000000000000..63e0ddae6464
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-76x76.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-precomposed.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-precomposed.png
new file mode 100644
index 000000000000..86227968861f
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon-precomposed.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon.png
new file mode 100644
index 000000000000..86227968861f
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/apple-icon.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon-16x16.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon-16x16.png
new file mode 100644
index 000000000000..e81cd639b80d
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon-16x16.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon-32x32.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon-32x32.png
new file mode 100644
index 000000000000..92f2d08a360f
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon-32x32.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon-96x96.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon-96x96.png
new file mode 100644
index 000000000000..cb7b470d467b
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon-96x96.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon.ico b/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon.ico
new file mode 100644
index 000000000000..7c2211dafac5
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/favicon.ico differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-144x144.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-144x144.png
new file mode 100644
index 000000000000..bbb798631969
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-144x144.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-150x150.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-150x150.png
new file mode 100644
index 000000000000..b48c512ef0a0
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-150x150.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-310x310.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-310x310.png
new file mode 100644
index 000000000000..8af9cc5514b9
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-310x310.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-70x70.png b/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-70x70.png
new file mode 100644
index 000000000000..cae9b350abc9
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/osparc/icons/ms-icon-70x70.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/icons/safari-pinned-tab.svg b/services/static-webserver/client/source/resource/osparc/osparc/icons/safari-pinned-tab.svg
new file mode 100644
index 000000000000..bde08fadf4c9
--- /dev/null
+++ b/services/static-webserver/client/source/resource/osparc/osparc/icons/safari-pinned-tab.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/services/static-webserver/client/source/resource/osparc/osparc/manifest.json b/services/static-webserver/client/source/resource/osparc/osparc/manifest.json
new file mode 100644
index 000000000000..7a402ded3651
--- /dev/null
+++ b/services/static-webserver/client/source/resource/osparc/osparc/manifest.json
@@ -0,0 +1,46 @@
+{
+ "name": "oSparc",
+ "short_name": "oSparc",
+ "icons": [
+ {
+ "src": "./icons/android-icon-36x36.png",
+ "sizes": "36x36",
+ "type": "image/png",
+ "density": "0.75"
+ },
+ {
+ "src": "./icons/android-icon-48x48.png",
+ "sizes": "48x48",
+ "type": "image/png",
+ "density": "1.0"
+ },
+ {
+ "src": "./icons/android-icon-72x72.png",
+ "sizes": "72x72",
+ "type": "image/png",
+ "density": "1.5"
+ },
+ {
+ "src": "./icons/android-icon-96x96.png",
+ "sizes": "96x96",
+ "type": "image/png",
+ "density": "2.0"
+ },
+ {
+ "src": "./icons/android-icon-144x144.png",
+ "sizes": "144x144",
+ "type": "image/png",
+ "density": "3.0"
+ },
+ {
+ "src": "./icons/android-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "density": "4.0"
+ }
+ ],
+ "start_url": ".",
+ "display": "standalone",
+ "theme_color": "#8300BF",
+ "background_color": "#FFFFFF"
+}
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/browserconfig.xml b/services/static-webserver/client/source/resource/osparc/s4l/browserconfig.xml
new file mode 100644
index 000000000000..320ae2110ee7
--- /dev/null
+++ b/services/static-webserver/client/source/resource/osparc/s4l/browserconfig.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+ #0090D0
+
+
+
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-144x144.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-144x144.png
new file mode 100644
index 000000000000..5e9aaf556eb0
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-144x144.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-192x192.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-192x192.png
new file mode 100644
index 000000000000..4879b6e55e71
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-192x192.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-36x36.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-36x36.png
new file mode 100644
index 000000000000..ffe3979acac3
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-36x36.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-48x48.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-48x48.png
new file mode 100644
index 000000000000..fb516224715b
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-48x48.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-72x72.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-72x72.png
new file mode 100644
index 000000000000..4cf37f2fb549
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-72x72.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-96x96.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-96x96.png
new file mode 100644
index 000000000000..91b12b4f585d
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/android-icon-96x96.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-114x114.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-114x114.png
new file mode 100644
index 000000000000..99b507bb65a8
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-114x114.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-120x120.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-120x120.png
new file mode 100644
index 000000000000..c0a47f69d3d0
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-120x120.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-144x144.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-144x144.png
new file mode 100644
index 000000000000..2f4cb8832d78
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-144x144.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-152x152.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-152x152.png
new file mode 100644
index 000000000000..bea7733e2e52
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-152x152.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-180x180.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-180x180.png
new file mode 100644
index 000000000000..059b8dbe5d84
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-180x180.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-57x57.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-57x57.png
new file mode 100644
index 000000000000..4dbd69c48b21
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-57x57.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-60x60.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-60x60.png
new file mode 100644
index 000000000000..e044fe81a367
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-60x60.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-72x72.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-72x72.png
new file mode 100644
index 000000000000..1d3177869ddc
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-72x72.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-76x76.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-76x76.png
new file mode 100644
index 000000000000..a78454750860
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-76x76.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-precomposed.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-precomposed.png
new file mode 100644
index 000000000000..da1c79b99b19
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon-precomposed.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon.png
new file mode 100644
index 000000000000..da1c79b99b19
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/apple-icon.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon-16x16.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon-16x16.png
new file mode 100644
index 000000000000..f8d114ecf435
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon-16x16.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon-32x32.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon-32x32.png
new file mode 100644
index 000000000000..168df9095ba5
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon-32x32.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon-96x96.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon-96x96.png
new file mode 100644
index 000000000000..91b12b4f585d
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon-96x96.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon.ico b/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon.ico
new file mode 100644
index 000000000000..8b8e56449a1d
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/favicon.ico differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-144x144.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-144x144.png
new file mode 100644
index 000000000000..5e9aaf556eb0
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-144x144.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-150x150.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-150x150.png
new file mode 100644
index 000000000000..c1d00cdab08c
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-150x150.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-310x310.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-310x310.png
new file mode 100644
index 000000000000..e1b36ad7f234
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-310x310.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-70x70.png b/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-70x70.png
new file mode 100644
index 000000000000..493b74df0e06
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/s4l/icons/ms-icon-70x70.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/icons/safari-pinned-tab.svg b/services/static-webserver/client/source/resource/osparc/s4l/icons/safari-pinned-tab.svg
new file mode 100644
index 000000000000..119017c853ef
--- /dev/null
+++ b/services/static-webserver/client/source/resource/osparc/s4l/icons/safari-pinned-tab.svg
@@ -0,0 +1,26 @@
+
+
\ No newline at end of file
diff --git a/services/static-webserver/client/source/resource/osparc/s4l/manifest.json b/services/static-webserver/client/source/resource/osparc/s4l/manifest.json
new file mode 100644
index 000000000000..d591d04ec5e5
--- /dev/null
+++ b/services/static-webserver/client/source/resource/osparc/s4l/manifest.json
@@ -0,0 +1,46 @@
+{
+ "name": "Sim4Life",
+ "short_name": "S4L",
+ "icons": [
+ {
+ "src": "./icons/android-icon-36x36.png",
+ "sizes": "36x36",
+ "type": "image/png",
+ "density": "0.75"
+ },
+ {
+ "src": "./icons/android-icon-48x48.png",
+ "sizes": "48x48",
+ "type": "image/png",
+ "density": "1.0"
+ },
+ {
+ "src": "./icons/android-icon-72x72.png",
+ "sizes": "72x72",
+ "type": "image/png",
+ "density": "1.5"
+ },
+ {
+ "src": "./icons/android-icon-96x96.png",
+ "sizes": "96x96",
+ "type": "image/png",
+ "density": "2.0"
+ },
+ {
+ "src": "./icons/android-icon-144x144.png",
+ "sizes": "144x144",
+ "type": "image/png",
+ "density": "3.0"
+ },
+ {
+ "src": "./icons/android-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "density": "4.0"
+ }
+ ],
+ "start_url": ".",
+ "display": "standalone",
+ "theme_color": "#0090D0",
+ "background_color": "#FFFFFF"
+}
diff --git a/services/static-webserver/client/source/resource/osparc/tis/browserconfig.xml b/services/static-webserver/client/source/resource/osparc/tis/browserconfig.xml
new file mode 100644
index 000000000000..be6e9df44789
--- /dev/null
+++ b/services/static-webserver/client/source/resource/osparc/tis/browserconfig.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+ #6969FF
+
+
+
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-144x144.png b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-144x144.png
new file mode 100644
index 000000000000..a88ce964eb37
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-144x144.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-192x192.png b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-192x192.png
new file mode 100644
index 000000000000..1d0a80044bc7
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-192x192.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-36x36.png b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-36x36.png
new file mode 100644
index 000000000000..4873f66b695e
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-36x36.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-48x48.png b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-48x48.png
new file mode 100644
index 000000000000..cd3422f4a86f
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-48x48.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-72x72.png b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-72x72.png
new file mode 100644
index 000000000000..ff5eb9a541bb
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-72x72.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-96x96.png b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-96x96.png
new file mode 100644
index 000000000000..dc845a3b30f2
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/android-icon-96x96.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-114x114.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-114x114.png
new file mode 100644
index 000000000000..b6e959f2ffa1
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-114x114.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-120x120.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-120x120.png
new file mode 100644
index 000000000000..5bd4920e3374
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-120x120.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-144x144.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-144x144.png
new file mode 100644
index 000000000000..c250814d970f
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-144x144.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-152x152.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-152x152.png
new file mode 100644
index 000000000000..06c4e82b34a6
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-152x152.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-180x180.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-180x180.png
new file mode 100644
index 000000000000..5142d458bf48
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-180x180.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-57x57.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-57x57.png
new file mode 100644
index 000000000000..14d7a2f955f4
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-57x57.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-60x60.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-60x60.png
new file mode 100644
index 000000000000..127fb1c82205
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-60x60.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-72x72.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-72x72.png
new file mode 100644
index 000000000000..09a9951065f1
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-72x72.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-76x76.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-76x76.png
new file mode 100644
index 000000000000..685c44cf7153
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-76x76.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-precomposed.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-precomposed.png
new file mode 100644
index 000000000000..41487e35fe7d
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon-precomposed.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon.png b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon.png
new file mode 100644
index 000000000000..41487e35fe7d
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/apple-icon.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/favicon-16x16.png b/services/static-webserver/client/source/resource/osparc/tis/icons/favicon-16x16.png
new file mode 100644
index 000000000000..380e8b170115
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/favicon-16x16.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/favicon-32x32.png b/services/static-webserver/client/source/resource/osparc/tis/icons/favicon-32x32.png
new file mode 100644
index 000000000000..0f60079445f3
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/favicon-32x32.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/favicon-96x96.png b/services/static-webserver/client/source/resource/osparc/tis/icons/favicon-96x96.png
new file mode 100644
index 000000000000..dc845a3b30f2
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/favicon-96x96.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/favicon.ico b/services/static-webserver/client/source/resource/osparc/tis/icons/favicon.ico
similarity index 100%
rename from services/static-webserver/client/source/resource/osparc/tis/favicon.ico
rename to services/static-webserver/client/source/resource/osparc/tis/icons/favicon.ico
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-144x144.png b/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-144x144.png
new file mode 100644
index 000000000000..a88ce964eb37
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-144x144.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-150x150.png b/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-150x150.png
new file mode 100644
index 000000000000..e13621925272
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-150x150.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-310x310.png b/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-310x310.png
new file mode 100644
index 000000000000..4e14dd16f727
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-310x310.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-70x70.png b/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-70x70.png
new file mode 100644
index 000000000000..e4f668e70c79
Binary files /dev/null and b/services/static-webserver/client/source/resource/osparc/tis/icons/ms-icon-70x70.png differ
diff --git a/services/static-webserver/client/source/resource/osparc/tis/icons/safari-pinned-tab.svg b/services/static-webserver/client/source/resource/osparc/tis/icons/safari-pinned-tab.svg
new file mode 100644
index 000000000000..428a82b93807
--- /dev/null
+++ b/services/static-webserver/client/source/resource/osparc/tis/icons/safari-pinned-tab.svg
@@ -0,0 +1,17 @@
+
diff --git a/services/static-webserver/client/source/resource/osparc/tis/manifest.json b/services/static-webserver/client/source/resource/osparc/tis/manifest.json
new file mode 100644
index 000000000000..344608357e64
--- /dev/null
+++ b/services/static-webserver/client/source/resource/osparc/tis/manifest.json
@@ -0,0 +1,46 @@
+{
+ "name": "TI Plan",
+ "short_name": "TIP",
+ "icons": [
+ {
+ "src": "./icons/android-icon-36x36.png",
+ "sizes": "36x36",
+ "type": "image/png",
+ "density": "0.75"
+ },
+ {
+ "src": "./icons/android-icon-48x48.png",
+ "sizes": "48x48",
+ "type": "image/png",
+ "density": "1.0"
+ },
+ {
+ "src": "./icons/android-icon-72x72.png",
+ "sizes": "72x72",
+ "type": "image/png",
+ "density": "1.5"
+ },
+ {
+ "src": "./icons/android-icon-96x96.png",
+ "sizes": "96x96",
+ "type": "image/png",
+ "density": "2.0"
+ },
+ {
+ "src": "./icons/android-icon-144x144.png",
+ "sizes": "144x144",
+ "type": "image/png",
+ "density": "3.0"
+ },
+ {
+ "src": "./icons/android-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "density": "4.0"
+ }
+ ],
+ "start_url": ".",
+ "display": "standalone",
+ "theme_color": "#6969FF",
+ "background_color": "#FFFFFF"
+}