From 35e76e34efb64ec459bfde6c770c82ef5001829b Mon Sep 17 00:00:00 2001
From: Neshura <neshura@neshweb.net>
Date: Fri, 4 Apr 2025 22:08:59 +0200
Subject: [PATCH] Remove Uptime Kuma WS Functionality, Update Site List

---
 src/lib/components/ServerCard.svelte       |  52 +--------
 src/lib/components/ServiceCard.svelte      |  45 +-------
 src/routes/servers/+page.server.ts         |  62 -----------
 src/routes/servers/+page.svelte            |  48 +-------
 src/routes/services/+page.server.ts        |  62 -----------
 src/routes/services/+page.svelte           |  48 +-------
 static/assets/icons/calibre-logo-36.avif   | Bin 1973 -> 0 bytes
 static/assets/icons/calibre-logo.avif      | Bin 3303 -> 0 bytes
 static/assets/icons/calibre-logo.ico       | Bin 61662 -> 0 bytes
 static/assets/icons/chevereto-logo.png     | Bin 0 -> 6812 bytes
 static/assets/icons/element-logo.svg       |   7 --
 static/assets/icons/forgejo-logo.svg       |  40 +++++++
 static/assets/icons/gitlab-logo.svg        |  58 ----------
 static/assets/icons/grafana-logo.svg       |  57 ----------
 static/assets/icons/kavita-logo.svg        | 124 +++++++++++++++++++++
 static/assets/icons/npm-logo-36.avif       | Bin 2275 -> 0 bytes
 static/assets/icons/npm-logo.avif          | Bin 9516 -> 0 bytes
 static/assets/icons/npm-logo.png           | Bin 31064 -> 0 bytes
 static/assets/icons/portainer-logo-36.avif | Bin 1583 -> 0 bytes
 static/assets/icons/portainer-logo.avif    | Bin 5622 -> 0 bytes
 static/assets/icons/portainer-logo.png     | Bin 4253 -> 0 bytes
 static/assets/icons/roundcube-logo.svg     |  15 +++
 static/assets/icons/vaultwarden-logo.svg   |  74 ++++++++++++
 static/data/services.json                  |  64 +++--------
 24 files changed, 271 insertions(+), 485 deletions(-)
 delete mode 100644 src/routes/servers/+page.server.ts
 delete mode 100644 src/routes/services/+page.server.ts
 delete mode 100644 static/assets/icons/calibre-logo-36.avif
 delete mode 100644 static/assets/icons/calibre-logo.avif
 delete mode 100644 static/assets/icons/calibre-logo.ico
 create mode 100644 static/assets/icons/chevereto-logo.png
 delete mode 100644 static/assets/icons/element-logo.svg
 create mode 100644 static/assets/icons/forgejo-logo.svg
 delete mode 100644 static/assets/icons/gitlab-logo.svg
 delete mode 100644 static/assets/icons/grafana-logo.svg
 create mode 100644 static/assets/icons/kavita-logo.svg
 delete mode 100644 static/assets/icons/npm-logo-36.avif
 delete mode 100644 static/assets/icons/npm-logo.avif
 delete mode 100644 static/assets/icons/npm-logo.png
 delete mode 100644 static/assets/icons/portainer-logo-36.avif
 delete mode 100644 static/assets/icons/portainer-logo.avif
 delete mode 100644 static/assets/icons/portainer-logo.png
 create mode 100644 static/assets/icons/roundcube-logo.svg
 create mode 100644 static/assets/icons/vaultwarden-logo.svg

diff --git a/src/lib/components/ServerCard.svelte b/src/lib/components/ServerCard.svelte
index 76cb242..f8b34e1 100644
--- a/src/lib/components/ServerCard.svelte
+++ b/src/lib/components/ServerCard.svelte
@@ -12,11 +12,8 @@
 	let { server, icons, monitor } = $props<{
 		server: Server;
 		icons: Array<string>;
-		monitor?: Heartbeat;
 	}>();
 
-	let status = $state(4);
-
 	let hover = $state({
 		title: false,
 		link: false,
@@ -65,19 +62,7 @@
 </script>
 
 <div
-	class="flex h-48 w-[28rem] flex-col gap-y-3 rounded-xl border-t-4
-		{status == 99
-		? 'border-primary'
-		: status == 0
-			? 'border-offline'
-			: status == 1
-				? 'border-online'
-				: status == 2
-					? 'border-pending'
-					: status == 3
-						? 'border-maintenance'
-						: 'border-maintenance'}
-		z-0 bg-black/55 p-4 backdrop-blur-sm"
+	class="flex h-48 w-[28rem] flex-col gap-y-3 rounded-xl border-t-4 border-secondary z-0 bg-black/55 p-4 backdrop-blur-sm"
 >
 	<div class="flex flex-row justify-between">
 		<div
@@ -114,41 +99,6 @@
 				<h2 class="font-bold">{server.name}</h2>
 			{/if}
 		</div>
-
-		{#if typeof server.id !== 'undefined'}
-			<h1
-				class="w-16 rounded-md border-b-2
-			{status == 0
-					? 'border-offline'
-					: status == 1
-						? 'border-online'
-						: status == 2
-							? 'border-pending'
-							: status == 3
-								? 'border-maintenance'
-								: 'border-maintenance'}
-			text-center text-sm
-			{status == 0
-					? 'text-offline'
-					: status == 1
-						? 'text-online'
-						: status == 2
-							? 'text-pending'
-							: status == 3
-								? 'text-maintenance'
-								: 'text-maintenance'}"
-			>
-				{status == 0
-					? 'Offline'
-					: status == 1
-						? 'Online'
-						: status == 2
-							? 'Pending'
-							: status == 3
-								? 'Maint.'
-								: 'Loading'}
-			</h1>
-		{/if}
 	</div>
 	<p class="text-wrap text-center text-sm">{server.desc}</p>
 	{#if typeof server.connection !== 'undefined'}
diff --git a/src/lib/components/ServiceCard.svelte b/src/lib/components/ServiceCard.svelte
index 86bceb8..8edb54c 100644
--- a/src/lib/components/ServiceCard.svelte
+++ b/src/lib/components/ServiceCard.svelte
@@ -57,17 +57,7 @@
 </script>
 
 <div
-	class="flex h-48 w-[28rem] flex-col gap-y-3 rounded-xl border-t-4
-		{status == 0
-		? 'border-offline'
-		: status == 1
-			? 'border-online'
-			: status == 2
-				? 'border-pending'
-				: status == 3
-					? 'border-maintenance'
-					: 'border-maintenance'}
-		z-0 bg-black/55 p-4 backdrop-blur-sm"
+	class="flex h-48 w-[28rem] flex-col gap-y-3 rounded-xl border-t-4 border-secondary z-0 bg-black/55 p-4 backdrop-blur-sm"
 >
 	<div class="flex flex-row justify-between">
 		<div
@@ -100,39 +90,6 @@
 				</div>
 			{/if}
 		</div>
-
-		<h1
-			class="w-16 rounded-md border-b-2
-			{status == 0
-				? 'border-offline'
-				: status == 1
-					? 'border-online'
-					: status == 2
-						? 'border-pending'
-						: status == 3
-							? 'border-maintenance'
-							: 'border-maintenance'}
-			text-center text-sm
-			{status == 0
-				? 'text-offline'
-				: status == 1
-					? 'text-online'
-					: status == 2
-						? 'text-pending'
-						: status == 3
-							? 'text-maintenance'
-							: 'text-maintenance'}"
-		>
-			{status == 0
-				? 'Offline'
-				: status == 1
-					? 'Online'
-					: status == 2
-						? 'Pending'
-						: status == 3
-							? 'Maint.'
-							: 'Loading'}
-		</h1>
 	</div>
 	<p class="text-wrap text-center text-sm">{service.desc}</p>
 	<p class="text-center text-sm font-bold text-destructive">{service.warn}</p>
diff --git a/src/routes/servers/+page.server.ts b/src/routes/servers/+page.server.ts
deleted file mode 100644
index f9ba6b5..0000000
--- a/src/routes/servers/+page.server.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { io, Socket } from 'socket.io-client';
-import * as fs from 'fs';
-
-export async function load() {
-	const promise = getJwt();
-
-	return {
-		promise
-	};
-}
-
-async function getJwt(): Promise<string> {
-	const socket = io('https://status.neshweb.net/');
-	const credFile = './credentials.json';
-	let token = '';
-	let valid = false;
-
-	if (fs.existsSync(credFile)) {
-		const content = fs.readFileSync(credFile);
-		token = content.toString();
-	}
-
-	socket.on('connect', async () => {
-		if (token == '') {
-			token = await login(socket);
-			valid = true;
-		} else {
-			socket.emit('loginByToken', token, async (res) => {
-				if (!res.ok) {
-					token = await login(socket);
-				}
-				valid = true;
-			});
-		}
-	});
-
-	while (!valid) {
-		await new Promise((resolve) => setTimeout(resolve, 10));
-	}
-
-	fs.writeFileSync(credFile, token);
-
-	return token;
-}
-
-async function login(socket: Socket): Promise<string> {
-	let token = '';
-	socket.emit(
-		'login',
-		{ username: process.env.KUMA_USERNAME, password: process.env.KUMA_PASSWORD, token: '' },
-		(res: { token: string }) => {
-			token = res.token;
-			socket.close();
-		}
-	);
-
-	while (token == '') {
-		await new Promise((resolve) => setTimeout(resolve, 10));
-	}
-
-	return token;
-}
diff --git a/src/routes/servers/+page.svelte b/src/routes/servers/+page.svelte
index b1a6ab6..5479ef8 100644
--- a/src/routes/servers/+page.svelte
+++ b/src/routes/servers/+page.svelte
@@ -8,56 +8,10 @@
 	import { socketStore } from '$lib/stores/socketStore';
 	import { uptimeStore } from '$lib/stores/uptimeStore';
 
-	let { data }: { data: { promise: Promise<string> } } = $props();
-
-	let token = $state();
-
-	data.promise.then((jwt) => {
-		token = jwt;
-	});
-
 	let servers: readonly Server[] = $state.frozen([]);
 
 	let icons: readonly string[] = $state.frozen([]);
 
-	let monitorList = $state($uptimeStore);
-
-	let socket = $socketStore;
-
-	$effect(() => {
-		if (token) {
-			if (!socket.connected) {
-				socket.connect();
-			}
-
-			socket.on('connect', () => {
-				socket.emit('loginByToken', token, () => {});
-			});
-
-			socket.on('heartbeatList', (_, data) => {
-				let recent = data[data.length - 1];
-				let monitor: Heartbeat = {
-					monitorID: recent.monitor_id,
-					status: recent.status,
-					time: recent.time,
-					msg: recent.msg,
-					ping: recent.ping,
-					important: recent.important,
-					duration: recent.duration
-				};
-				monitorList.set(monitor.monitorID, monitor);
-				monitorList = new Map(monitorList.entries());
-				$uptimeStore = monitorList;
-			});
-
-			socket.on('heartbeat', (data) => {
-				monitorList.set(data.monitorID, data);
-				monitorList = new Map(monitorList.entries());
-				$uptimeStore = monitorList;
-			});
-		}
-	});
-
 	async function get(url: string): Promise<any> {
 		let res = await fetch(url);
 		if (res.ok) {
@@ -91,7 +45,7 @@
 		{#if typeof server.id === 'undefined'}
 			<ServerCard {server} {icons} />
 		{:else}
-			<ServerCard {server} {icons} monitor={monitorList.get(server.id)} />
+			<ServerCard {server} {icons} />
 		{/if}
 	{/each}
 </div>
diff --git a/src/routes/services/+page.server.ts b/src/routes/services/+page.server.ts
deleted file mode 100644
index f9ba6b5..0000000
--- a/src/routes/services/+page.server.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { io, Socket } from 'socket.io-client';
-import * as fs from 'fs';
-
-export async function load() {
-	const promise = getJwt();
-
-	return {
-		promise
-	};
-}
-
-async function getJwt(): Promise<string> {
-	const socket = io('https://status.neshweb.net/');
-	const credFile = './credentials.json';
-	let token = '';
-	let valid = false;
-
-	if (fs.existsSync(credFile)) {
-		const content = fs.readFileSync(credFile);
-		token = content.toString();
-	}
-
-	socket.on('connect', async () => {
-		if (token == '') {
-			token = await login(socket);
-			valid = true;
-		} else {
-			socket.emit('loginByToken', token, async (res) => {
-				if (!res.ok) {
-					token = await login(socket);
-				}
-				valid = true;
-			});
-		}
-	});
-
-	while (!valid) {
-		await new Promise((resolve) => setTimeout(resolve, 10));
-	}
-
-	fs.writeFileSync(credFile, token);
-
-	return token;
-}
-
-async function login(socket: Socket): Promise<string> {
-	let token = '';
-	socket.emit(
-		'login',
-		{ username: process.env.KUMA_USERNAME, password: process.env.KUMA_PASSWORD, token: '' },
-		(res: { token: string }) => {
-			token = res.token;
-			socket.close();
-		}
-	);
-
-	while (token == '') {
-		await new Promise((resolve) => setTimeout(resolve, 10));
-	}
-
-	return token;
-}
diff --git a/src/routes/services/+page.svelte b/src/routes/services/+page.svelte
index 36afcdf..2f36d21 100644
--- a/src/routes/services/+page.svelte
+++ b/src/routes/services/+page.svelte
@@ -9,56 +9,10 @@
 	import { onDestroy } from 'svelte';
 	import { uptimeStore } from '$lib/stores/uptimeStore';
 
-	let { data }: { data: { promise: Promise<string> } } = $props();
-
-	let token = $state();
-
-	data.promise.then((jwt) => {
-		token = jwt;
-	});
-
 	let services: readonly Service[] = $state.frozen([]);
 
 	let icons: readonly string[] = $state.frozen([]);
 
-	let monitorList = $state($uptimeStore);
-
-	let socket = $socketStore;
-
-	$effect(() => {
-		if (token) {
-			if (!socket.connected) {
-				socket.connect();
-			}
-
-			socket.on('connect', () => {
-				socket.emit('loginByToken', token, () => {});
-			});
-
-			socket.on('heartbeatList', (_, data) => {
-				let recent = data[data.length - 1];
-				let monitor: Heartbeat = {
-					monitorID: recent.monitor_id,
-					status: recent.status,
-					time: recent.time,
-					msg: recent.msg,
-					ping: recent.ping,
-					important: recent.important,
-					duration: recent.duration
-				};
-				monitorList.set(monitor.monitorID, monitor);
-				monitorList = new Map(monitorList.entries());
-				$uptimeStore = monitorList;
-			});
-
-			socket.on('heartbeat', (data) => {
-				monitorList.set(data.monitorID, data);
-				monitorList = new Map(monitorList.entries());
-				$uptimeStore = monitorList;
-			});
-		}
-	});
-
 	async function get(url: string): Promise<any> {
 		let res = await fetch(url);
 		if (res.ok) {
@@ -89,6 +43,6 @@
 
 <div class="flex max-h-full flex-row flex-wrap justify-center gap-10 overflow-auto p-8">
 	{#each services as service}
-		<ServiceCard {service} {icons} monitor={monitorList.get(service.id)} />
+		<ServiceCard {service} {icons} />
 	{/each}
 </div>
diff --git a/static/assets/icons/calibre-logo-36.avif b/static/assets/icons/calibre-logo-36.avif
deleted file mode 100644
index 701b81a3f6824295e5c27ea5a8c5a2ff00744f11..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1973
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

diff --git a/static/assets/icons/calibre-logo.avif b/static/assets/icons/calibre-logo.avif
deleted file mode 100644
index 060df19973e793a2b425b07d5f2052797dbe33be..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3303
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
I*wEeo0_QFHGXMYp

diff --git a/static/assets/icons/calibre-logo.ico b/static/assets/icons/calibre-logo.ico
deleted file mode 100644
index 0774d0f94d01704f2df3ad0218ff178601d7c9d9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 61662
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
M$76zV&X{4`|4w_(IsgCw

diff --git a/static/assets/icons/chevereto-logo.png b/static/assets/icons/chevereto-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..92dc1e04bbd81297bb0293c628686168d70e616d
GIT binary patch
literal 6812
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

literal 0
HcmV?d00001

diff --git a/static/assets/icons/element-logo.svg b/static/assets/icons/element-logo.svg
deleted file mode 100644
index 54a91b7..0000000
--- a/static/assets/icons/element-logo.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path fill-rule="evenodd" clip-rule="evenodd" d="M100 200C155.228 200 200 155.228 200 100C200 44.7715 155.228 0 100 0C44.7715 0 0 44.7715 0 100C0 155.228 44.7715 200 100 200Z" fill="#0DBD8B"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M81.7169 46.5946C81.7169 42.5581 84.9959 39.2859 89.0408 39.2859C116.456 39.2859 138.681 61.4642 138.681 88.8225C138.681 92.859 135.401 96.1312 131.357 96.1312C127.312 96.1312 124.033 92.859 124.033 88.8225C124.033 69.5372 108.366 53.9033 89.0408 53.9033C84.9959 53.9033 81.7169 50.6311 81.7169 46.5946Z" fill="white"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M153.39 81.5137C157.435 81.5137 160.714 84.7859 160.714 88.8224C160.714 116.181 138.49 138.359 111.075 138.359C107.03 138.359 103.751 135.087 103.751 131.05C103.751 127.014 107.03 123.742 111.075 123.742C130.4 123.742 146.066 108.108 146.066 88.8224C146.066 84.7859 149.345 81.5137 153.39 81.5137Z" fill="white"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M118.398 153.405C118.398 157.442 115.119 160.714 111.074 160.714C83.6592 160.714 61.4347 138.536 61.4347 111.177C61.4347 107.141 64.7138 103.869 68.7587 103.869C72.8035 103.869 76.0826 107.141 76.0826 111.177C76.0826 130.463 91.7489 146.097 111.074 146.097C115.119 146.097 118.398 149.369 118.398 153.405Z" fill="white"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M46.6097 118.486C42.5648 118.486 39.2858 115.214 39.2858 111.178C39.2858 83.8193 61.5102 61.6409 88.9255 61.6409C92.9704 61.6409 96.2494 64.9132 96.2494 68.9497C96.2494 72.9862 92.9704 76.2584 88.9255 76.2584C69.6 76.2584 53.9337 91.8922 53.9337 111.178C53.9337 115.214 50.6546 118.486 46.6097 118.486Z" fill="white"/>
-</svg>
diff --git a/static/assets/icons/forgejo-logo.svg b/static/assets/icons/forgejo-logo.svg
new file mode 100644
index 0000000..9c390e9
--- /dev/null
+++ b/static/assets/icons/forgejo-logo.svg
@@ -0,0 +1,40 @@
+<svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg">
+  <metadata
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+  >
+    <rdf:RDF>
+      <cc:Work rdf:about="https://codeberg.org/forgejo/governance/src/branch/main/branding#logo">
+        <dc:title>Forgejo logo</dc:title>
+        <cc:creator rdf:resource="https://caesarschinas.com/"><cc:attributionName>Caesar Schinas</cc:attributionName></cc:creator>
+        <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <style type="text/css">
+    circle {
+      fill: none;
+      stroke: #000;
+      stroke-width: 15;
+    }
+    path {
+      fill: none;
+      stroke: #000;
+      stroke-width: 25;
+    }
+    .orange {
+      stroke:#ff6600;
+    }
+    .red {
+      stroke:#d40000;
+    }
+  </style>
+  <g transform="translate(28,28)">
+    <path d="M58 168 v-98 a50 50 0 0 1 50-50 h20" class="orange" />
+    <path d="M58 168 v-30 a50 50 0 0 1 50-50 h20" class="red" />
+    <circle cx="142" cy="20" r="18" class="orange" />
+    <circle cx="142" cy="88" r="18" class="red" />
+    <circle cx="58" cy="180" r="18" class="red" />
+  </g>
+</svg>
diff --git a/static/assets/icons/gitlab-logo.svg b/static/assets/icons/gitlab-logo.svg
deleted file mode 100644
index 5fabd74..0000000
--- a/static/assets/icons/gitlab-logo.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   viewBox="-4 -8 200 200.00003"
-   version="1.1"
-   id="svg15"
-   sodipodi:docname="gitlab-logo.svg"
-   width="200"
-   height="200"
-   inkscape:version="1.2.1 (9c6d41e410, 2022-07-14, custom)"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:svg="http://www.w3.org/2000/svg">
-  <sodipodi:namedview
-     id="namedview17"
-     pagecolor="#505050"
-     bordercolor="#eeeeee"
-     borderopacity="1"
-     inkscape:showpageshadow="0"
-     inkscape:pageopacity="0"
-     inkscape:pagecheckerboard="0"
-     inkscape:deskcolor="#505050"
-     showgrid="false"
-     inkscape:zoom="2.7026316"
-     inkscape:cx="95.832522"
-     inkscape:cy="92.132425"
-     inkscape:window-width="2560"
-     inkscape:window-height="1391"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     inkscape:current-layer="svg15" />
-  <defs
-     id="defs4">
-    <style
-       id="style2">.cls-1{fill:#e24329;}.cls-2{fill:#fc6d26;}.cls-3{fill:#fca326;}</style>
-  </defs>
-  <g
-     id="LOGO"
-     transform="translate(-93.973245,-97.517263)">
-    <path
-       class="cls-1"
-       d="m 282.83,170.73 -0.27,-0.69 -26.14,-68.22 a 6.81,6.81 0 0 0 -2.69,-3.24 7,7 0 0 0 -8,0.43 7,7 0 0 0 -2.32,3.52 l -17.65,54 h -71.47 l -17.65,-54 a 6.86,6.86 0 0 0 -2.32,-3.53 7,7 0 0 0 -8,-0.43 6.87,6.87 0 0 0 -2.69,3.24 L 97.44,170 l -0.26,0.69 a 48.54,48.54 0 0 0 16.1,56.1 l 0.09,0.07 0.24,0.17 39.82,29.82 19.7,14.91 12,9.06 a 8.07,8.07 0 0 0 9.76,0 l 12,-9.06 19.7,-14.91 40.06,-30 0.1,-0.08 a 48.56,48.56 0 0 0 16.08,-56.04 z"
-       id="path6" />
-    <path
-       class="cls-2"
-       d="m 282.83,170.73 -0.27,-0.69 a 88.3,88.3 0 0 0 -35.15,15.8 L 190,229.25 c 19.55,14.79 36.57,27.64 36.57,27.64 l 40.06,-30 0.1,-0.08 a 48.56,48.56 0 0 0 16.1,-56.08 z"
-       id="path8" />
-    <path
-       class="cls-3"
-       d="m 153.43,256.89 19.7,14.91 12,9.06 a 8.07,8.07 0 0 0 9.76,0 l 12,-9.06 19.7,-14.91 c 0,0 -17.04,-12.89 -36.59,-27.64 -19.55,14.75 -36.57,27.64 -36.57,27.64 z"
-       id="path10" />
-    <path
-       class="cls-2"
-       d="M 132.58,185.84 A 88.19,88.19 0 0 0 97.44,170 l -0.26,0.69 a 48.54,48.54 0 0 0 16.1,56.1 l 0.09,0.07 0.24,0.17 39.82,29.82 c 0,0 17,-12.85 36.57,-27.64 z"
-       id="path12" />
-  </g>
-</svg>
diff --git a/static/assets/icons/grafana-logo.svg b/static/assets/icons/grafana-logo.svg
deleted file mode 100644
index e91f3ab..0000000
--- a/static/assets/icons/grafana-logo.svg
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="351px" height="365px" viewBox="0 0 351 365" style="enable-background:new 0 0 351 365;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:url(#SVGID_1_);}
-</style>
-<g id="Layer_1_1_">
-</g>
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="175.5" y1="30%" x2="175.5" y2="99%">
-	<stop  offset="0" style="stop-color:#F05A28"/>
-	<stop  offset="1" style="stop-color:#FBCA0A"/>
-</linearGradient>
-<path class="st0" d="M342,161.2c-0.6-6.1-1.6-13.1-3.6-20.9c-2-7.7-5-16.2-9.4-25c-4.4-8.8-10.1-17.9-17.5-26.8
-	c-2.9-3.5-6.1-6.9-9.5-10.2c5.1-20.3-6.2-37.9-6.2-37.9c-19.5-1.2-31.9,6.1-36.5,9.4c-0.8-0.3-1.5-0.7-2.3-1
-	c-3.3-1.3-6.7-2.6-10.3-3.7c-3.5-1.1-7.1-2.1-10.8-3c-3.7-0.9-7.4-1.6-11.2-2.2c-0.7-0.1-1.3-0.2-2-0.3
-	c-8.5-27.2-32.9-38.6-32.9-38.6c-27.3,17.3-32.4,41.5-32.4,41.5s-0.1,0.5-0.3,1.4c-1.5,0.4-3,0.9-4.5,1.3c-2.1,0.6-4.2,1.4-6.2,2.2
-	c-2.1,0.8-4.1,1.6-6.2,2.5c-4.1,1.8-8.2,3.8-12.2,6c-3.9,2.2-7.7,4.6-11.4,7.1c-0.5-0.2-1-0.4-1-0.4c-37.8-14.4-71.3,2.9-71.3,2.9
-	c-3.1,40.2,15.1,65.5,18.7,70.1c-0.9,2.5-1.7,5-2.5,7.5c-2.8,9.1-4.9,18.4-6.2,28.1c-0.2,1.4-0.4,2.8-0.5,4.2
-	C18.8,192.7,8.5,228,8.5,228c29.1,33.5,63.1,35.6,63.1,35.6c0,0,0.1-0.1,0.1-0.1c4.3,7.7,9.3,15,14.9,21.9c2.4,2.9,4.8,5.6,7.4,8.3
-	c-10.6,30.4,1.5,55.6,1.5,55.6c32.4,1.2,53.7-14.2,58.2-17.7c3.2,1.1,6.5,2.1,9.8,2.9c10,2.6,20.2,4.1,30.4,4.5
-	c2.5,0.1,5.1,0.2,7.6,0.1l1.2,0l0.8,0l1.6,0l1.6-0.1l0,0.1c15.3,21.8,42.1,24.9,42.1,24.9c19.1-20.1,20.2-40.1,20.2-44.4l0,0
-	c0,0,0-0.1,0-0.3c0-0.4,0-0.6,0-0.6l0,0c0-0.3,0-0.6,0-0.9c4-2.8,7.8-5.8,11.4-9.1c7.6-6.9,14.3-14.8,19.9-23.3
-	c0.5-0.8,1-1.6,1.5-2.4c21.6,1.2,36.9-13.4,36.9-13.4c-3.6-22.5-16.4-33.5-19.1-35.6l0,0c0,0-0.1-0.1-0.3-0.2
-	c-0.2-0.1-0.2-0.2-0.2-0.2c0,0,0,0,0,0c-0.1-0.1-0.3-0.2-0.5-0.3c0.1-1.4,0.2-2.7,0.3-4.1c0.2-2.4,0.2-4.9,0.2-7.3l0-1.8l0-0.9
-	l0-0.5c0-0.6,0-0.4,0-0.6l-0.1-1.5l-0.1-2c0-0.7-0.1-1.3-0.2-1.9c-0.1-0.6-0.1-1.3-0.2-1.9l-0.2-1.9l-0.3-1.9
-	c-0.4-2.5-0.8-4.9-1.4-7.4c-2.3-9.7-6.1-18.9-11-27.2c-5-8.3-11.2-15.6-18.3-21.8c-7-6.2-14.9-11.2-23.1-14.9
-	c-8.3-3.7-16.9-6.1-25.5-7.2c-4.3-0.6-8.6-0.8-12.9-0.7l-1.6,0l-0.4,0c-0.1,0-0.6,0-0.5,0l-0.7,0l-1.6,0.1c-0.6,0-1.2,0.1-1.7,0.1
-	c-2.2,0.2-4.4,0.5-6.5,0.9c-8.6,1.6-16.7,4.7-23.8,9c-7.1,4.3-13.3,9.6-18.3,15.6c-5,6-8.9,12.7-11.6,19.6c-2.7,6.9-4.2,14.1-4.6,21
-	c-0.1,1.7-0.1,3.5-0.1,5.2c0,0.4,0,0.9,0,1.3l0.1,1.4c0.1,0.8,0.1,1.7,0.2,2.5c0.3,3.5,1,6.9,1.9,10.1c1.9,6.5,4.9,12.4,8.6,17.4
-	c3.7,5,8.2,9.1,12.9,12.4c4.7,3.2,9.8,5.5,14.8,7c5,1.5,10,2.1,14.7,2.1c0.6,0,1.2,0,1.7,0c0.3,0,0.6,0,0.9,0c0.3,0,0.6,0,0.9-0.1
-	c0.5,0,1-0.1,1.5-0.1c0.1,0,0.3,0,0.4-0.1l0.5-0.1c0.3,0,0.6-0.1,0.9-0.1c0.6-0.1,1.1-0.2,1.7-0.3c0.6-0.1,1.1-0.2,1.6-0.4
-	c1.1-0.2,2.1-0.6,3.1-0.9c2-0.7,4-1.5,5.7-2.4c1.8-0.9,3.4-2,5-3c0.4-0.3,0.9-0.6,1.3-1c1.6-1.3,1.9-3.7,0.6-5.3
-	c-1.1-1.4-3.1-1.8-4.7-0.9c-0.4,0.2-0.8,0.4-1.2,0.6c-1.4,0.7-2.8,1.3-4.3,1.8c-1.5,0.5-3.1,0.9-4.7,1.2c-0.8,0.1-1.6,0.2-2.5,0.3
-	c-0.4,0-0.8,0.1-1.3,0.1c-0.4,0-0.9,0-1.2,0c-0.4,0-0.8,0-1.2,0c-0.5,0-1,0-1.5-0.1c0,0-0.3,0-0.1,0l-0.2,0l-0.3,0
-	c-0.2,0-0.5,0-0.7-0.1c-0.5-0.1-0.9-0.1-1.4-0.2c-3.7-0.5-7.4-1.6-10.9-3.2c-3.6-1.6-7-3.8-10.1-6.6c-3.1-2.8-5.8-6.1-7.9-9.9
-	c-2.1-3.8-3.6-8-4.3-12.4c-0.3-2.2-0.5-4.5-0.4-6.7c0-0.6,0.1-1.2,0.1-1.8c0,0.2,0-0.1,0-0.1l0-0.2l0-0.5c0-0.3,0.1-0.6,0.1-0.9
-	c0.1-1.2,0.3-2.4,0.5-3.6c1.7-9.6,6.5-19,13.9-26.1c1.9-1.8,3.9-3.4,6-4.9c2.1-1.5,4.4-2.8,6.8-3.9c2.4-1.1,4.8-2,7.4-2.7
-	c2.5-0.7,5.1-1.1,7.8-1.4c1.3-0.1,2.6-0.2,4-0.2c0.4,0,0.6,0,0.9,0l1.1,0l0.7,0c0.3,0,0,0,0.1,0l0.3,0l1.1,0.1
-	c2.9,0.2,5.7,0.6,8.5,1.3c5.6,1.2,11.1,3.3,16.2,6.1c10.2,5.7,18.9,14.5,24.2,25.1c2.7,5.3,4.6,11,5.5,16.9c0.2,1.5,0.4,3,0.5,4.5
-	l0.1,1.1l0.1,1.1c0,0.4,0,0.8,0,1.1c0,0.4,0,0.8,0,1.1l0,1l0,1.1c0,0.7-0.1,1.9-0.1,2.6c-0.1,1.6-0.3,3.3-0.5,4.9
-	c-0.2,1.6-0.5,3.2-0.8,4.8c-0.3,1.6-0.7,3.2-1.1,4.7c-0.8,3.1-1.8,6.2-3,9.3c-2.4,6-5.6,11.8-9.4,17.1
-	c-7.7,10.6-18.2,19.2-30.2,24.7c-6,2.7-12.3,4.7-18.8,5.7c-3.2,0.6-6.5,0.9-9.8,1l-0.6,0l-0.5,0l-1.1,0l-1.6,0l-0.8,0
-	c0.4,0-0.1,0-0.1,0l-0.3,0c-1.8,0-3.5-0.1-5.3-0.3c-7-0.5-13.9-1.8-20.7-3.7c-6.7-1.9-13.2-4.6-19.4-7.8
-	c-12.3-6.6-23.4-15.6-32-26.5c-4.3-5.4-8.1-11.3-11.2-17.4c-3.1-6.1-5.6-12.6-7.4-19.1c-1.8-6.6-2.9-13.3-3.4-20.1l-0.1-1.3l0-0.3
-	l0-0.3l0-0.6l0-1.1l0-0.3l0-0.4l0-0.8l0-1.6l0-0.3c0,0,0,0.1,0-0.1l0-0.6c0-0.8,0-1.7,0-2.5c0.1-3.3,0.4-6.8,0.8-10.2
-	c0.4-3.4,1-6.9,1.7-10.3c0.7-3.4,1.5-6.8,2.5-10.2c1.9-6.7,4.3-13.2,7.1-19.3c5.7-12.2,13.1-23.1,22-31.8c2.2-2.2,4.5-4.2,6.9-6.2
-	c2.4-1.9,4.9-3.7,7.5-5.4c2.5-1.7,5.2-3.2,7.9-4.6c1.3-0.7,2.7-1.4,4.1-2c0.7-0.3,1.4-0.6,2.1-0.9c0.7-0.3,1.4-0.6,2.1-0.9
-	c2.8-1.2,5.7-2.2,8.7-3.1c0.7-0.2,1.5-0.4,2.2-0.7c0.7-0.2,1.5-0.4,2.2-0.6c1.5-0.4,3-0.8,4.5-1.1c0.7-0.2,1.5-0.3,2.3-0.5
-	c0.8-0.2,1.5-0.3,2.3-0.5c0.8-0.1,1.5-0.3,2.3-0.4l1.1-0.2l1.2-0.2c0.8-0.1,1.5-0.2,2.3-0.3c0.9-0.1,1.7-0.2,2.6-0.3
-	c0.7-0.1,1.9-0.2,2.6-0.3c0.5-0.1,1.1-0.1,1.6-0.2l1.1-0.1l0.5-0.1l0.6,0c0.9-0.1,1.7-0.1,2.6-0.2l1.3-0.1c0,0,0.5,0,0.1,0l0.3,0
-	l0.6,0c0.7,0,1.5-0.1,2.2-0.1c2.9-0.1,5.9-0.1,8.8,0c5.8,0.2,11.5,0.9,17,1.9c11.1,2.1,21.5,5.6,31,10.3
-	c9.5,4.6,17.9,10.3,25.3,16.5c0.5,0.4,0.9,0.8,1.4,1.2c0.4,0.4,0.9,0.8,1.3,1.2c0.9,0.8,1.7,1.6,2.6,2.4c0.9,0.8,1.7,1.6,2.5,2.4
-	c0.8,0.8,1.6,1.6,2.4,2.5c3.1,3.3,6,6.6,8.6,10c5.2,6.7,9.4,13.5,12.7,19.9c0.2,0.4,0.4,0.8,0.6,1.2c0.2,0.4,0.4,0.8,0.6,1.2
-	c0.4,0.8,0.8,1.6,1.1,2.4c0.4,0.8,0.7,1.5,1.1,2.3c0.3,0.8,0.7,1.5,1,2.3c1.2,3,2.4,5.9,3.3,8.6c1.5,4.4,2.6,8.3,3.5,11.7
-	c0.3,1.4,1.6,2.3,3,2.1c1.5-0.1,2.6-1.3,2.6-2.8C342.6,170.4,342.5,166.1,342,161.2z"/>
-</svg>
diff --git a/static/assets/icons/kavita-logo.svg b/static/assets/icons/kavita-logo.svg
new file mode 100644
index 0000000..f56f8a7
--- /dev/null
+++ b/static/assets/icons/kavita-logo.svg
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
+<g>
+	<g>
+		<g>
+			<path fill="#4AC694" d="M32,0c17.7,0,32,14.3,32,32S49.7,64,32,64S0,49.7,0,32S14.3,0,32,0z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#424C72" d="M52,17H12c-0.6,0-1,0.4-1,1v30c0,0.6,0.4,1,1,1h14.3c1,0,1.9,0.4,2.4,1.2c0.7,1.1,1.9,1.8,3.3,1.8
+				s2.6-0.7,3.3-1.8c0.5-0.8,1.5-1.2,2.4-1.2H52c0.6,0,1-0.4,1-1V18C53,17.4,52.6,17,52,17z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M14,28v18h16c1.1,0,2,0.9,2,2c0-1.1,0.9-2,2-2h16V28H14z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#FFFFFF" d="M35,13c-1.7,0-3,1.3-3,3c0-1.7-1.3-3-3-3H14v31h16c1.1,0,2,0.9,2,2c0-1.1,0.9-2,2-2h16V13H35z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<rect x="18" y="16" fill="#57D1F7" width="4" height="7"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M29,26.5H18c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S29.3,26.5,29,26.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M29,23.5h-4.4c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5H29c0.3,0,0.5,0.2,0.5,0.5S29.3,23.5,29,23.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M29,20.5h-4.4c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5H29c0.3,0,0.5,0.2,0.5,0.5S29.3,20.5,29,20.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M29,17.5h-4.4c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5H29c0.3,0,0.5,0.2,0.5,0.5S29.3,17.5,29,17.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M29,29.5H18c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S29.3,29.5,29,29.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M29,32.5H18c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S29.3,32.5,29,32.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M29,35.5H18c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S29.3,35.5,29,35.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M29,38.5H18c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S29.3,38.5,29,38.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M29,41.5H18c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S29.3,41.5,29,41.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M46,26.5H35c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S46.3,26.5,46,26.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M46,29.5H35c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S46.3,29.5,46,29.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M46,20.5H35c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S46.3,20.5,46,20.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M46,17.5H35c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S46.3,17.5,46,17.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M46,23.5H35c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S46.3,23.5,46,23.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M46,32.5H35c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S46.3,32.5,46,32.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M46,35.5H35c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S46.3,35.5,46,35.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M46,38.5H35c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S46.3,38.5,46,38.5z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<path fill="#E4E7EF" d="M46,41.5H35c-0.3,0-0.5-0.2-0.5-0.5s0.2-0.5,0.5-0.5h11c0.3,0,0.5,0.2,0.5,0.5S46.3,41.5,46,41.5z"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/static/assets/icons/npm-logo-36.avif b/static/assets/icons/npm-logo-36.avif
deleted file mode 100644
index ea9642eceb8cb45118813ecd974cf0a385e746de..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2275
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
A=Kufz

diff --git a/static/assets/icons/npm-logo.avif b/static/assets/icons/npm-logo.avif
deleted file mode 100644
index 69fe17e150419957f08ee1ab3a77d947980aa213..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9516
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
Tmf!Lz?9%t837~#4zNh*>3?C0Y

diff --git a/static/assets/icons/npm-logo.png b/static/assets/icons/npm-logo.png
deleted file mode 100644
index 2bfb661dc875a8a6ec14f8e157ba568f2bdb4763..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 31064
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

diff --git a/static/assets/icons/portainer-logo-36.avif b/static/assets/icons/portainer-logo-36.avif
deleted file mode 100644
index ac045d4b5ede0cd5395da54fecaba9c7109094a4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1583
zcmaJ=eNYr-7=La#;G_dCKr{vm4GBboL&uz(5f7vhh=jqzRLa=fyMv|MyPdrQWK;?!
zKKjs3ND0A!&|n(KX+UyJnm}ZRaV#<8Bf=RiCMF=2k0Kelo_7zzKcHu4cYp8ieSYur
z?(caQ0Q?QsJf6;B4S+%39BWW=ERAESlG9sh!egw@)ENZ_1mIc5x`-Fw9z1L1#DN5#
zTUn!-A){C|P<UZTQ-RE2NDeuWbIT$FN0HvnvL<mGV*Y9z=tUu_=$r^8Q7(}<vp_oW
zEHCf?P6;f}m;tCJ#%vUL!HjEBwMK@sNYwzG$ttAmjtSU*;9!93DAtw08t{O1G-KhT
zlamw4>dVJpeU4rJ7)I7wK4(SNU8lF850U`PP&2%Mwn@?vZ_Bmv1b>3qhsmUMh?@{^
z7I1@z2MDiq;BkU8L@fH@BWO}~;kWr9ACU0`);@umOaZ$=ZN;2G9cRMzsr?SDBbfLd
z$QiT69w8>3k?T#VdkK%XKkSBhcomW%0JM+|EEvHGVfZ#7V}TT$k6A(QC+d??r9~AB
z3@T#53>?s+9!L)`2V==wi(yNoNJ-=|0M2*p_Nk2kuH^uaZFc)yo!$QUGwks%0N<IG
z^yXSTHZ#cEmbkzg0MB;;+PaoFZ3V#BB>-y&d0L>wI!^ec40uK+8vxu70C?X7a7%Oe
zhI3>d>iYpS=vCqkfXXufK^eIA>nnV>3<dxB_P;p`{$akH&Qb0vKpBP)YvJ_-V2~b=
z8~>`qEFmOh_3d=_VeC9WwqR0mygoyG#HbjS;Z>GAi&f8ARG7mWSz5?b(MCQ~{Mdym
zaw1)>iej;flT1eHJj?Q&!zJ_xBvMJSs|+Y<p_8--XZ=_~@Ayw~e^|{(a>xmi+~ah#
z)eGEQ)~;rb7pWtADQ~rGy?QwOXN_j)NKgDLlG7y}F7~D~fo)^ikCOc5FBqTS9C*9M
z(^}cNrg8Yagvc8+m#=l{^%_@Bdcytm<*DR^=Vq(r4^L&-!zapT_H2uL*g80)jVkco
z)S<Z_eAUgR;7Ejag6+FlrkYZWtEb2RjGi70&JNO5l+8ESR1aSmtLmw|I27XBruXw}
zpY1+BayBvC`I6~}KSm!+P3O%QoN5};w$`<ll%EZJXW}<!zVwTq4#^vRm7{y4f6u)%
zTKbPi)wLHr&#elOwOi)$_u0OsJwvBL57yt+Z*rZBIpKXJq*8Iqs_nCVP(lTTq&Bwa
zziHT*t8w{Q@_YS2)^&GNbxZ$M>W!JV<YhrZYG0DgD?Mi4?dZnBEc5&K@^Uv^y3;><
z>**Hi<gwyrpQ08`#L48A;J&b^vB=)xy3Y2I9p!w{uiqR^Xq%+s^1o`HMt4^ccMB;$
zcUdGCdlL%L;i2mdURtW5bY1t`^SylDg-P!jW#~s6?suBw=Fb(Yk9T`qsp@E`{64c+
zWm9;Yp4sV6o%i~(=YcFOKB~56OTVIP@BGW3-t}#pYaW;$*zr_hdfBlyxjjv>^U-Sw
O<yqRU4?j<;u>A`dx1{U<

diff --git a/static/assets/icons/portainer-logo.avif b/static/assets/icons/portainer-logo.avif
deleted file mode 100644
index 256bf2cac68b667fb7b96370ad45d4beab01543f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5622
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
N;!w2WwZZGK{{fkyV&MP)

diff --git a/static/assets/icons/portainer-logo.png b/static/assets/icons/portainer-logo.png
deleted file mode 100644
index b4bfd2924fd4ebd5f2834a4fdcf2d6719b15f0d0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4253
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

diff --git a/static/assets/icons/roundcube-logo.svg b/static/assets/icons/roundcube-logo.svg
new file mode 100644
index 0000000..04238a0
--- /dev/null
+++ b/static/assets/icons/roundcube-logo.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="9.14 141.8 573.65 573.65">
+<style type="text/css">
+.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#404F54;}
+.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#E5E5E5;}
+.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#CCCCCC;}
+.st3{fill-rule:evenodd;clip-rule:evenodd;fill:#37BEFF;}
+</style>
+<polygon class="st3" points="582.79,549.77 295.96,384.1 295.96,207.27 582.79,372.95 "/>
+<polygon class="st0" points="9.14,549.77 295.96,384.1 295.96,207.27 9.14,372.95 "/>
+<path class="st2" d="M295.96,141.8c109.56,0,198.41,88.85,198.41,198.41c0,109.56-88.85,198.41-198.41,198.41 c-109.56,0-198.41-88.85-198.41-198.41C97.55,230.65,186.4,141.8,295.96,141.8"/>
+<path class="st1" d="M295.96,141.8c109.6,0,198.48,88.85,198.48,198.41c0,109.56-88.88,198.41-198.48,198.41 c-62.91-42.34-88.94-127.64-88.94-198.3S233.05,184.22,295.96,141.8"/>
+<polygon class="st3" points="582.79,372.95 295.96,538.62 295.96,715.45 582.79,549.77 "/>
+<polygon class="st0" points="9.14,372.95 295.96,538.62 295.96,715.45 9.14,549.77 "/>
+</svg>
\ No newline at end of file
diff --git a/static/assets/icons/vaultwarden-logo.svg b/static/assets/icons/vaultwarden-logo.svg
new file mode 100644
index 0000000..91abbd6
--- /dev/null
+++ b/static/assets/icons/vaultwarden-logo.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg version="1.1" viewBox="0 0 256 256" id="svg383" sodipodi:docname="vaultwarden-icon.svg" inkscape:version="1.2.1 (9c6d41e410, 2022-07-14, custom)" width="256" height="256" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <defs id="defs387" />
+  <sodipodi:namedview id="namedview385" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" showgrid="false" inkscape:zoom="3.3359375" inkscape:cx="128" inkscape:cy="128" inkscape:window-width="1874" inkscape:window-height="1056" inkscape:window-x="46" inkscape:window-y="24" inkscape:window-maximized="1" inkscape:current-layer="svg383" />
+  <title id="title287">Vaultwarden Icon</title>
+  <g id="logo" transform="matrix(2.4381018,0,0,2.4381018,128,128)">
+    <g id="gear" mask="url(#holes)">
+      <path d="m-31.1718-33.813208 26.496029 74.188883h9.3515399l26.49603-74.188883h-9.767164l-16.728866 47.588948q-1.662496 4.571864-2.805462 8.624198-1.142966 3.948427-1.870308 7.585137-.72734199-3.63671-1.8703079-7.689043-1.142966-4.052334-2.805462-8.728104l-16.624959-47.381136z" stroke="#000" stroke-width="4.51171" id="path289" />
+      <circle transform="scale(-1,1)" r="43" fill="none" stroke="#000" stroke-width="9" id="circle291" />
+      <g id="cogs" transform="scale(-1,1)">
+        <polygon id="cog" points="51 0 46 -3 46 3" stroke="#000" stroke-linejoin="round" stroke-width="3" />
+        <use transform="rotate(11.25)" xlink:href="#cog" id="use294" />
+        <use transform="rotate(22.5)" xlink:href="#cog" id="use296" />
+        <use transform="rotate(33.75)" xlink:href="#cog" id="use298" />
+        <use transform="rotate(45)" xlink:href="#cog" id="use300" />
+        <use transform="rotate(56.25)" xlink:href="#cog" id="use302" />
+        <use transform="rotate(67.5)" xlink:href="#cog" id="use304" />
+        <use transform="rotate(78.75)" xlink:href="#cog" id="use306" />
+        <use transform="rotate(90)" xlink:href="#cog" id="use308" />
+        <use transform="rotate(101.25)" xlink:href="#cog" id="use310" />
+        <use transform="rotate(112.5)" xlink:href="#cog" id="use312" />
+        <use transform="rotate(123.75)" xlink:href="#cog" id="use314" />
+        <use transform="rotate(135)" xlink:href="#cog" id="use316" />
+        <use transform="rotate(146.25)" xlink:href="#cog" id="use318" />
+        <use transform="rotate(157.5)" xlink:href="#cog" id="use320" />
+        <use transform="rotate(168.75)" xlink:href="#cog" id="use322" />
+        <use transform="scale(-1)" xlink:href="#cog" id="use324" />
+        <use transform="rotate(191.25)" xlink:href="#cog" id="use326" />
+        <use transform="rotate(202.5)" xlink:href="#cog" id="use328" />
+        <use transform="rotate(213.75)" xlink:href="#cog" id="use330" />
+        <use transform="rotate(225)" xlink:href="#cog" id="use332" />
+        <use transform="rotate(236.25)" xlink:href="#cog" id="use334" />
+        <use transform="rotate(247.5)" xlink:href="#cog" id="use336" />
+        <use transform="rotate(258.75)" xlink:href="#cog" id="use338" />
+        <use transform="rotate(-90)" xlink:href="#cog" id="use340" />
+        <use transform="rotate(-78.75)" xlink:href="#cog" id="use342" />
+        <use transform="rotate(-67.5)" xlink:href="#cog" id="use344" />
+        <use transform="rotate(-56.25)" xlink:href="#cog" id="use346" />
+        <use transform="rotate(-45)" xlink:href="#cog" id="use348" />
+        <use transform="rotate(-33.75)" xlink:href="#cog" id="use350" />
+        <use transform="rotate(-22.5)" xlink:href="#cog" id="use352" />
+        <use transform="rotate(-11.25)" xlink:href="#cog" id="use354" />
+      </g>
+      <g id="mounts" transform="scale(-1,1)">
+        <polygon id="mount" points="0 -35 7 -42 -7 -42" stroke="#000" stroke-linejoin="round" stroke-width="6" />
+        <use transform="rotate(72)" xlink:href="#mount" id="use358" />
+        <use transform="rotate(144)" xlink:href="#mount" id="use360" />
+        <use transform="rotate(216)" xlink:href="#mount" id="use362" />
+        <use transform="rotate(-72)" xlink:href="#mount" id="use364" />
+      </g>
+    </g>
+    <mask id="holes">
+      <rect x="-60" y="-60" width="120" height="120" fill="#fff" id="rect368" />
+      <circle id="hole" cy="-40" r="3" />
+      <use transform="rotate(72)" xlink:href="#hole" id="use371" />
+      <use transform="rotate(144)" xlink:href="#hole" id="use373" />
+      <use transform="rotate(216)" xlink:href="#hole" id="use375" />
+      <use transform="rotate(-72)" xlink:href="#hole" id="use377" />
+    </mask>
+  </g>
+  <metadata id="metadata381">
+    <rdf:RDF>
+      <cc:Work rdf:about="">
+        <dc:title>Vaultwarden Icon</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Mathijs van Veluw</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:relation>Rust Logo</dc:relation>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/static/data/services.json b/static/data/services.json
index 5cd849e..a9aeea1 100644
--- a/static/data/services.json
+++ b/static/data/services.json
@@ -3,7 +3,7 @@
 		"name": "Nextcloud",
 		"icon": "/assets/icons/nextcloud-logo",
 		"iconType": "svg",
-		"href": "https://nextcloud.neshweb.net/",
+		"href": "https://cloud.neshweb.net/",
 		"desc": "Self-hosted Cloud Storage Service",
 		"warn": "Note: Registration requires approval",
 		"extLink": "https://nextcloud.com/",
@@ -19,24 +19,24 @@
 		"id": 5
 	},
 	{
-		"name": "Images",
-		"icon": "/assets/icons/images-logo",
+		"name": "Roundcube Mail",
+		"icon": "/assets/icons/roundcube-logo",
 		"iconType": "svg",
-		"href": "https://imgs.neshweb.net/",
+		"href": "https://mail.neshweb.net/rc",
+		"desc": "Self-hosted Mail Server",
+		"warn": "Registration via Admin invite",
+		"id": 5
+	},
+	{
+		"name": "Dun Scaith",
+		"icon": "/assets/icons/chevereto-logo",
+		"iconType": "png",
+		"href": "https://dun-scaith.com/",
 		"desc": "Self-hosted Chevereto Image Service",
 		"warn": "",
 		"extLink": "https://chevereto.com/",
 		"id": 4
 	},
-	{
-		"name": "Calibre Web",
-		"icon": "/assets/icons/calibre-logo",
-		"iconType": "avif",
-		"href": "https://calibre.neshweb.net/",
-		"desc": "Self-hosted Ebook Library Service",
-		"warn": "Note: Registration only via Admin",
-		"id": 6
-	},
 	{
 		"name": "PeerTube",
 		"icon": "/assets/icons/peertube-logo",
@@ -77,7 +77,7 @@
 		"name": "Navidrome",
 		"icon": "/assets/icons/navidrome-logo",
 		"iconType": "avif",
-		"href": "https://navidrome.neshweb.net/",
+		"href": "https://music.neshweb.net/",
 		"desc": "Open-Source, Self-Hosted Music Streaming Platform",
 		"warn": "Note: Registration only via Admin",
 		"id": 10
@@ -91,42 +91,6 @@
 		"warn": "Note: Registration only via Admin",
 		"id": 36
 	},
-	{
-		"name": "Portainer",
-		"icon": "/assets/icons/portainer-logo",
-		"iconType": "avif",
-		"href": "https://portainer.neshweb.net/",
-		"desc": "Docker Container Manager",
-		"warn": "Note: Admin Only",
-		"id": 34
-	},
-	{
-		"name": "Nginx",
-		"icon": "/assets/icons/npm-logo",
-		"iconType": "avif",
-		"href": "https://nginx.neshweb.net/",
-		"desc": "Web-based Nginx Proxy Manager",
-		"warn": "Note: Admin Only",
-		"id": 31
-	},
-	{
-		"name": "Proxmox",
-		"icon": "/assets/icons/proxmox-logo",
-		"iconType": "avif",
-		"href": "https://proxmox.neshweb.net/",
-		"desc": "Hypervisor Webinterface",
-		"warn": "Note: Admin Only",
-		"id": 33
-	},
-	{
-		"name": "Dockge",
-		"icon": "/assets/icons/dockge-logo",
-		"iconType": "avif",
-		"href": "https://dockge.neshweb.net/",
-		"desc": "Docker Compose WebUI",
-		"warn": "Note: Admin Only",
-		"id": 35
-	},
 	{
 		"name": "bookwormstory.social",
 		"icon": "/assets/icons/bookworm-logo",