# 2. Vertical Slices The spine of this wiki. A **slice** documents one realistic UI action end-to-end: from the click in the browser to the row written in the database, passing through every layer in between — the metadata read, the proc invoked, the cache invalidated. Slices are the only place we write narrative prose. Concepts and reference chapters are short by design; slices carry the load. Slices are ordered by complexity. Each new slice introduces a new framework concept. Re-read earlier slices once you've read later ones — the cross-refs back-fill. | # | Slice | Concept(s) introduced | |---|---|---| | 1 | [a CRUD module (Hello World)](01-hello-world.md) | modules, forms, master/slave, jurisdiction | | 2 | [multi-tenancy and product editions](02-multi-tenancy.md) | sBrandsId/sSubsidiaryId scoping, sVersionFlowId editions | | 3 | [a module with a report](03-report.md) | views, report templates, jxls | | 4 | [extending — a custom field](04-custom-field.md) | gdsconfigformuserslave, schema-less extension | | 5 | [extending — a per-customer SQL override](05-customer-sql-override.md) | script/客户/, override channel | | 6 | [a hardware-integrated module](06-hardware.md) | xlyPlc, serial, RPC into the press | | 7 | [a module with workflow](07-workflow.md) (deferred) | Activiti, biz_flow, approval — dormant in dev | Slices 1–5 are mainstream. Slice 6 is optional for readers who'll never touch hardware. Slice 7 is deferred: the Activiti tables are empty in the dev DB.