{user.icon ?? user.username[0]}
diff --git a/app/routes/resources/manifest[.]json.ts b/app/routes/resources/manifest[.]json.ts
new file mode 100644
index 0000000..34c1a7e
--- /dev/null
+++ b/app/routes/resources/manifest[.]json.ts
@@ -0,0 +1,57 @@
+import { json } from "remix";
+import type { LoaderFunction } from "remix";
+
+export let loader: LoaderFunction = () => {
+ return json(
+ {
+ short_name: "Explit",
+ name: "Explit | Track and split shared expenses with friends and family.",
+ start_url: "/",
+ display: "standalone",
+ background_color: "#22252d",
+ theme_color: "#793ef9",
+ icons: [
+ {
+ src: "/icons/favicon-32x32.png",
+ sizes: "32x32",
+ type: "image/png",
+ density: "0.75",
+ },
+ {
+ src: "/icons/android-icon-48x48.png",
+ sizes: "48x48",
+ type: "image/png",
+ density: "1.0",
+ },
+ {
+ src: "/icons/mstile-70x70.png",
+ sizes: "70x70",
+ type: "image/png",
+ density: "1.5",
+ },
+ {
+ src: "/icons/mstile-144x144.png",
+ sizes: "144x144",
+ type: "image/png",
+ density: "3.0",
+ },
+ {
+ src: "/icons/android-chrome-192x192.png",
+ sizes: "192x192",
+ type: "image/png",
+ density: "4.0",
+ },
+ {
+ src: "/icons/android-chrome-512x512.png",
+ sizes: "512x512",
+ type: "image/png",
+ },
+ ],
+ },
+ {
+ headers: {
+ "Cache-Control": "public, max-age=600",
+ },
+ }
+ );
+};
diff --git a/package.json b/package.json
index ff6b5c6..75e1395 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,9 @@
"scripts": {
"build": "npm run build:css && remix build",
"build:css": "tailwindcss -o ./app/tailwind.css",
- "dev": "concurrently \"npm run dev:css\" \"remix dev\"",
+ "build:worker": "esbuild ./app/entry.worker.ts --outfile=./public/entry.worker.js --minify --bundle --format=esm --define:process.env.NODE_ENV='\"production\"'",
+ "dev": "concurrently \"npm run dev:css\" \"npm run dev:worker\" \"remix dev\"",
+ "dev:worker": "esbuild ./app/entry.worker.ts --outfile=./public/entry.worker.js --bundle --format=esm --define:process.env.NODE_ENV='\"development\"' --watch",
"dev:css": "tailwindcss -o ./app/tailwind.css --watch",
"postinstall": "remix setup node",
"prepare": "husky install",
diff --git a/public/browserconfig.xml b/public/browserconfig.xml
new file mode 100644
index 0000000..b3930d0
--- /dev/null
+++ b/public/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/public/favicon.ico b/public/favicon.ico
index 8830cf6..beb3f0a 100644
Binary files a/public/favicon.ico and b/public/favicon.ico differ
diff --git a/public/icons/android-chrome-192x192.png b/public/icons/android-chrome-192x192.png
new file mode 100644
index 0000000..df7376d
Binary files /dev/null and b/public/icons/android-chrome-192x192.png differ
diff --git a/public/icons/android-chrome-512x512.png b/public/icons/android-chrome-512x512.png
new file mode 100644
index 0000000..652b60f
Binary files /dev/null and b/public/icons/android-chrome-512x512.png differ
diff --git a/public/icons/apple-touch-icon.png b/public/icons/apple-touch-icon.png
new file mode 100644
index 0000000..6951a8b
Binary files /dev/null and b/public/icons/apple-touch-icon.png differ
diff --git a/public/icons/favicon-16x16.png b/public/icons/favicon-16x16.png
new file mode 100644
index 0000000..022af70
Binary files /dev/null and b/public/icons/favicon-16x16.png differ
diff --git a/public/icons/favicon-32x32.png b/public/icons/favicon-32x32.png
new file mode 100644
index 0000000..fd09361
Binary files /dev/null and b/public/icons/favicon-32x32.png differ
diff --git a/public/icons/mstile-144x144.png b/public/icons/mstile-144x144.png
new file mode 100644
index 0000000..d60b519
Binary files /dev/null and b/public/icons/mstile-144x144.png differ
diff --git a/public/icons/mstile-150x150.png b/public/icons/mstile-150x150.png
new file mode 100644
index 0000000..cbe371f
Binary files /dev/null and b/public/icons/mstile-150x150.png differ
diff --git a/public/icons/mstile-310x150.png b/public/icons/mstile-310x150.png
new file mode 100644
index 0000000..411e18f
Binary files /dev/null and b/public/icons/mstile-310x150.png differ
diff --git a/public/icons/mstile-310x310.png b/public/icons/mstile-310x310.png
new file mode 100644
index 0000000..7cd6e8f
Binary files /dev/null and b/public/icons/mstile-310x310.png differ
diff --git a/public/icons/mstile-70x70.png b/public/icons/mstile-70x70.png
new file mode 100644
index 0000000..bab4a2c
Binary files /dev/null and b/public/icons/mstile-70x70.png differ
diff --git a/public/icons/safari-pinned-tab.svg b/public/icons/safari-pinned-tab.svg
new file mode 100644
index 0000000..fe03a4e
--- /dev/null
+++ b/public/icons/safari-pinned-tab.svg
@@ -0,0 +1,40 @@
+
+
+
diff --git a/public/site.webmanifest b/public/site.webmanifest
new file mode 100644
index 0000000..b20abb7
--- /dev/null
+++ b/public/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}