Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 64 additions & 9 deletions apps/docs/app/[lang]/page.tsx
Original file line number Diff line number Diff line change
@@ -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 (
<HomeLayout {...baseOptions()}>
<section className="flex flex-1 flex-col items-center justify-center px-4 py-24 text-center md:py-32">
<span className="mb-6 rounded-full border border-fd-border px-3 py-1 text-xs font-medium text-fd-muted-foreground">
Open source · Apache-2.0
</span>
<h1 className="max-w-3xl text-4xl font-bold tracking-tight text-balance md:text-5xl">
A metadata protocol and TypeScript toolkit for AI-native business apps
</h1>
<p className="mt-6 max-w-2xl text-lg text-fd-muted-foreground text-pretty">
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.
</p>
<div className="mt-10 flex flex-wrap items-center justify-center gap-3">
<Link
href="/docs/getting-started"
className="inline-flex items-center gap-2 rounded-full bg-fd-primary px-6 py-2.5 text-sm font-medium text-fd-primary-foreground transition-colors hover:bg-fd-primary/90"
>
Get started
<ArrowRight className="size-4" />
</Link>
<Link
href="/docs"
className="inline-flex items-center rounded-full border border-fd-border px-6 py-2.5 text-sm font-medium transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground"
>
Documentation
</Link>
<a
href={`https://github.com/${gitConfig.user}/${gitConfig.repo}`}
target="_blank"
rel="noreferrer noopener"
className="inline-flex items-center rounded-full border border-fd-border px-6 py-2.5 text-sm font-medium transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground"
>
GitHub
</a>
</div>
<p className="mt-16 text-sm text-fd-muted-foreground">
ObjectStack is the open-source developer framework.{' '}
Need the official hosted runtime with AI built in?{' '}
<a
href="https://www.objectos.ai"
className="inline-flex items-center gap-1 font-medium text-fd-foreground underline underline-offset-4 transition-colors hover:text-fd-primary"
>
Try ObjectOS
<ArrowRight className="size-3.5" />
</a>
</p>
</section>
</HomeLayout>
);
}
Binary file added apps/docs/app/favicon.ico
Binary file not shown.
2 changes: 1 addition & 1 deletion apps/docs/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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',
},
};

Expand Down
13 changes: 6 additions & 7 deletions apps/docs/lib/layout.shared.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
import Image from 'next/image';

export const gitConfig = {
user: 'objectstack-ai',
Expand All @@ -12,16 +11,16 @@ export function baseOptions(): BaseLayoutProps {
nav: {
title: (
<div className="flex items-center gap-2 font-bold">
<Image
src="https://objectstack.ai/logo.svg"
alt="ObjectStack"
width={30}
height={30}
/>
{/* Served from public/ — the retired objectstack.ai marketing site no longer hosts assets. */}
<img src="/logo.svg" alt="ObjectStack" width={30} height={30} />
ObjectStack
</div>
),
},
links: [
{ text: 'Docs', url: '/docs', active: 'nested-url' },
{ text: 'Blog', url: '/blog', active: 'nested-url' },
],
githubUrl: `https://github.com/${gitConfig.user}/${gitConfig.repo}`,
};
}
8 changes: 0 additions & 8 deletions apps/docs/next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,6 @@ const config = {
'lucide-react': './node_modules/lucide-react',
},
},
images: {
remotePatterns: [
{
protocol: 'https',
hostname: 'objectstack.ai',
},
],
},
async redirects() {
return toNextRedirects();
},
Expand Down
11 changes: 11 additions & 0 deletions apps/docs/public/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.