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 };