104 lines
3.7 KiB
TypeScript
104 lines
3.7 KiB
TypeScript
import { LabService } from "@/types/index";
|
|
|
|
export const LAB_SERVICES: LabService[] = [
|
|
{
|
|
id: "observatory",
|
|
name: "The Observatory",
|
|
description:
|
|
"Astronomical API orchestration and orbital visualization. Built to track ISS transits and lunar phases over Copenhagen.",
|
|
stack: ["Next.js", "Node", "SQLite"],
|
|
visibility: "public",
|
|
url: "https://observatory.georgew.dev",
|
|
gitUrl: "https://git.georgew.dev/george/observatory",
|
|
image: "/lab/observatory.jpg",
|
|
uptimeId: 12,
|
|
},
|
|
{
|
|
id: "surf-hub",
|
|
name: "Surf Sentinel",
|
|
description:
|
|
"Custom telemetry dashboard for Llangennith Bay, Wales. Pulling real-time buoy data and wave height predictions to find the perfect window for a session.",
|
|
stack: ["Grafana", "Influx DB", "Node"],
|
|
visibility: "public",
|
|
url: "https://surf.georgew.dev/d/adrx6b4/llangennith-beach-surf-data?orgId=1&from=now-24h&to=now&timezone=browser&refresh=1h&theme=dark&kiosk=true",
|
|
image: "/lab/surf-hub.jpg",
|
|
uptimeId: 13,
|
|
},
|
|
{
|
|
id: "audiobookshelf",
|
|
name: "The Archive",
|
|
description:
|
|
"Dedicated audiobook server for the household. Primarily used for our Brandon Sanderson, Patrick Rothfuss, and Dungeon Crawler Carl marathons.",
|
|
stack: ["Docker", "Compose", "Tailscale", "rclone"],
|
|
visibility: "tailscale",
|
|
url: "https://audio.georgew.dev",
|
|
image: "/lab/audiobookshelf.jpg",
|
|
uptimeId: 6,
|
|
},
|
|
{
|
|
id: "yamtrack",
|
|
name: "Yamtrack",
|
|
description:
|
|
"A specialized tracker for our anime watch-lists! Features custom metadata hooks to keep our seasonal progress in sync.",
|
|
stack: ["Docker", "Redis", "Tailscale"],
|
|
visibility: "tailscale",
|
|
url: "https://anime.georgew.dev",
|
|
image: "/lab/yamtrack.jpg",
|
|
uptimeId: 11,
|
|
},
|
|
{
|
|
id: "paperless",
|
|
name: "Paperless-ngx",
|
|
description:
|
|
"Personal document management system with OCR and automated tagging. Digitizing our physical mail and records into a searchable, versioned archive.",
|
|
stack: ["Docker", "Redis", "PostgreSQL"],
|
|
visibility: "tailscale",
|
|
url: "https://paperless.georgew.dev",
|
|
image: "/lab/paperless.jpg",
|
|
uptimeId: 14,
|
|
},
|
|
{
|
|
id: "change-detection",
|
|
name: "Signal Watcher",
|
|
description:
|
|
"Automated monitoring for the essentials: NASA news updates, hobby stock alerts, and Telegram pings the second a new episode of 'The Traitors' drops.",
|
|
stack: ["Telegram API", "Webhooks"],
|
|
visibility: "tailscale",
|
|
url: "https://alerts.georgew.dev",
|
|
image: "/lab/change-detection.jpg",
|
|
uptimeId: 15,
|
|
},
|
|
{
|
|
id: "ops-suite",
|
|
name: "System Operations",
|
|
description:
|
|
"The 'Engine Room.' Utilizing Portainer for orchestration, Dozzle for log streaming, and Watchtower for automated container lifecycle management across the Hetzner node.",
|
|
stack: ["Portainer", "Dozzle", "Watchtower"],
|
|
visibility: "tailscale",
|
|
url: "https://portainer.georgew.dev",
|
|
image: "/lab/portainer.jpg",
|
|
},
|
|
{
|
|
id: "wikijs",
|
|
name: "System Wiki",
|
|
description:
|
|
"The 'Source of Truth' for the home infrastructure. Contains deployment guides, network maps, and disaster recovery procedures for the entire node.",
|
|
stack: ["Wiki.js", "Markdown"],
|
|
visibility: "tailscale",
|
|
url: "https://wiki.georgew.dev",
|
|
image: "/lab/wikijs.jpg",
|
|
uptimeId: 5,
|
|
},
|
|
{
|
|
id: "dashboard",
|
|
name: "System Dashboard",
|
|
description:
|
|
"The central entry point for the GeorgeW ecosystem. A high-level overview providing unified access to all public and VPN-secured services.",
|
|
stack: ["Next.js", "Docker", "Reverse Proxy"],
|
|
visibility: "public",
|
|
url: "https://dash.georgew.dev",
|
|
gitUrl: "https://git.georgew.dev/george/homepage",
|
|
image: "/lab/dashboard.jpg",
|
|
},
|
|
];
|