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
docs(getting-started): map every authorable defineStack collection to its directory and guide (#10357)
The project-layout tree showed seven directories — exactly the `os g <type>`
generator defaults — for a stack that declares 32 authorable collections. A
developer holding a report, a job, an email template or a permission set had
no way to answer "where does this go" from the page that exists to teach
project navigation.
Two additions, both derived rather than recalled:
- The layout tree now carries the union of what `examples/app-todo` and
`examples/app-crm` lay out flat plus the `os g` defaults, and a second tree
shows the group-by-domain variant `examples/app-showcase` actually ships.
The two trees disagree about paths and agree about keys, which is the
point the section already made about there being no filename-suffix magic.
- A routing table: every authorable `defineStack()` key, one clause for what
it declares, and the page to read next. Keys with no hand-written guide
link their generated reference under /docs/references/ and nothing else.
The key list is enumerated from ObjectStackDefinitionSchema's runtime shape
(44 keys), not transcribed. The 12 excluded keys are named in the page with
their reason.
Claude-Session: https://claude.ai/code/session_01GawRwpD44VwBDVy3hs77AX
Co-authored-by: Claude <noreply@anthropic.com>
Each folder has an `index.ts` barrel that re-exports its metadata; those barrels
144
172
are imported into `objectstack.config.ts`. There is **no filename-suffix magic** —
145
173
metadata is wired in through those explicit imports, so `objectstack.config.ts` is
146
174
the one place that tells you what's actually in the app.
147
175
176
+
Which is why the directory is a convention and the **`defineStack()` key is the
177
+
contract**: the two trees above disagree about paths and agree exactly about
178
+
keys. So when you are holding a piece of metadata and want to know where it
179
+
goes, start from the key —
180
+
[Where each piece of metadata goes](#where-each-piece-of-metadata-goes) lists
181
+
every one of them.
182
+
183
+
## Where each piece of metadata goes
184
+
185
+
Every piece of metadata in an app arrives through one `defineStack()` key. This
186
+
is the full authorable set, ordered data → interface → automation → integration
187
+
→ access → AI — one clause each, and the page to read next:
188
+
189
+
|`defineStack()` key | Declares | Guide |
190
+
| :--- | :--- | :--- |
191
+
|`objects`| Business objects — tables, fields, validation |[Objects](/docs/data-modeling/objects)|
192
+
|`objectExtensions`| Fields and config merged into an object another package owns |[Reference](/docs/references/data/object)|
193
+
|`datasources`| Connections to external databases and APIs |[External Datasources](/docs/data-modeling/external-datasources)|
194
+
|`datasourceMapping`| Rules routing a package, namespace or object pattern to a datasource |[External Datasources](/docs/data-modeling/external-datasources)|
195
+
|`data`| Seed records loaded at bootstrap |[Seed Data](/docs/data-modeling/seed-data)|
196
+
|`hooks`| Record lifecycle logic on insert / update / delete |[Hooks](/docs/automation/hooks)|
197
+
|`mappings`| Field mappings for data import and export |[Reference](/docs/references/data/mapping)|
198
+
|`analyticsCubes`| Semantic-layer cubes over the object graph |[Reference](/docs/references/data/analytics)|
199
+
|`datasets`| Query-shaped datasets that charts and reports read from |[Analytics](/docs/data-modeling/analytics)|
200
+
|`apps`| Navigation shells — which tabs a user sees |[Apps](/docs/ui/apps)|
201
+
|`views`| List / form / kanban lenses over an object |[Views](/docs/ui/views)|
0 commit comments