Custom apps
Modules and bundles cover a lot, but sometimes you want a screen that's exactly yours: a picking view for a worker, a dashboard, a one-off tool. Custom apps let you build that on top of your data, without standing up a separate app.
An app is a set of pages, and a page is a stack of blocks. Blocks stay structured (there's no freeform canvas), which is what keeps a hand-built or AI-built app safe to render. If you've rearranged your dashboard, it's the same idea taken further: your own pages, your choice of pieces. The editor previews blocks live as you compose them.
The blocks
- View: embed a saved view, with an optional title.
- Record: show one record's detail, picked by an id from the page context.
- Action: a button that runs a registered action, with your label on it.
- Form: create or edit a record of some kind, showing only the fields you choose. This is how an intake page shows three fields instead of twenty.
- Stat: a number over a view: a count, or a sum of a field. Dashboard tiles.
- Markdown: instructions, headings, links; the prose between the working parts.
- Scan: the capture surface, embedded where the job needs it.
- Custom: your own code, sandboxed (below), for what the blocks can't say.
Custom code, sandboxed
A custom block is an HTML and JavaScript bundle the app player renders inside a sandboxed iframe. The code never holds a token and can't call the API directly: it asks for reads over a message channel, and the player fulfils them with a short-lived, capability-scoped credential. Untrusted code can never do more than the person viewing it could.
Read scope
A custom app only sees the fields you give it. That boundary is the point: you can hand a worker a focused tool over part of your data without exposing the rest of the workspace. Pair it with People & permissions and members land straight in the app, with only the abilities you granted.
Make it look like yours
An app can carry its own theme, because the point is that it looks like the builder's thing, not like Cobblr: colors, font, corner radius, a logo. Themes are validated tokens rather than raw CSS (a hex color can't inject a stylesheet), and a logo or font can be uploaded inline so a self-hosted app has no external dependencies. Anything unset falls back to Cobblr's defaults.