@@ -4,13 +4,19 @@ interface CodePreviewProps {
44 className ?: string ;
55}
66
7+ /**
8+ * Homepage code preview.
9+ *
10+ * Shows a real docker-compose.yml that an enterprise operator can copy,
11+ * paste, and run to bring ObjectOS up against their own database in a
12+ * single command. Replaces the previous developer-flavored object
13+ * definition snippet.
14+ */
715export function CodePreview ( { className } : CodePreviewProps ) {
816 const kw = 'text-purple-600 dark:text-purple-400 font-semibold' ;
917 const str = 'text-green-600 dark:text-green-300' ;
10- const fn = 'text-blue-600 dark:text-blue-300' ;
11- const typ = 'text-amber-600 dark:text-yellow-300' ;
12- const prop = 'text-cyan-600 dark:text-sky-300' ;
13- const bool = 'text-red-600 dark:text-red-300' ;
18+ const num = 'text-amber-600 dark:text-yellow-300' ;
19+ const key = 'text-cyan-600 dark:text-sky-300' ;
1420 const fg = 'text-foreground' ;
1521 const cm = 'text-foreground/40 italic' ;
1622
@@ -26,63 +32,67 @@ export function CodePreview({ className }: CodePreviewProps) {
2632 < div className = "h-3 w-3 rounded-full bg-yellow-500/80" />
2733 < div className = "h-3 w-3 rounded-full bg-green-500/80" />
2834 < div className = "ml-2 text-xs font-medium text-muted-foreground font-mono" >
29- src/objects/task.object.ts
35+ docker-compose.yml
3036 </ div >
3137 </ div >
32-
33- { /* Code Content — real ObjectStack API */ }
38+
39+ { /* Code Content — real docker-compose deployment */ }
3440 < div className = "overflow-x-auto p-6 text-left bg-gradient-to-br from-card to-muted/20" >
3541 < pre className = "font-mono text-sm leading-7" >
3642 < code >
37- < span className = { kw } > import</ span > { ' ' }
38- < span className = { fg } > { '{' } </ span > { ' ' }
39- < span className = { typ } > Data</ span > { ' ' }
40- < span className = { fg } > { '}' } </ span > { ' ' }
41- < span className = { kw } > from</ span > { ' ' }
42- < span className = { str } > '@objectstack/spec'</ span > ;
43- < br /> < br />
44- < span className = { kw } > const</ span > { ' ' }
45- < span className = { fn } > task</ span > :{ ' ' }
46- < span className = { typ } > Data.Object</ span > { ' ' }
47- < span className = { fg } > =</ span > { ' ' }
48- < span className = { fg } > { '{' } </ span >
43+ < span className = { cm } > { '# Run ObjectOS against your own Postgres' } </ span >
44+ < br />
45+ < span className = { key } > services</ span > < span className = { fg } > :</ span >
46+ < br />
47+ { ' ' } < span className = { key } > objectos</ span > < span className = { fg } > :</ span >
4948 < br />
50- { ' ' } < span className = { prop } > name</ span > :{ ' ' } < span className = { str } > 'task'</ span > ,
49+ { ' ' } < span className = { key } > image</ span > < span className = { fg } > :</ span > { ' ' }
50+ < span className = { str } > ghcr.io/objectstack/objectos:latest</ span >
5151 < br />
52- { ' ' } < span className = { prop } > label</ span > :{ ' ' } < span className = { str } > 'Task'</ span > ,
52+ { ' ' } < span className = { key } > ports</ span > < span className = { fg } > :</ span > { ' ' }
53+ [< span className = { str } > "3000:3000"</ span > ]
5354 < br />
54- { ' ' } < span className = { prop } > fields </ span > : { ' ' } < span className = { fg } > { '{' } </ span >
55+ { ' ' } < span className = { key } > environment </ span > < span className = { fg } > : </ span >
5556 < br />
56- { ' ' } < span className = { prop } > subject</ span > :{ ' ' } < span className = { fg } > { '{' } </ span > { ' ' }
57- < span className = { prop } > type</ span > :{ ' ' } < span className = { str } > 'text'</ span > ,{ ' ' }
58- < span className = { prop } > required</ span > :{ ' ' } < span className = { bool } > true</ span > { ' ' }
59- < span className = { fg } > { '}' } </ span > ,
57+ { ' ' } < span className = { key } > OS_ARTIFACT_FILE</ span > < span className = { fg } > :</ span > { ' ' }
58+ < span className = { str } > /artifacts/objectstack.json</ span >
6059 < br />
61- { ' ' } < span className = { prop } > status</ span > :{ ' ' } < span className = { fg } > { '{' } </ span >
60+ { ' ' } < span className = { key } > OS_DATABASE_URL</ span > < span className = { fg } > :</ span > { ' ' }
61+ < span className = { str } > postgres://app@db:5432/objectos</ span >
6262 < br />
63- { ' ' } < span className = { prop } > type</ span > :{ ' ' } < span className = { str } > 'select'</ span > ,
63+ { ' ' } < span className = { key } > OS_AUTH_SECRET</ span > < span className = { fg } > :</ span > { ' ' }
64+ < span className = { fg } > $</ span > < span className = { key } > { '{AUTH_SECRET}' } </ span >
6465 < br />
65- { ' ' } < span className = { prop } > options </ span > : { ' ' } [ < span className = { str } > 'draft' </ span > , < span className = { str } > 'active' </ span > , < span className = { str } > 'done' </ span > ],
66+ { ' ' } < span className = { key } > volumes </ span > < span className = { fg } > : </ span >
6667 < br />
67- { ' ' } < span className = { fg } > { '}' } </ span > ,
68+ { ' ' } < span className = { fg } > -</ span > { ' ' }
69+ < span className = { str } > ./artifacts:/artifacts:ro</ span >
6870 < br />
69- { ' ' } < span className = { prop } > assignee</ span > :{ ' ' } < span className = { fg } > { '{' } </ span > { ' ' }
70- < span className = { prop } > type</ span > :{ ' ' } < span className = { str } > 'lookup'</ span > ,{ ' ' }
71- < span className = { prop } > reference</ span > :{ ' ' } < span className = { str } > 'user'</ span > { ' ' }
72- < span className = { fg } > { '}' } </ span > ,
71+ { ' ' } < span className = { fg } > -</ span > { ' ' }
72+ < span className = { str } > objectos-data:/var/lib/objectos</ span >
7373 < br />
74- { ' ' } < span className = { fg } > { '}' } </ span > ,
74+ { ' ' } < span className = { key } > depends_on</ span > < span className = { fg } > :</ span > { ' ' }
75+ [< span className = { str } > db</ span > ]
76+ < br /> < br />
77+ { ' ' } < span className = { key } > db</ span > < span className = { fg } > :</ span >
78+ < br />
79+ { ' ' } < span className = { key } > image</ span > < span className = { fg } > :</ span > { ' ' }
80+ < span className = { str } > postgres:</ span > < span className = { num } > 16</ span >
7581 < br />
76- < span className = { fg } > { '}' } </ span > ;
82+ { ' ' } < span className = { key } > volumes</ span > < span className = { fg } > :</ span > { ' ' }
83+ [< span className = { str } > db-data:/var/lib/postgresql/data</ span > ]
7784 < br /> < br />
78- < span className = { cm } > { '// → REST API at /api/v1/task' } </ span >
85+ < span className = { key } > volumes</ span > < span className = { fg } > :</ span > { ' ' }
86+ < span className = { fg } > { '{ objectos-data: {}, db-data: {} }' } </ span >
87+ < br /> < br />
88+ < span className = { cm } > { '# → Application at http://localhost:3000' } </ span >
7989 < br />
80- < span className = { cm } > { '// → Console UI at /_studio /' } </ span >
90+ < span className = { cm } > { '# → Setup app at http://localhost:3000/_setup /' } </ span >
8191 </ code >
8292 </ pre >
8393 </ div >
8494 </ div >
85-
95+
8696 { /* Glow Effect */ }
8797 < div className = "absolute -inset-4 -z-10 bg-primary/20 blur-3xl opacity-30 rounded-[50%]" />
8898 </ div >
0 commit comments