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 (
-
-
-
-
-
- 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 */}
+
+ © {new Date().getFullYear()} Asep Haryana Saputra. Built with
+ Next.js, shadcn/ui, and a lot of Docker.
+
);
}