App Builder
NewTurn your backend into a usable app — no second codebase. Admins compose pages from configurable blocks (table, form, kanban, calendar, chart, map, and more) on a simple grid, and every role uses those pages as their daily workspace, all governed by the permissions you already have.
An Internal Tool Builder, Built In
Pages are rows of data-bound blocks — the builder and the end-user view are the same components, not two apps.
Most teams end up writing a separate admin app on top of their backend. Baasix removes that step. Admins add pages to the navigation menu and fill each one with blocks — a table over your orders collection, a kanban grouped by status, a form that creates records, a chart that aggregates on the server. Configuration is stored in the database (in the baasix_Page and baasix_Block system collections), so it is versionable, exportable, and editable through the UI, the SDK, or AI. Non-admin roles see only the pages they are allowed to read; admins get an in-place “Editing” toggle to add, configure, move, and delete blocks live on the page.
- 17 block types: table, form, details, kanban, calendar, chart, cardlist, map, geochart, markdown, filter, buttons, media, feed, iframe, upload, code
- In-place WYSIWYG editing — the builder and the rendered app are the same components
- Every data block binds to a collection and rides your existing RBAC and row-level conditions
- 12-column grid that collapses to a clean stacked layout on mobile
- Public pages for forms and dashboards reachable without login (with optional human-check)
- Filter blocks drive sibling blocks; master-detail wiring via URL params
- Server-side config validation on every save — no broken pages
Compose Pages from Blocks
Pick a block, bind it to a collection, drop it on the grid. That's a page.
Each block carries a JSON config describing what it shows — columns, fields, group-by, aggregation, filters, row actions — and a position on the 12-column grid. Filters everywhere use the same items-API filter DSL you already know from permissions and queries.
// A page is rows of blocks; blocks bind to collections.
// Create one over the SDK (or build it visually in the UI editor):
const page = await baasix.items('baasix_Page').create({
name: 'Operations', slug: 'operations', icon: 'gauge',
})
await baasix.items('baasix_Block').create({
page_Id: page.id,
type: 'table',
collection: 'orders',
position: { row: 0, col: 0, span: 8 },
config: {
columns: [{ field: 'id' }, { field: 'customer' }, { field: 'total' }],
filter: { status: { eq: 'open' } },
actions: { create: true, edit: true, view: true },
},
})
// Renders at /pages/?slug=operations — public pages at /p/?slug=...Why Build Apps in Baasix?
You could ship a separate admin app. Here's the difference.
✓ With Baasix
- Pages and blocks bind directly to your collections and schema
- One permission system governs data, pages, and blocks
- In-place editing — no separate builder app to keep in sync
- Config lives in the database: exportable, importable, AI-editable
- Public form pages, dashboards, and role homepages out of the box
✗ Traditional Approach
- Hand-build a second app and wire every screen to the API
- Re-implement auth and access checks in the admin app
- Maintain builder and renderer as two diverging codebases
- Hardcode layouts that can only change with a deploy
- Build form handling, rate limiting, and dashboards yourself
A Block for Every View
Tables & Forms
Data grids with filters, sorting, inline edit, bulk actions and row actions; forms that create or edit records with sections and validation.
Kanban & Calendar
Drag-to-update kanban boards grouped by a field, and calendars mapped to date fields with month/week/day views.
Charts & Stats
Nine chart types (bar, line, area, pie, doughnut, radar, polar, treemap, stat) with server-side aggregation, time ranges and compare deltas.
Maps & Geocharts
Leaflet maps with clustered markers and popups, plus choropleth world geocharts that shade countries by an aggregated value.
Filters & Master-Detail
Filter blocks publish state to sibling blocks; any block filter can read a URL param to wire selection-driven detail views.
Feeds, Media, Cards & More
Card lists, media galleries, realtime feeds/threads, markdown, buttons, iframes, uploads and a code/JSON viewer.
What You Can Build
From a quick internal dashboard to a full role-based workspace.
Internal Admin Tools
Ops dashboards, CRM-style record views, and back-office workflows over your existing collections — no separate app to maintain.
Role-Based Workspaces
Give each role its own homepage and curated menu. Support sees tickets, sales sees the pipeline, all from the same backend.
Public Forms & Portals
Contact forms, intake flows, and public dashboards on unauthenticated pages, with rate limiting and an optional human-check.
Data Apps & Reports
Charts, geocharts, kanban and calendars that aggregate live data — built and tweaked in minutes by a non-developer admin.
Portable & AI-Ready
Move apps between instances, and let AI assemble them for you.
Export any set of pages as a self-contained page bundle (pages + blocks + the collections they need) and import it on another instance with a validation preview that flags missing collections, slug conflicts, and unresolved references. Because the whole thing is plain config, AI assistants can build pages for you: the MCP server exposes dedicated page/block tools plus a live block-config reference, so you can ask Claude or Copilot to “build an orders dashboard with a table and a status chart” and get a working, validated page.
- Page bundle export/import with a dry-run validation report (missing collections, slug conflicts)
- MCP page-builder tools: create/update pages and blocks from natural language
- Live block-config reference resource so AI generates valid configs
- Build over the SDK with the generic items() API — no special client needed
App Builder FAQ
Who can build and edit pages?
Only administrators see the in-place UI editor and can create, update, or delete pages and blocks. Other roles get read-only access governed by baasix_Permission — the sidebar menu is simply "the pages this role is allowed to read".
Do blocks bypass my permissions?
No. Every data block goes through the same collection permissions and row-level conditions as any other API request. A block over a collection a role cannot read renders an empty/error state — it never leaks data.
Is this a drag-and-drop canvas like Appsmith?
It is a block-based grid, not a free-form canvas. Pages are rows of blocks on a 12-column grid that collapses to a stacked layout on mobile — simpler to reason about, and it maps cleanly onto your schema and permissions.
How do I move an app between environments?
Export a page bundle (pages + blocks + required collection names) as JSON and import it on the target instance. The importer runs a dry-run first, reporting missing collections, missing fields, and slug conflicts so you can resolve them before writing.
Can AI build pages for me?
Yes. The MCP server exposes baasix_create_page, baasix_create_block, baasix_validate_block_config and related tools, plus a block-config reference resource, so AI assistants can assemble and validate pages from a natural-language request.
Ready to build faster?
Join developers who are shipping production-ready backends in hours, not weeks.