You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
site(video): captions + posters for the re-cuts; drop the pre-1.0.4 caveat
All five Pages-hosted VTTs and posters match the re-rendered mp4s now on the
Cloudflare site. The getting-started caveat ("Recorded before 1.0.4") is gone
— the cut itself is 1.0.4 now; its description drops forms/hooks/grid (never
generated in the new run) and says "drift fails the build instead of
shipping". The drift-detection heading stops saying "compile error" about the
gate — that phrase is retired positioning.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BHEQGNA9McKNBwDkesNMDC
Copy file name to clipboardExpand all lines: www/video/adopt-existing.vtt
+85-53Lines changed: 85 additions & 53 deletions
Original file line number
Diff line number
Diff line change
@@ -17,110 +17,142 @@ You adopt it, incrementally.
17
17
Here's how.
18
18
19
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.
20
+
00:00:11.700-->00:00:14.446
21
+
And the first step isn't even installing anything.
22
22
23
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.
24
+
00:00:14.446-->00:00:24.444
25
+
One line to your coding agent runs a fit assessment against your actual repo — read only, propose only — and it comes back with a verdict for your app, including a no when it's a no.
26
26
27
27
7
28
-
00:00:23.608-->00:00:26.815
29
-
There's no magic import — and honestly, that's fine.
28
+
00:00:24.444-->00:00:25.598
29
+
Let's say it's a yes.
30
30
31
31
8
32
-
00:00:26.815-->00:00:29.591
33
-
You describe one existing entity in metadata.
32
+
00:00:25.598-->00:00:25.982
33
+
Onward.
34
34
35
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.
36
+
00:00:27.382-->00:00:32.148
37
+
This is a real app — real tables, a real database, none of it built by MetaObjects.
38
38
39
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.
40
+
00:00:32.148-->00:00:37.890
41
+
We're going to point MetaObjects at one table, and get typed code for it, without touching the rest.
42
42
43
43
11
44
-
00:00:46.288-->00:00:50.407
45
-
Here's that one table described — matching the columns you already have.
44
+
00:00:39.290-->00:00:42.498
45
+
There's no magic import — and honestly, that's fine.
46
46
47
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.
48
+
00:00:42.498-->00:00:45.274
49
+
You describe one existing entity in metadata.
50
50
51
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.
52
+
00:00:45.274-->00:00:54.773
53
+
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.
54
54
55
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.
56
+
00:00:54.773-->00:01:00.571
57
+
Adopting an existing app is a judgment call, not a one-click button — so start with one table.
58
58
59
59
15
60
-
00:01:08.627-->00:01:09.603
61
-
Then meta gen.
60
+
00:01:01.971-->00:01:06.090
61
+
Here's that one table described — matching the columns you already have.
62
62
63
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.
64
+
00:01:06.090-->00:01:11.525
65
+
The source points at your existing customers table, and fullName maps to your full name column.
66
66
67
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.
68
+
00:01:11.525-->00:01:18.562
69
+
And look at the email field: validators live right on it, as child metadata — a required check and an email-format pattern.
70
70
71
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.
72
+
00:01:18.562-->00:01:22.909
73
+
That's validation you get to layer on, that the raw database never enforced.
74
74
75
75
19
76
-
00:01:32.672-->00:01:35.069
77
-
Typed, idiomatic, ready to use right now.
76
+
00:01:24.309-->00:01:26.212
77
+
Now — what should this generate?
78
78
79
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.
80
+
00:01:26.212-->00:01:28.114
81
+
MetaObjects doesn't decide that.
82
82
83
83
21
84
-
00:01:40.232-->00:01:41.550
85
-
Customers matches the model.
84
+
00:01:28.114-->00:01:33.642
85
+
Claude asks the catalog, and takes what the app needs: entity, queries, routes, and a barrel.
86
86
87
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.
88
+
00:01:33.642-->00:01:38.755
89
+
Meta eject copies each one into your repo — plain TypeScript generators, yours to own.
90
90
91
91
23
92
-
00:01:46.949-->00:01:48.605
93
-
This is low-risk by design.
92
+
00:01:40.155-->00:01:41.130
93
+
Then meta gen.
94
94
95
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.
96
+
00:01:41.130-->00:01:49.355
97
+
You get a typed entity, queries, and routes for your existing table — generated alongside your app, not instead of it.
98
98
99
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.
100
+
00:01:50.755-->00:01:57.886
101
+
And the generated code maps your real schema — Drizzle and Zod for your customers table, with fullName wired to full name.
102
102
103
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.
104
+
00:01:57.886-->00:02:04.200
105
+
And the validators you layered on come through too: the email format check is right there in the Zod schema.
106
106
107
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.
108
+
00:02:04.200-->00:02:06.596
109
+
Typed, idiomatic, ready to use right now.
110
110
111
111
28
112
-
00:02:17.745-->00:02:20.295
113
-
You don't have to start over to start.
112
+
00:02:07.996-->00:02:11.760
113
+
Run verify against your live database, and it tells you exactly where you stand.
114
114
115
115
29
116
-
00:02:20.295-->00:02:23.381
117
-
Run meta init, describe a table, and meta gen.
116
+
00:02:11.760-->00:02:13.077
117
+
Customers matches the model.
118
118
119
119
30
120
-
00:02:23.381-->00:02:27.407
121
-
That's the MetaObjects series — more at metaobjects dot dev.
120
+
00:02:13.077-->00:02:17.076
121
+
Orders isn't modeled yet — so that's your next table to adopt, whenever you're ready.
122
122
123
123
31
124
-
00:02:27.407-->00:02:28.749
124
+
00:02:18.476-->00:02:20.004
125
+
This is low-risk by design.
126
+
127
+
32
128
+
00:02:20.004-->00:02:29.223
129
+
The generated entity module imports only Drizzle and Zod; the routes mount through one ordinary open-source package — so adopting it is reversible, table by table.
130
+
131
+
33
132
+
00:02:29.223-->00:02:35.106
133
+
The rest of your app is untouched, and you keep your escape hatches for anything metadata can't express.
134
+
135
+
34
136
+
00:02:36.506-->00:02:44.305
137
+
That's adoption: assess the fit, describe one table, choose your generators, generate, adopt — no big rewrite, no magic.
138
+
139
+
35
140
+
00:02:44.305-->00:02:50.999
141
+
Then, table by table, the model becomes the spine, and meta verify keeps it honest as you grow into it.
142
+
143
+
36
144
+
00:02:52.399-->00:02:55.003
145
+
You don't have to start over to start.
146
+
147
+
37
148
+
00:02:55.003-->00:03:00.347
149
+
Have your agent assess the fit, run meta init, describe a table, and meta gen.
150
+
151
+
38
152
+
00:03:00.347-->00:03:04.185
153
+
That's the MetaObjects series — more at metaobjects.dev.
0 commit comments