diff --git a/src/App.tsx b/src/App.tsx
index c074055..d7fbbec 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -5,6 +5,7 @@ import { Lobsters } from "./components/Lobsters";
import { Weather } from "./components/Weather";
import { SearchBar } from "./components/SearchBar.tsx";
import { apps } from "./data/apps";
+import { communityInfra } from "./data/communityInfra";
import { privateApps } from "./data/privateApps";
import { websites } from "./data/websites";
@@ -33,12 +34,14 @@ export function App() {
+
Community Apps+Infra
+
+ Webpages
+
Apps
- Private Apps
+ Homelab
- Webpages
-
);
}
diff --git a/src/data/apps.ts b/src/data/apps.ts
index 6f5278f..fe7b9d7 100644
--- a/src/data/apps.ts
+++ b/src/data/apps.ts
@@ -6,7 +6,11 @@ export const apps: Service[] = [
url: "https://id.cute.haus/",
icon: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/pocket-id.png",
},
- { name: "atbbs", url: "https://atbbs.xyz/" },
+ {
+ name: "Jellyfin",
+ url: "https://jellyfin.cute.haus",
+ icon: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/jellyfin.png",
+ },
{
name: "Plex",
url: "https://plex.cute.haus/",
@@ -42,11 +46,6 @@ export const apps: Service[] = [
url: "https://git.aly.codes/",
icon: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/forgejo.png",
},
- {
- name: "aly.social",
- url: "https://pds.cute.haus",
- icon: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/bluesky.png",
- },
{
name: "Vaultwarden",
url: "https://vault.cute.haus/",
diff --git a/src/data/communityInfra.ts b/src/data/communityInfra.ts
new file mode 100644
index 0000000..38567e0
--- /dev/null
+++ b/src/data/communityInfra.ts
@@ -0,0 +1,16 @@
+import type { Service } from "../types";
+
+export const communityInfra: Service[] = [
+ { name: "atbbs", url: "https://atbbs.xyz/" },
+ { name: "morsels.blue", url: "https://morsels.blue/" },
+ {
+ name: "aly.social",
+ url: "https://pds.cute.haus",
+ icon: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/bluesky.png",
+ },
+ {
+ name: "slingshot",
+ url: "https://slingshot.cute.haus",
+ icon: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/bluesky.png",
+ },
+];
diff --git a/src/data/privateApps.ts b/src/data/privateApps.ts
index 78c3594..bc5f24e 100644
--- a/src/data/privateApps.ts
+++ b/src/data/privateApps.ts
@@ -1,11 +1,6 @@
import type { Service } from "../types";
export const privateApps: Service[] = [
- {
- name: "Jellyfin",
- url: "https://jellyfin.cute.haus",
- icon: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/jellyfin.png",
- },
{
name: "Sonarr",
url: "https://sonarr.narwhal-snapper.ts.net/",
diff --git a/src/index.ts b/src/index.ts
index 6f2f244..5cff971 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,7 +1,5 @@
import { serve } from "bun";
import index from "./index.html";
-import { privateApps } from "./data/privateApps";
-import { websites } from "./data/websites";
let hnCache: { stories: any[]; fetchedAt: number } | null = null;
let lobstersCache: { stories: any[]; fetchedAt: number } | null = null;
@@ -87,7 +85,12 @@ async function findFavicon(siteOrigin: string): Promise {
}
async function checkStatuses(
- items: { name: string; url: string; healthUrl?: string; goodStatuses?: number[] }[],
+ items: {
+ name: string;
+ url: string;
+ healthUrl?: string;
+ goodStatuses?: number[];
+ }[],
) {
const results = await Promise.all(
items.map(async (item) => {
@@ -97,9 +100,10 @@ async function checkStatuses(
signal: AbortSignal.timeout(3000),
});
const status = response.status;
- const online = "goodStatuses" in item
- ? item.goodStatuses!.includes(status)
- : status < 500;
+ const online =
+ "goodStatuses" in item
+ ? item.goodStatuses!.includes(status)
+ : status < 500;
return { name: item.name, online };
} catch {
return { name: item.name, online: false };