@@ -2,8 +2,16 @@ import Link from 'next/link';
22import { Database , FileJson , Layers , ShieldCheck , Zap , Globe , Cpu , LayoutTemplate , Bot } from 'lucide-react' ;
33import { HomeLayout } from 'fumadocs-ui/layouts/home' ;
44import { baseOptions } from '@/app/layout.config' ;
5+ import { getHomepageTranslations } from '@/lib/homepage-i18n' ;
6+
7+ export default async function HomePage ( {
8+ params,
9+ } : {
10+ params : Promise < { lang : string } > ;
11+ } ) {
12+ const { lang } = await params ;
13+ const t = getHomepageTranslations ( lang ) ;
514
6- export default function HomePage ( ) {
715 return (
816 < HomeLayout { ...baseOptions } i18n >
917 < main className = "flex min-h-screen flex-col items-center justify-center text-center px-4 py-16 sm:py-24 md:py-32 overflow-hidden bg-background text-foreground selection:bg-primary/20" >
@@ -12,31 +20,31 @@ export default function HomePage() {
1220 < div className = "relative z-10 max-w-5xl space-y-8" >
1321 < div className = "inline-flex items-center rounded-full border border-fd-primary/20 bg-fd-primary/5 px-3 py-1 text-sm text-fd-primary backdrop-blur-sm transition-colors hover:bg-fd-primary/10 hover:border-fd-primary/30" >
1422 < span className = "flex h-2 w-2 rounded-full bg-fd-primary mr-2 animate-pulse" > </ span >
15- Protocol Specification v1.0
23+ { t . badge . status } { t . badge . version }
1624 </ div >
1725
1826 < h1 className = "text-5xl font-extrabold tracking-tight sm:text-7xl md:text-8xl bg-gradient-to-br from-foreground via-foreground/90 to-fd-primary/60 bg-clip-text text-transparent pb-4" >
19- The ObjectStack < br /> Protocol
27+ { t . hero . title . line1 } < br /> { t . hero . title . line2 }
2028 </ h1 >
2129
2230 < p className = "mx-auto max-w-2xl text-lg text-fd-muted-foreground sm:text-xl leading-relaxed" >
23- The Open Standard for Metadata-Driven Enterprise Software.
31+ { t . hero . subtitle . line1 }
2432 < br className = "hidden sm:inline" />
25- < span className = "text-fd-foreground font-medium" > Validatable. Database-Agnostic. AI-Native. </ span >
33+ < span className = "text-fd-foreground font-medium" > { t . hero . subtitle . line2 } </ span >
2634 </ p >
2735
2836 < div className = "flex flex-col sm:flex-row items-center justify-center gap-4 pt-4" >
2937 < Link
3038 href = "/docs/guides/getting-started"
3139 className = "inline-flex h-12 items-center justify-center rounded-lg bg-fd-primary px-8 text-sm font-medium text-fd-primary-foreground shadow-lg shadow-fd-primary/20 transition-all hover:bg-fd-primary/90 hover:scale-105 hover:shadow-fd-primary/30 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring disabled:pointer-events-none disabled:opacity-50"
3240 >
33- Start Building
41+ { t . hero . cta . primary }
3442 </ Link >
3543 < Link
3644 href = "/docs"
3745 className = "inline-flex h-12 items-center justify-center rounded-lg border border-fd-border bg-fd-card/50 px-8 text-sm font-medium shadow-sm transition-all hover:bg-fd-accent hover:text-fd-accent-foreground backdrop-blur-sm hover:scale-105 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring disabled:pointer-events-none disabled:opacity-50"
3846 >
39- Read Specification
47+ { t . hero . cta . secondary }
4048 </ Link >
4149 </ div >
4250
@@ -48,7 +56,7 @@ export default function HomePage() {
4856 < div className = "h-3 w-3 rounded-full bg-yellow-500/80" />
4957 < div className = "h-3 w-3 rounded-full bg-green-500/80" />
5058 < div className = "ml-2 text-xs font-medium text-fd-muted-foreground font-mono" >
51- contract.zod.ts
59+ { t . codePreview . filename }
5260 </ div >
5361 </ div >
5462 < div className = "overflow-x-auto p-6 text-left" >
@@ -78,68 +86,68 @@ export default function HomePage() {
7886 < div className = "mt-24 grid grid-cols-1 gap-8 text-left sm:grid-cols-2 lg:grid-cols-3 max-w-6xl w-full" >
7987 < FeatureCard
8088 icon = { < Database className = "h-6 w-6" /> }
81- title = "ObjectQL Data Layer"
89+ title = { t . features . objectql . title }
8290 href = "/docs/specifications/data/architecture"
83- description = "Strict JSON schemas for entities, fields, and relationships. It is the SQL you can send over the wire."
91+ description = { t . features . objectql . description }
8492 />
8593 < FeatureCard
8694 icon = { < Layers className = "h-6 w-6" /> }
87- title = "ObjectUI View Layer"
95+ title = { t . features . objectui . title }
8896 href = "/docs/specifications/ui/sdui-protocol"
89- description = "Server-Driven UI protocol defining forms, grids, and dashboards. Decouples logic from the frontend implementation."
97+ description = { t . features . objectui . description }
9098 />
9199 < FeatureCard
92100 icon = { < Zap className = "h-6 w-6" /> }
93- title = "ObjectOS Kernel"
101+ title = { t . features . objectos . title }
94102 href = "/docs/specifications/server/kernel-architecture"
95- description = "The runtime contract for permissions, workflows, and automation. Stateless business logic execution."
103+ description = { t . features . objectos . description }
96104 />
97105 < FeatureCard
98106 icon = { < ShieldCheck className = "h-6 w-6" /> }
99- title = "Zero-Trust Security"
107+ title = { t . features . security . title }
100108 href = "/docs/specifications/server/permission-governance"
101- description = "Policy-as-Code. ACLs and Field Level Security are compiled into the database query engine."
109+ description = { t . features . security . description }
102110 />
103111 < FeatureCard
104112 icon = { < FileJson className = "h-6 w-6" /> }
105- title = "Zod-First Definition"
113+ title = { t . features . zodFirst . title }
106114 href = "/docs/specifications/data/schema-definition"
107- description = "The entire protocol is defined in Zod. Runtime validation and static type inference come for free."
115+ description = { t . features . zodFirst . description }
108116 />
109117 < FeatureCard
110118 icon = { < Globe className = "h-6 w-6" /> }
111- title = "Universal Backend"
119+ title = { t . features . universal . title }
112120 href = "/docs/concepts/architecture"
113- description = "Protocol adapters for Postgres, MongoDB, REST and GraphQL. Write once, run on any infrastructure."
121+ description = { t . features . universal . description }
114122 />
115123 </ div >
116124
117125 { /* Personas Section */ }
118126 < div className = "mt-32 mb-16 w-full max-w-5xl px-4" >
119127 < h2 className = "text-3xl font-bold tracking-tight mb-12 bg-gradient-to-r from-fd-foreground to-fd-muted-foreground bg-clip-text text-transparent" >
120- Built for Builders
128+ { t . personas . heading }
121129 </ h2 >
122130 < div className = "grid grid-cols-1 md:grid-cols-3 gap-6" >
123131 < PersonaCard
124132 icon = { < LayoutTemplate className = "w-8 h-8 mb-4 text-blue-500" /> }
125- title = "Platform Architects"
126- description = "Design scalable Internal Developer Platforms (IDP) that unify your data silos."
133+ title = { t . personas . architect . title }
134+ description = { t . personas . architect . description }
127135 href = "/docs/concepts/enterprise-patterns"
128- action = "Explore Patterns"
136+ action = { t . personas . architect . action }
129137 />
130138 < PersonaCard
131139 icon = { < Bot className = "w-8 h-8 mb-4 text-purple-500" /> }
132- title = "AI Engineers"
133- description = "Feed LLMs with perfectly structured, deterministic JSON schemas they can actually understand."
140+ title = { t . personas . aiEngineer . title }
141+ description = { t . personas . aiEngineer . description }
134142 href = "/docs/concepts/ai-codex"
135- action = "View Codex"
143+ action = { t . personas . aiEngineer . action }
136144 />
137145 < PersonaCard
138146 icon = { < Cpu className = "w-8 h-8 mb-4 text-green-500" /> }
139- title = "Framework Builders"
140- description = "Implement the protocol in your language. Write drivers for React, Vue, Flutter, or Go."
147+ title = { t . personas . frameworkBuilder . title }
148+ description = { t . personas . frameworkBuilder . description }
141149 href = "/docs/specifications/data/architecture"
142- action = "Read Spec"
150+ action = { t . personas . frameworkBuilder . action }
143151 />
144152 </ div >
145153 </ div >
0 commit comments