Core concepts
A Benmore app is defined by a few plain files. You describe the data; the platform generates the API, enforces access, and serves the frontend.
The schema is the source of truth
You define your tables in a schema. Each model becomes a table with a REST endpoint and full CRUD — list, create, read, update, delete, plus pagination, filtering, and batch operations — without writing any backend code.
That model gives you /api/contacts immediately. When you change the schema, the platform reconciles your live database for you.
Access is scoped by default
Records are owned by the user who creates them and are only visible to that user unless you say otherwise. You can declare per-table access rules (public read, role-gated writes, multi-tenant org scoping) — the API enforces them on every request.
A frontend, served for you
Apps ship a frontend (TypeScript/TSX) with a small typed SDK for talking to your API, auth, and real-time updates. Static assets are compiled and served automatically — no build step to run.
Logic when you need it
Beyond CRUD, you can add custom API routes, run logic before or after a record changes, schedule jobs, send email or webhooks, and broadcast real-time events — declaratively, alongside your schema.
Next: Schema & database · API & the SDK · Flows · Access & roles