Files
zeekay 9d3f6a634f Add base-docs app for base.hanzo.ai with landing page, docs, and K8s deployment
New docs site for Hanzo Base following the monorepo docs framework pattern:
- Landing page with feature grid, quick start, and architecture highlights
- 9 documentation sections: getting-started, collections, auth, realtime,
  file-storage, cloud-functions, SDK (JS + Go), and deployment
- K8s manifests for base.hanzo.ai (static docs) and api.base.hanzo.ai
  (multi-tenant Base platform with IAM/KMS integration)
- Dockerfile with nginx for static export serving
- Monochrome Hanzo theme via neutral.css + Geist fonts
2026-02-27 10:00:39 -08:00

51 lines
1.5 KiB
TypeScript

import './global.css';
import type { Viewport } from 'next';
import { baseUrl, createMetadata } from '@/lib/metadata';
import { Body } from '@/app/layout.client';
import { Provider } from './provider';
import type { ReactNode } from 'react';
import { Geist, Geist_Mono } from 'next/font/google';
import { TreeContextProvider } from '@hanzo/docs/ui/contexts/tree';
import { source } from '@/lib/source';
import { NextProvider } from '@hanzo/docs/core/framework/next';
export const metadata = createMetadata({
title: {
template: '%s | Hanzo Base',
default: 'Hanzo Base - The Realtime Backend',
},
description: 'Open-source backend-as-a-service. One binary for local dev, infinite scale in the cloud. Auth, database, realtime, storage, and cloud functions.',
metadataBase: baseUrl,
});
const geist = Geist({
variable: '--font-sans',
subsets: ['latin'],
});
const mono = Geist_Mono({
variable: '--font-mono',
subsets: ['latin'],
});
export const viewport: Viewport = {
themeColor: [
{ media: '(prefers-color-scheme: dark)', color: '#0A0A0A' },
{ media: '(prefers-color-scheme: light)', color: '#fff' },
],
};
export default function RootLayout({ children }: { children: ReactNode }) {
return (
<html lang="en" className={`${geist.variable} ${mono.variable}`} suppressHydrationWarning>
<Body>
<NextProvider>
<TreeContextProvider tree={source.getPageTree()}>
<Provider>{children}</Provider>
</TreeContextProvider>
</NextProvider>
</Body>
</html>
);
}