diff --git a/apps/docs/app/[lang]/page.tsx b/apps/docs/app/[lang]/page.tsx index 8b234be41e3..3adeee12aac 100644 --- a/apps/docs/app/[lang]/page.tsx +++ b/apps/docs/app/[lang]/page.tsx @@ -3,7 +3,7 @@ import Link from 'next/link'; import { ArrowRight, Check } from 'lucide-react'; import { Bricolage_Grotesque, IBM_Plex_Mono } from 'next/font/google'; import { HomeLayout } from 'fumadocs-ui/layouts/home'; -import { baseOptions, gitConfig } from '@/lib/layout.shared'; +import { baseOptions, ESSAY_URL, gitConfig } from '@/lib/layout.shared'; import { absoluteUrl, HERO_COVER } from '@/lib/site'; import { APACHE_2_0_URL, @@ -16,6 +16,7 @@ import { type JsonLdNode, } from '@/lib/structured-data'; import { YouTubeEmbed } from '@/components/youtube-embed'; +import { OntologyRunsFigure } from '@/components/figures'; /** The 90-second overview — the same video the README's hero cover links to. */ const OVERVIEW_VIDEO_ID = 'CX_FlOoOtr0'; @@ -122,6 +123,13 @@ function homeGraph(): JsonLdNode[] { ]; } +/** Section 00's three sentences, verbatim from the maintainer's ruling. */ +const IDEA: string[] = [ + 'An enterprise is definition plus execution. When execution is nearly free, it is its definition.', + 'What the model lacks is not intelligence: a world, hands, and a fence.', + 'An ontology written clearly enough is software. Models change; the ontology stays.', +]; + const VOCABULARY: { tag: string; title: string; copy: string }[] = [ { tag: 'object', title: 'Objects & fields', copy: 'Typed schemas with relations, validation, formulas, and files.' }, { tag: 'permission', title: 'Permissions', copy: 'RBAC plus row- and field-level security, enforced by the runtime.' }, @@ -223,6 +231,15 @@ export default function HomePage() { metadata small enough for AI to hold whole: agents read it whole, reason it whole, refactor it whole.

+

+ + Why the ontology is the software + + +

+ {/* ── 00 · the idea ────────────────────────────────────── */} +
+
+ + 00 · The idea + +
+

+ An ontology written clearly enough runs directly +

+ {/* The figure's caption takes its spacing and colour from the blog's prose + styles there; this page has no prose wrapper, so the wrapper sets them. */} +
+ +
+
+ {IDEA.map((line) => ( +
+
+

+ {line} +

+
+ ))} +
+ + Read the essay + + +
+ {/* ── 01 · the loop ────────────────────────────────────── */}
@@ -455,14 +506,7 @@ export default function HomePage() { The ontology is the software. Your objects, relations, actions, permissions, and flows are your business ontology — views, dashboards, apps, and translations are projections of it, and the definition layer of the AI era should be an open - protocol you own. Read the long form:{' '} - - The Ontology Is the Software - - + protocol you own.

ObjectStack is build & ask with Claude Code. Rather build & ask online — diff --git a/apps/docs/lib/layout.shared.tsx b/apps/docs/lib/layout.shared.tsx index 5def0c6d4af..aef28da53d3 100644 --- a/apps/docs/lib/layout.shared.tsx +++ b/apps/docs/lib/layout.shared.tsx @@ -12,6 +12,9 @@ export const gitConfig = { branch: 'main', }; +/** The essay's route: the nav's `Why` entry, and the home page's hero link and section 00. */ +export const ESSAY_URL = '/blog/the-ontology-is-the-software'; + export function baseOptions(): BaseLayoutProps { return { nav: { @@ -24,8 +27,11 @@ export function baseOptions(): BaseLayoutProps { ), }, // Every layout spreads baseOptions() — DocsLayout (docs sidebar), and HomeLayout on - // the home page and on /blog — so this one entry is the blog's link on all of them. - links: [{ text: 'Blog', url: '/blog', active: 'nested-url' }], + // the home page and on /blog — so these entries are the nav's links on all of them. + links: [ + { text: 'Why', url: ESSAY_URL, active: 'url' }, + { text: 'Blog', url: '/blog', active: 'nested-url' }, + ], githubUrl: `https://github.com/${gitConfig.user}/${gitConfig.repo}`, }; }