diff options
| author | Fuwn <[email protected]> | 2026-02-07 01:42:57 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-07 01:42:57 -0800 |
| commit | 5c5b1993edd890a80870ee05607ac5f088191d4e (patch) | |
| tree | a721b76bcd49ba10826c53efc87302c7a689512f /apps/web/app/layout.tsx | |
| download | asa.news-5c5b1993edd890a80870ee05607ac5f088191d4e.tar.xz asa.news-5c5b1993edd890a80870ee05607ac5f088191d4e.zip | |
feat: asa.news RSS reader with developer tier, REST API, and webhooks
Full-stack RSS reader SaaS: Supabase + Next.js + Go worker.
Includes three subscription tiers (free/pro/developer), API key auth,
read-only REST API, webhook push notifications, Stripe billing with
proration, and PWA support.
Diffstat (limited to 'apps/web/app/layout.tsx')
| -rw-r--r-- | apps/web/app/layout.tsx | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx new file mode 100644 index 0000000..a3e3b8b --- /dev/null +++ b/apps/web/app/layout.tsx @@ -0,0 +1,58 @@ +import type { Metadata, Viewport } from "next" +import localFont from "next/font/local" +import { ThemeProvider } from "next-themes" +import { SpeedInsights } from "@vercel/speed-insights/next" +import { Analytics } from "@vercel/analytics/next" +import { Providers } from "./providers" +import "./globals.css" + +const jetBrainsMono = localFont({ + src: "./fonts/JetBrainsMono-Regular.woff2", + variable: "--font-mono", + display: "swap", +}) + +export const metadata: Metadata = { + title: "asa.news", + description: "A fast, minimal RSS reader for staying informed", + appleWebApp: { + capable: true, + statusBarStyle: "black-translucent", + title: "asa.news", + }, + formatDetection: { + telephone: false, + }, +} + +export const viewport: Viewport = { + themeColor: "#0a0a0a", + width: "device-width", + initialScale: 1, + maximumScale: 1, +} + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + <html lang="en" suppressHydrationWarning> + <body className={`${jetBrainsMono.variable} antialiased`}> + <ThemeProvider + attribute="class" + defaultTheme="dark" + enableSystem + disableTransitionOnChange + > + <Providers> + {children} + </Providers> + </ThemeProvider> + <SpeedInsights /> + <Analytics /> + </body> + </html> + ) +} |