diff --git a/apps/docs/app/[lang]/page.tsx b/apps/docs/app/[lang]/page.tsx index 8ded42d862..398c751017 100644 --- a/apps/docs/app/[lang]/page.tsx +++ b/apps/docs/app/[lang]/page.tsx @@ -1,12 +1,67 @@ -import { redirect } from 'next/navigation'; -import { i18n } from '@/lib/i18n'; +import type { Metadata } from 'next'; +import Link from 'next/link'; +import { ArrowRight } from 'lucide-react'; +import { HomeLayout } from 'fumadocs-ui/layouts/home'; +import { baseOptions, gitConfig } from '@/lib/layout.shared'; -export default async function HomePage({ - params, -}: { - params: Promise<{ lang: string }>; -}) { - const { lang } = await params; +export const metadata: Metadata = { + title: { + absolute: 'ObjectStack โ€” a metadata protocol and TypeScript toolkit for AI-native business apps', + }, + description: + 'Describe objects, permissions, workflows, APIs, UI, and AI tools once as typed Zod metadata โ€” ObjectStack derives the TypeScript types, REST API, client SDK, UI, and MCP tools.', +}; - redirect(lang === i18n.defaultLanguage ? '/docs' : `/${lang}/docs`); +export default function HomePage() { + return ( + +
+ + Open source ยท Apache-2.0 + +

+ A metadata protocol and TypeScript toolkit for AI-native business apps +

+

+ Describe your objects, permissions, workflows, APIs, UI, and AI tools once as typed, + version-controlled Zod metadata. ObjectStack derives the TypeScript types, REST API, + client SDK, UI, and MCP tools from that single definition. +

+
+ + Get started + + + + Documentation + + + GitHub + +
+

+ ObjectStack is the open-source developer framework.{' '} + Need the official hosted runtime with AI built in?{' '} + + Try ObjectOS + + +

+
+
+ ); } diff --git a/apps/docs/app/favicon.ico b/apps/docs/app/favicon.ico new file mode 100644 index 0000000000..718d6fea48 Binary files /dev/null and b/apps/docs/app/favicon.ico differ diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx index b215131960..d92fe60df3 100644 --- a/apps/docs/app/layout.tsx +++ b/apps/docs/app/layout.tsx @@ -9,7 +9,7 @@ export const metadata: Metadata = { }, description: 'Documentation for the ObjectStack Protocol and runtime.', icons: { - icon: 'https://objectstack.ai/logo.png', + icon: '/logo.svg', }, }; diff --git a/apps/docs/lib/layout.shared.tsx b/apps/docs/lib/layout.shared.tsx index a566acdc15..e976ca3478 100644 --- a/apps/docs/lib/layout.shared.tsx +++ b/apps/docs/lib/layout.shared.tsx @@ -1,5 +1,4 @@ import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; -import Image from 'next/image'; export const gitConfig = { user: 'objectstack-ai', @@ -12,16 +11,16 @@ export function baseOptions(): BaseLayoutProps { nav: { title: (
- ObjectStack + {/* Served from public/ โ€” the retired objectstack.ai marketing site no longer hosts assets. */} + ObjectStack ObjectStack
), }, + links: [ + { text: 'Docs', url: '/docs', active: 'nested-url' }, + { text: 'Blog', url: '/blog', active: 'nested-url' }, + ], githubUrl: `https://github.com/${gitConfig.user}/${gitConfig.repo}`, }; } diff --git a/apps/docs/next.config.mjs b/apps/docs/next.config.mjs index f4bbe7630b..bad353b9f2 100644 --- a/apps/docs/next.config.mjs +++ b/apps/docs/next.config.mjs @@ -19,14 +19,6 @@ const config = { 'lucide-react': './node_modules/lucide-react', }, }, - images: { - remotePatterns: [ - { - protocol: 'https', - hostname: 'objectstack.ai', - }, - ], - }, async redirects() { return toNextRedirects(); }, diff --git a/apps/docs/public/logo.svg b/apps/docs/public/logo.svg new file mode 100644 index 0000000000..303d0cfccf --- /dev/null +++ b/apps/docs/public/logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file