Core Concepts
The mental model behind Based.
Bases
A Base is a workspace — like a Notion workspace or a project folder. Each base is an entity in the bucket at bases/{baseId}.json. It holds metadata like name, icon, and access control lists.
Pages
Pages are Tiptap JSON documents stored as entities at pages/{pageId}.json. Each page has a baseId linking it to a base and an optional parentPageId for unlimited nesting. The tree structure you see in the sidebar is computed from this flat list.
Blocks
Blocks are the building blocks of pages — headings, paragraphs, lists, callouts, toggles, images, and more. They live inside the Tiptap JSON document of a page. Based extends Tiptap with custom block types:
- Callout Block — colored info/warning/tip boxes
- Toggle Block — collapsible content sections
- Database Block — inline views of entity collections (the big one)
Database Blocks
A Database Block is a Tiptap node that references an entity collection in the bucket (e.g. customers/) and renders it as a table, board, list, or gallery. The block definition lives inside the page, but the data it displays comes from the bucket.
Multiple Database Blocks can reference the same collection with different filters, sorts, and visible columns. Editing an entity in one view updates it everywhere.
Entities
Everything in Based is an entity — a JSON file in the bucket. Bases, pages, users, view configs, and your own business data (customers, invoices, products) are all peers at the bucket root. The S3WORM library provides typed access, schemas, oplog, soft delete, and snapshots for all entities.