diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 976eb90..f2f1483 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -13,8 +13,9 @@ const geistMono = Geist_Mono({ }); export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: "Asep Haryana Saputra — Hub", + description: + "Personal portfolio and infrastructure monitoring dashboard by Asep Haryana Saputra.", }; export default function RootLayout({ diff --git a/src/app/page.tsx b/src/app/page.tsx index 3f36f7c..fdbd18f 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,65 +1,136 @@ -import Image from "next/image"; +import { + Activity, + ArrowRight, + BarChart3, + Container, + Cpu, + ExternalLink, +} from "lucide-react"; + +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; + +const features = [ + { + icon: Container, + title: "Service Health", + description: "Real-time Docker container status across the cluster.", + }, + { + icon: BarChart3, + title: "Request Metrics", + description: "RPS, latency, and error rates scraped from Traefik.", + }, + { + icon: Cpu, + title: "System Resources", + description: "CPU, memory, disk, and network on each VPS node.", + }, + { + icon: Activity, + title: "Distributed Tracing", + description: "Jaeger trace visualization for service-to-service calls.", + }, +]; export default function Home() { return ( -
-
- Next.js logo -
-

- To get started, edit the page.tsx file. -

-

- Looking for a starting point or more instructions? Head over to{" "} - - Templates - {" "} - or the{" "} - - Learning - {" "} - center. -

+
+ {/* Hero */} +
+
+ AH
-
+

+ Asep Haryana Saputra +

+

+ Software engineer building resilient, observable infrastructure for + personal and production systems. +

+ -
+ + + {/* About */} +
+ + + About This Hub + + +

+ This is the control center for Asep Haryana Saputra's + infrastructure. It monitors Docker containers, Traefik request + metrics, Prometheus system resources, and Jaeger distributed + traces across a multi-VPS deployment orchestrated with Dapr and + NATS. +

+

+ The stack runs on Tailscale-connected VPS nodes with automatic + service discovery, TLS termination via Traefik, and real-time + streaming telemetry through JetStream-backed Dapr pub/sub. +

+
+
+ + {/* Features */} +
+ {features.map((f) => { + const Icon = f.icon; + return ( + + + + + {f.title} + + + + {f.description} + + + ); + })} +
+ + {/* CTA */} + + +

+ Ready to see the live infrastructure? +

+ + Open Dashboard + + +
+
+
+ + {/* Footer */} +
); }