Skip to content

Commit 7767d3a

Browse files
dmealingclaude
andcommitted
site: add the video series page (5 videos) + Videos nav link
New /videos.html hosts the introduction plus the four feature videos (getting started, adopt existing, drift detection, runtime UI). mp4s stream from metaobjects.com/Cloudflare (Pages rejects large mp4s); posters + English VTT captions are same-origin. Videos link added to the nav on every page. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SKaSE8U5cwN4ZGFwhJwxSY
1 parent 42fbac7 commit 7767d3a

12 files changed

Lines changed: 778 additions & 0 deletions

www/getting-started.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
<a href="/" class="brand"><img src="/images/mo-logo-only.png" alt="" class="brand-mark"><span class="brand-name">MetaObjects</span></a>
3838
<nav>
3939
<a href="/" class="nav-link">Home</a>
40+
<a href="/videos.html" class="nav-link">Videos</a>
4041
<a href="https://github.com/metaobjectsdev/metaobjects" class="nav-link">GitHub</a>
4142
<a href="https://github.com/metaobjectsdev/metaobjects/tree/main/spec" class="nav-link nav-cta">Spec</a>
4243
</nav>

www/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
<nav>
3232
<a href="/getting-started.html" class="nav-link">Get started</a>
3333
<a href="/story.html" class="nav-link">Story</a>
34+
<a href="/videos.html" class="nav-link">Videos</a>
3435
<a href="https://github.com/metaobjectsdev/metaobjects" class="nav-link">GitHub</a>
3536
<a href="#ai" class="nav-link">For AI</a>
3637
<a href="https://github.com/metaobjectsdev/metaobjects/tree/main/spec" class="nav-link nav-cta">Spec</a>

www/story.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
</a>
5555
<nav>
5656
<a href="/getting-started.html" class="nav-link">Get started</a>
57+
<a href="/videos.html" class="nav-link">Videos</a>
5758
<a href="https://github.com/metaobjectsdev/metaobjects" class="nav-link">GitHub</a>
5859
<a href="/#ai" class="nav-link">For AI</a>
5960
<a href="https://github.com/metaobjectsdev/metaobjects/tree/main/spec" class="nav-link nav-cta">Spec</a>
146 KB
Loading

www/video/adopt-existing.vtt

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
WEBVTT
2+
3+
1
4+
00:00:00.500 --> 00:00:04.335
5+
Most teams don't start from scratch — they have an app already.
6+
7+
2
8+
00:00:04.335 --> 00:00:07.926
9+
Good news: you don't have to rewrite it to use MetaObjects.
10+
11+
3
12+
00:00:07.926 --> 00:00:09.630
13+
You adopt it, incrementally.
14+
15+
4
16+
00:00:09.630 --> 00:00:10.300
17+
Here's how.
18+
19+
5
20+
00:00:11.700 --> 00:00:16.466
21+
This is a real app — real tables, a real database, none of it built by MetaObjects.
22+
23+
6
24+
00:00:16.466 --> 00:00:22.208
25+
We're going to point MetaObjects at one table, and get typed code for it, without touching the rest.
26+
27+
7
28+
00:00:23.608 --> 00:00:26.815
29+
There's no magic import — and honestly, that's fine.
30+
31+
8
32+
00:00:26.815 --> 00:00:29.591
33+
You describe one existing entity in metadata.
34+
35+
9
36+
00:00:29.591 --> 00:00:39.090
37+
And you don't write it from scratch: hand your schema to Claude Code, which already knows the workflow from meta init, and it drafts the metadata for you.
38+
39+
10
40+
00:00:39.090 --> 00:00:44.888
41+
Adopting an existing app is a judgment call, not a one-click button — so start with one table.
42+
43+
11
44+
00:00:46.288 --> 00:00:50.407
45+
Here's that one table described — matching the columns you already have.
46+
47+
12
48+
00:00:50.407 --> 00:00:55.842
49+
The source points at your existing customers table, and fullName maps to your full name column.
50+
51+
13
52+
00:00:55.842 --> 00:01:02.879
53+
And look at the email field: validators live right on it, as child metadata — a required check and an email-format pattern.
54+
55+
14
56+
00:01:02.879 --> 00:01:07.227
57+
That's validation you get to layer on, that the raw database never enforced.
58+
59+
15
60+
00:01:08.627 --> 00:01:09.603
61+
Then meta gen.
62+
63+
16
64+
00:01:09.603 --> 00:01:17.827
65+
You get a typed entity, queries, and routes for your existing table — generated alongside your app, not instead of it.
66+
67+
17
68+
00:01:19.227 --> 00:01:26.359
69+
And the generated code maps your real schema — Drizzle and Zod for your customers table, with fullName wired to full name.
70+
71+
18
72+
00:01:26.359 --> 00:01:32.672
73+
And the validators you layered on come through too: the email format check is right there in the Zod schema.
74+
75+
19
76+
00:01:32.672 --> 00:01:35.069
77+
Typed, idiomatic, ready to use right now.
78+
79+
20
80+
00:01:36.469 --> 00:01:40.232
81+
Run verify against your live database, and it tells you exactly where you stand.
82+
83+
21
84+
00:01:40.232 --> 00:01:41.550
85+
Customers matches the model.
86+
87+
22
88+
00:01:41.550 --> 00:01:45.549
89+
Orders isn't modeled yet — so that's your next table to adopt, whenever you're ready.
90+
91+
23
92+
00:01:46.949 --> 00:01:48.605
93+
This is low-risk by design.
94+
95+
24
96+
00:01:48.605 --> 00:01:54.373
97+
The generated code runs with no MetaObjects dependency, so adopting it commits you to nothing.
98+
99+
25
100+
00:01:54.373 --> 00:02:02.594
101+
You take one table at a time, the rest of your app is untouched, and you keep your escape hatches for anything metadata can't express.
102+
103+
26
104+
00:02:03.994 --> 00:02:09.393
105+
That's adoption: describe one table, generate, adopt — no big rewrite, no magic.
106+
107+
27
108+
00:02:09.393 --> 00:02:16.345
109+
Then, table by table, the model becomes the spine, and meta verify keeps it honest as you grow into it.
110+
111+
28
112+
00:02:17.745 --> 00:02:20.295
113+
You don't have to start over to start.
114+
115+
29
116+
00:02:20.295 --> 00:02:23.381
117+
Run meta init, describe a table, and meta gen.
118+
119+
30
120+
00:02:23.381 --> 00:02:27.407
121+
That's the MetaObjects series — more at metaobjects dot dev.
122+
123+
31
124+
00:02:27.407 --> 00:02:28.749
125+
Thanks for watching.
126+
137 KB
Loading

www/video/drift-detection.vtt

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
WEBVTT
2+
3+
1
4+
00:00:00.500 --> 00:00:06.112
5+
Drift is the silent killer of AI-written code — locally right, globally wrong.
6+
7+
2
8+
00:00:06.112 --> 00:00:08.990
9+
MetaObjects turns it into a build error.
10+
11+
3
12+
00:00:08.990 --> 00:00:10.429
13+
This is meta verify.
14+
15+
4
16+
00:00:11.829 --> 00:00:13.123
17+
Here's one in action.
18+
19+
5
20+
00:00:13.123 --> 00:00:18.854
21+
An agent edited a generated file, and one command caught it — exit one, before it could ship.
22+
23+
6
24+
00:00:18.854 --> 00:00:22.243
25+
Let me show you how this works across your whole stack.
26+
27+
7
28+
00:00:23.643 --> 00:00:27.737
29+
Meta verify checks one thing: does everything still agree with the model?
30+
31+
8
32+
00:00:27.737 --> 00:00:32.504
33+
It does it across three surfaces — your code, your prompts, and your database schema.
34+
35+
9
36+
00:00:32.504 --> 00:00:34.579
37+
Drift on any of them fails the build.
38+
39+
10
40+
00:00:35.979 --> 00:00:38.266
41+
Before we run it, here's that one model.
42+
43+
11
44+
00:00:38.266 --> 00:00:44.897
45+
The Task entity carries its validators right on the fields — that drives the code, and its source drives the schema.
46+
47+
12
48+
00:00:44.897 --> 00:00:49.071
49+
The prompt has a typed payload and a template — that's the third surface.
50+
51+
13
52+
00:00:49.071 --> 00:00:56.045
53+
And look at the references between them: the payload extends a real Task field, and the template points at a real payload.
54+
55+
14
56+
00:00:56.045 --> 00:01:00.618
57+
Those are enforced — rename or delete the target, and the model won't even load.
58+
59+
15
60+
00:01:00.618 --> 00:01:02.905
61+
So the model can't drift against itself.
62+
63+
16
64+
00:01:04.305 --> 00:01:05.530
65+
Surface one: your code.
66+
67+
17
68+
00:01:05.530 --> 00:01:09.258
69+
Verify regenerates from the model and compares it to what's committed.
70+
71+
18
72+
00:01:09.258 --> 00:01:13.944
73+
The moment an agent hand-edits a generated file, it no longer matches — drift, exit one.
74+
75+
19
76+
00:01:15.344 --> 00:01:17.013
77+
Surface two: your prompts.
78+
79+
20
80+
00:01:17.013 --> 00:01:21.509
81+
Every variable in a prompt template has to exist on its typed payload.
82+
83+
21
84+
00:01:21.509 --> 00:01:29.215
85+
Reference a field that isn't there — say, after a rename — and the build fails, instead of the prompt quietly degrading.
86+
87+
22
88+
00:01:30.615 --> 00:01:32.230
89+
Surface three: your schema.
90+
91+
23
92+
00:01:32.230 --> 00:01:35.221
93+
Verify diffs the model against your live database.
94+
95+
24
96+
00:01:35.221 --> 00:01:42.341
97+
A column that drifted out of band — dropped, renamed, or added by hand — gets caught before it bites you in production.
98+
99+
25
100+
00:01:43.741 --> 00:01:47.409
101+
When everything's in sync, one command says so.
102+
103+
26
104+
00:01:47.409 --> 00:01:51.389
105+
Code, prompts, and schema all agree with the model.
106+
107+
27
108+
00:01:51.389 --> 00:01:52.794
109+
Green means green.
110+
111+
28
112+
00:01:54.194 --> 00:01:57.928
113+
Put that one line in your C I, and drift can't merge.
114+
115+
29
116+
00:01:57.928 --> 00:02:06.452
117+
A pull request that diverges from the model fails the check — so an agent has to change the model first, then regenerate.
118+
119+
30
120+
00:02:06.452 --> 00:02:08.988
121+
The model stays the source of truth.
122+
123+
31
124+
00:02:10.388 --> 00:02:11.966
125+
That's the whole idea.
126+
127+
32
128+
00:02:11.966 --> 00:02:18.637
129+
AI code is locally coherent and globally divergent — drift you can't see by reading one file.
130+
131+
33
132+
00:02:18.637 --> 00:02:24.518
133+
Meta verify checks three surfaces against one model, and any mismatch is exit one.
134+
135+
34
136+
00:02:24.518 --> 00:02:28.104
137+
The AI writes the code; the model keeps it honest.
138+
139+
35
140+
00:02:29.504 --> 00:02:33.399
141+
Add meta verify to your build, and make drift a compile error.
142+
143+
36
144+
00:02:33.399 --> 00:02:37.733
145+
This is part of the MetaObjects series — more at metaobjects dot dev.
146+
147+
37
148+
00:02:37.733 --> 00:02:38.989
149+
Thanks for watching.
150+
137 KB
Loading

0 commit comments

Comments
 (0)