Skip to content

Commit 05c91a1

Browse files
committed
Revise homepage and docs for ObjectStack protocol
Updated the homepage and documentation index to reflect ObjectStack as a metadata-driven protocol, clarifying its architecture, terminology, and target audience. Added a new meta.json for documentation structure. The homepage now uses updated terminology and code samples, and the docs index provides a clearer introduction and navigation for users.
1 parent 58752fe commit 05c91a1

3 files changed

Lines changed: 62 additions & 80 deletions

File tree

apps/docs/app/page.tsx

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ export default function HomePage() {
1212
<div className="relative z-10 max-w-5xl space-y-8">
1313
<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">
1414
<span className="flex h-2 w-2 rounded-full bg-fd-primary mr-2 animate-pulse"></span>
15-
v1.0 Public Draft
15+
Protocol Specification v1.0
1616
</div>
1717

1818
<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 Post-SaaS <br/> Operating System
19+
The ObjectStack <br/> Protocol
2020
</h1>
2121

2222
<p className="mx-auto max-w-2xl text-lg text-fd-muted-foreground sm:text-xl leading-relaxed">
23-
Infrastructure as Code for Enterprise Applications.
23+
The Open Standard for Metadata-Driven Enterprise Software.
2424
<br className="hidden sm:inline" />
25-
<span className="text-fd-foreground font-medium">Metadata-driven. Local-first. AI-native.</span>
25+
<span className="text-fd-foreground font-medium">Validatable. Database-Agnostic. AI-Native.</span>
2626
</p>
2727

2828
<div className="flex flex-col sm:flex-row items-center justify-center gap-4 pt-4">
@@ -50,20 +50,20 @@ export default function HomePage() {
5050
<div className="h-3 w-3 rounded-full bg-yellow-500/80" />
5151
<div className="h-3 w-3 rounded-full bg-green-500/80" />
5252
<div className="ml-2 text-xs font-medium text-fd-muted-foreground font-mono">
53-
project-tracker.schema.ts
53+
contract.zod.ts
5454
</div>
5555
</div>
5656
<div className="overflow-x-auto p-6 text-left">
5757
<pre className="font-mono text-sm leading-6">
58-
<span className="text-purple-400">import</span> <span className="text-fd-foreground">{'{'}</span> <span className="text-yellow-300">ObjectSchema</span> <span className="text-fd-foreground">{'}'}</span> <span className="text-purple-400">from</span> <span className="text-green-300">'@objectstack/spec'</span>;<br/><br/>
59-
<span className="text-purple-400">export const</span> <span className="text-blue-300">Project</span> <span className="text-purple-400">=</span> <span className="text-yellow-300">ObjectSchema</span>.<span className="text-blue-300">create</span>(<span className="text-fd-foreground">{'{'}</span><br/>
60-
&nbsp;&nbsp;name: <span className="text-green-300">'project_tracker'</span>,<br/>
58+
<span className="text-purple-400">import</span> <span className="text-fd-foreground">{'{'}</span> <span className="text-yellow-300">ObjectProtocol</span> <span className="text-fd-foreground">{'}'}</span> <span className="text-purple-400">from</span> <span className="text-green-300">'@objectstack/spec'</span>;<br/><br/>
59+
<span className="text-purple-400">export const</span> <span className="text-blue-300">Issue</span> <span className="text-purple-400">=</span> <span className="text-yellow-300">ObjectProtocol</span>.<span className="text-blue-300">define</span>(<span className="text-fd-foreground">{'{'}</span><br/>
60+
&nbsp;&nbsp;code: <span className="text-green-300">'issue_tracker'</span>,<br/>
6161
&nbsp;&nbsp;fields: <span className="text-fd-foreground">{'{'}</span><br/>
62-
&nbsp;&nbsp;&nbsp;&nbsp;title: <span className="text-yellow-300">Field</span>.<span className="text-blue-300">text</span>(),<br/>
63-
&nbsp;&nbsp;&nbsp;&nbsp;status: <span className="text-yellow-300">Field</span>.<span className="text-blue-300">select</span>([<span className="text-green-300">'draft'</span>, <span className="text-green-300">'active'</span>, <span className="text-green-300">'done'</span>]),<br/>
64-
&nbsp;&nbsp;&nbsp;&nbsp;owner: <span className="text-yellow-300">Field</span>.<span className="text-blue-300">lookup</span>(<span className="text-green-300">'user'</span>)<br/>
62+
&nbsp;&nbsp;&nbsp;&nbsp;summary: <span className="text-yellow-300">Field</span>.<span className="text-blue-300">text</span>(<span className="text-fd-foreground">{'{'}</span> required: <span className="text-red-300">true</span> <span className="text-fd-foreground">{'}'}</span>),<br/>
63+
&nbsp;&nbsp;&nbsp;&nbsp;priority: <span className="text-yellow-300">Field</span>.<span className="text-blue-300">select</span>([<span className="text-green-300">'P0'</span>, <span className="text-green-300">'P1'</span>, <span className="text-green-300">'P2'</span>]),<br/>
64+
&nbsp;&nbsp;&nbsp;&nbsp;assignee: <span className="text-yellow-300">Field</span>.<span className="text-blue-300">lookup</span>(<span className="text-green-300">'users'</span>)<br/>
6565
&nbsp;&nbsp;<span className="text-fd-foreground">{'}'}</span>,<br/>
66-
&nbsp;&nbsp;enable: <span className="text-fd-foreground">{'{'}</span> <span className="text-blue-300">api</span>: <span className="text-red-300">true</span>, <span className="text-blue-300">audit</span>: <span className="text-red-300">true</span> <span className="text-fd-foreground">{'}'}</span><br/>
66+
&nbsp;&nbsp;policy: <span className="text-fd-foreground">{'{'}</span> <span className="text-blue-300">audit</span>: <span className="text-red-300">true</span>, <span className="text-blue-300">api_access</span>: <span className="text-green-300">'public'</span> <span className="text-fd-foreground">{'}'}</span><br/>
6767
<span className="text-fd-foreground">{'}'}</span>);
6868
</pre>
6969
</div>
@@ -81,32 +81,32 @@ export default function HomePage() {
8181
<FeatureCard
8282
icon={<Database className="h-6 w-6" />}
8383
title="ObjectQL Data Layer"
84-
description="A universal schema definition language (SDL) that abstracts SQL, NoSQL, and API datasources into a unified graph."
84+
description="Strict JSON schemas for entities, fields, and relationships. It is the SQL you can send over the wire."
8585
/>
8686
<FeatureCard
8787
icon={<Layers className="h-6 w-6" />}
88-
title="ObjectUI Presentation"
89-
description="Declarative UI definitions for layouts, views, reports, and dashboards. Write once, render on Web, Mobile, and CLI."
88+
title="ObjectUI View Layer"
89+
description="Server-Driven UI protocol defining forms, grids, and dashboards. Decouples logic from the frontend implementation."
9090
/>
9191
<FeatureCard
9292
icon={<Zap className="h-6 w-6" />}
93-
title="ObjectOS Runtime"
94-
description="Power workflows, validations, permissions, and automation rules through a portable, stateless execution engine."
93+
title="ObjectOS Kernel"
94+
description="The runtime contract for permissions, workflows, and automation. Stateless business logic execution."
9595
/>
9696
<FeatureCard
9797
icon={<ShieldCheck className="h-6 w-6" />}
98-
title="Enterprise Security"
99-
description="Built-in RBAC, Field-level security, and audit logs defined directly in your metadata codebase."
98+
title="Zero-Trust Security"
99+
description="Policy-as-Code. ACLs and Field Level Security are compiled into the database query engine."
100100
/>
101101
<FeatureCard
102102
icon={<FileJson className="h-6 w-6" />}
103-
title="100% Typed Metadata"
104-
description="Every protocol definition is backed by Zod schemas and TypeScript interfaces, ensuring type-safety from definition to runtime."
103+
title="Zod-First Definition"
104+
description="The entire protocol is defined in Zod. Runtime validation and static type inference come for free."
105105
/>
106106
<FeatureCard
107107
icon={<Globe className="h-6 w-6" />}
108-
title="Local-First Ecosystem"
109-
description="Designed for edge computing and local execution. Git-ops ready with simple JSON/YAML file structures."
108+
title="Universal Backend"
109+
description="Protocol adapters for Postgres, MongoDB, REST and GraphQL. Write once, run on any infrastructure."
110110
/>
111111
</div>
112112

content/docs/index.mdx

Lines changed: 30 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,50 @@
11
---
2-
title: Overview
3-
description: The Standard for Post-SaaS Operating Systems
2+
title: Welcome to ObjectStack
3+
description: The Metadata-Driven Protocol for the Post-SaaS Era.
44
---
55

6-
import { FileText, Database, Layout, Settings, Book } from 'lucide-react';
6+
import { Book, Compass, FileText, Layers } from 'lucide-react';
77

8+
**ObjectStack** is not just a framework; it is a **Protocol** for building enterprise software.
9+
It decouples the *Business Intent* (defined in JSON/YAML) from the *Technical Execution* (handled by the Kernel).
810

9-
**ObjectStack Protocol** is the "DNA" and constitution of the ObjectStack platform. It defines the metadata standards, schemas, and runtime behaviors that power a metadata-driven, low-code operating system.
11+
This documentation is the authoritative reference for the ObjectStack Protocol.
1012

11-
<Callout type="info">
12-
This specification serves as the Single Source of Truth for all ObjectStack implementations. All definitions are strictly typed using Zod and TypeScript.
13-
</Callout>
14-
15-
## The Metamodel Architecture
16-
17-
The protocol is divided into three fundamental pillars that decouple data, presentation, and system configuration.
13+
## How to navigate
1814

1915
<Cards>
2016
<Card
21-
icon={<Database />}
22-
href="/docs/concepts/architecture"
23-
title="Data Protocol"
24-
description="Core business logic and data modeling. Defines Objects, Fields, Validation Rules, and Flows."
17+
icon={<Compass />}
18+
title="Concepts"
19+
href="/docs/concepts/manifesto"
20+
description="Start here. Understand the philosophy of 'Intent over Implementation' and the 'Local-First' architecture."
2521
/>
2622
<Card
27-
icon={<Layout />}
28-
href="/docs/references/ui/App"
29-
title="UI Protocol"
30-
description="Presentation layer specifications. Defines Views, Layouts, Menus (Apps), and Dashboards."
23+
icon={<Layers />}
24+
title="Specifications"
25+
href="/docs/specifications/data/architecture"
26+
description="The Architecture Blueprints. Deep dive into ObjectQL (Data), ObjectUI (View), and ObjectOS (Control)."
3127
/>
3228
<Card
33-
icon={<Settings />}
34-
href="/docs/references/system/Datasource"
35-
title="System Protocol"
36-
description="Runtime configuration and environment binding. Defines Datasources, APIs, and Manifests."
29+
icon={<Book />}
30+
title="Protocol Reference"
31+
href="/docs/references/data/index"
32+
description="The Dictionary. Comprehensive reference for every Schema, Field Type, and Configuration option."
3733
/>
3834
</Cards>
3935

40-
## Core Principles
41-
42-
### 1. Schema First
43-
Every protocol definition starts with a **Zod Schema**. This ensures runtime validation for the CLI and strict type derivation (`z.infer<T>`) for the IDE. We do not write code without a schema.
44-
45-
### 2. Configuration as Code
46-
All business logic is expressed as serializable JSON/YAML configuration. This enables:
47-
- **Version Control**: Git-based history for business logic.
48-
- **Reviewability**: Pull requests for application changes.
49-
- **Portability**: Move applications between environments instantly.
50-
51-
### 3. Separation of Concerns
52-
We strictly separate the **Metamodel** (pure definitions) from the **Runtime** (execution engine). The `spec` package contains *only* definitions, constants, and types—no heavy business logic.
53-
54-
## Directory Structure
36+
## The "Trinity" Architecture
5537

56-
The specification is organized reflecting the protocol pillars:
38+
ObjectStack is built on three pillars that work in unison:
5739

58-
- **`src/data/`**: ObjectQL definitions (Object, Field, Validation).
59-
- **`src/ui/`**: ObjectUI definitions (App, View, Action).
60-
- **`src/system/`**: ObjectOS definitions (Manifest, Config).
40+
| Pillar | Protocol | Responsibility |
41+
| :--- | :--- | :--- |
42+
| **Data Layer** | **[ObjectQL](/docs/specifications/data/architecture)** | Defines the shape of data (`Object`) and how to access it (`AST`). Agnostic to SQL/NoSQL. |
43+
| **Control Layer** | **[ObjectOS](/docs/specifications/server/kernel-architecture)** | The Kernel. Handles Identity, Security, Sync, and Automation. |
44+
| **View Layer** | **[ObjectUI](/docs/specifications/ui/sdui-protocol)** | The Projection. Defines the User Interface as abstract JSON layouts, enabling Server-Driven UI. |
6145

62-
## Next Steps
46+
## For whom is this?
6347

64-
<Cards>
65-
<Card
66-
icon={<Book />}
67-
href="/docs/concepts/manifesto"
68-
title="Read the Manifesto"
69-
description="Understand the philosophy behind the Post-SaaS Operating System."
70-
/>
71-
<Card
72-
icon={<FileText />}
73-
href="/docs/references"
74-
title="API Reference"
75-
description="Explore the complete API and Schema reference documentation."
76-
/>
77-
</Cards>
48+
* **Platform Architects:** Who want to build internal developer platforms (IDP) that scale.
49+
* **Protocol Implementers:** Who want to write a new Driver for ObjectQL (e.g., for FoundationDB) or a new Renderer for ObjectUI (e.g., for Flutter).
50+
* **AI Agent Developers:** Who need a deterministic, structured generic language for AI to generate software.

content/docs/meta.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"title": "Documentation",
3+
"pages": [
4+
"index",
5+
"concepts",
6+
"specifications",
7+
"references"
8+
]
9+
}

0 commit comments

Comments
 (0)