diff --git a/frontend/src/data/sample.js b/frontend/src/data/sample.js index 3ba2ec2..a86b01d 100644 --- a/frontend/src/data/sample.js +++ b/frontend/src/data/sample.js @@ -42,18 +42,18 @@ export function fallbackHardware() { export function fallbackServices() { return { services: [ + { + name: "Keycloak", + category: "identity", + summary: "Unified accounts for Single Sign-On.", + link: "https://sso.bstein.dev", + }, { name: "Nextcloud Hub", category: "productivity", summary: "Core user hub: storage, office, bstein.dev mail, & more apps.", link: "https://cloud.bstein.dev", }, - { - name: "Jellyfin", - category: "media", - summary: "Family Movies hosted on titan-22 for GPU acceleration.", - link: "https://stream.bstein.dev", - }, { name: "VaultWarden", category: "security", @@ -61,10 +61,69 @@ export function fallbackServices() { link: "https://vault.bstein.dev", }, { - name: "Keycloak", - category: "identity", - summary: "Unified accounts for Single Sign-On.", - link: "https://sso.bstein.dev", + name: "AI Chat", + category: "ai", + summary: "LLM chat (public beta)", + link: "/ai/chat", + host: "chat.ai.bstein.dev", + status: "live", + }, + { + name: "Jellyfin", + category: "media", + summary: "Family Movies hosted on titan-22 for GPU acceleration.", + link: "https://stream.bstein.dev", + }, + { + name: "Pegasus", + category: "media ingest", + summary: "Uploading service to inject jellyfin media.", + link: "https://pegasus.bstein.dev", + }, + { + name: "Monero", + category: "crypto", + summary: "Private monero node for monero wallets", + link: "/monero", + host: "monerod.crypto.svc.cluster.local:18081", + }, + { + name: "Grafana", + category: "observability", + summary: "Health metrics for atlas and eventually oceanus.", + link: "https://metrics.bstein.dev", + }, + { + name: "Element", + category: "comms", + summary: "Matrix client for Titan Live space.", + link: "https://live.bstein.dev", + host: "live.bstein.dev", + status: "live", + }, + { + name: "Matrix (Synapse)", + category: "comms", + summary: "Homeserver powering Titan Live; AI bot is in the welcome room.", + link: "https://live.bstein.dev", + host: "matrix.live.bstein.dev", + status: "live", + }, + { + name: "LiveKit", + category: "comms", + summary: "Video + voice SFU for calls in Titan Live.", + link: "https://live.bstein.dev", + host: "kit.live.bstein.dev", + status: "live", + }, + { + name: "Coturn", + category: "comms", + summary: "TURN/STUN relay for reliable calling.", + link: "https://live.bstein.dev", + host: "turn.live.bstein.dev", + status: "live", }, { name: "Gitea", @@ -97,70 +156,11 @@ export function fallbackServices() { link: "https://secret.bstein.dev", }, { - name: "Grafana", - category: "observability", - summary: "Health metrics for atlas and eventually oceanus.", - link: "https://metrics.bstein.dev", - }, - { - name: "Pegasus", - category: "media ingest", - summary: "Uploading service to inject jellyfin media.", - link: "https://pegasus.bstein.dev", - }, - { - name: "Monero", - category: "crypto", - summary: "Private monero node for monero wallets", - link: "/monero", - host: "monerod.crypto.svc.cluster.local:18081", - }, - { - name: "Matrix (Synapse)", - category: "comms", - summary: "Private Discord-style chat with AI bot in the welcome room.", - link: "https://matrix.bstein.dev", - host: "matrix.bstein.dev", - status: "live", - }, - { - name: "Element", - category: "comms", - summary: "Web client for the Matrix space.", - link: "https://element.bstein.dev", - host: "element.bstein.dev", - status: "live", - }, - { - name: "LiveKit", - category: "comms", - summary: "Video + voice SFU powering Matrix calls.", - link: "https://livekit.bstein.dev", - host: "livekit.bstein.dev", - status: "live", - }, - { - name: "Coturn", - category: "comms", - summary: "TURN/STUN relay for reliable calling.", - link: "https://turn.bstein.dev", - host: "turn.bstein.dev", - status: "live", - }, - { - name: "AI Chat", - category: "ai", - summary: "LLM chat (public beta)", - link: "/ai/chat", - host: "chat.ai.bstein.dev", - status: "live", - }, - { - name: "AI Image", + name: "AI Vision", category: "ai", summary: "Visualization tool - Planned", link: "/ai/roadmap", - host: "draw.ai.bstein.dev", + host: "vision.ai.bstein.dev", status: "planned", }, { @@ -171,6 +171,14 @@ export function fallbackServices() { host: "talk.ai.bstein.dev", status: "planned", }, + { + name: "SUI Validator", + category: "validator", + summary: "Dedicated SUI validator on Oceanus (rolling out).", + link: "#", + host: "oceanus", + status: "planned", + }, ], }; } diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomeView.vue index 8ce2bb8..5da8130 100644 --- a/frontend/src/views/HomeView.vue +++ b/frontend/src/views/HomeView.vue @@ -139,11 +139,12 @@ function pickIcon(name) { if (h.includes("harbor")) return "📦"; if (h.includes("flux")) return "🔄"; if (h.includes("monero")) return "⛏️"; + if (h.includes("sui")) return "💠"; if (h.includes("keycloak")) return "🛡️"; if (h.includes("grafana")) return "📈"; if (h.includes("pegasus")) return "🚀"; if (h.includes("ai chat")) return "💬"; - if (h.includes("ai image")) return "🖼️"; + if (h.includes("ai image") || h.includes("vision")) return "🖼️"; if (h.includes("ai speech")) return "🎙️"; return "🛰️"; }