Files
Tomas DvorakandDevin d1486d5ec8 feat(landing): rebuild as Next.js app with live product mocks
Replaces the static HTML page with a Next.js 15 + Tailwind v4 + Motion
app. The hero renders the dashboard itself - live tiles, ticking clock,
wandering metrics, pulsing status dots - instead of screenshots. Adds a
playable four-renderer switcher (bento/cards/index/console) with layout
animations, live monitor/domain/system mocks, and a cycling alert feed.

Vercel project dash is now git-connected with root dir landing/; pushes
deploy automatically. Canonical alias: dash-homelab.vercel.app.

Authored By: TDvorak <[email protected]>

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-25 13:19:06 +02:00

46 lines
1.3 KiB
TypeScript

import type { Metadata, Viewport } from "next";
import localFont from "next/font/local";
import "./globals.css";
const geist = localFont({
src: "./fonts/geist-var.woff2",
variable: "--font-geist",
weight: "100 900",
display: "swap",
});
const geistMono = localFont({
src: "./fonts/geist-mono-var.woff2",
variable: "--font-geist-mono",
weight: "100 900",
display: "swap",
});
export const metadata: Metadata = {
metadataBase: new URL("https://dash-homelab.vercel.app"),
title: "Dash - Self-hosted homelab dashboard",
description:
"Service boards, uptime monitors, domain watch, and system metrics in one container. A single static Go binary with an embedded React UI. No YAML, no external database.",
openGraph: {
title: "Dash - Self-hosted homelab dashboard",
description:
"Service boards, uptime monitors, domain watch, and system metrics in one container. One static Go binary, no YAML.",
type: "website",
images: ["/dash.svg"],
},
};
export const viewport: Viewport = {
themeColor: "#0a0a0a",
};
export default function RootLayout({
children,
}: Readonly<{ children: React.ReactNode }>) {
return (
<html lang="en" className={`${geist.variable} ${geistMono.variable}`}>
<body className="font-sans">{children}</body>
</html>
);
}