Five-minute demo
One command boots a complete, seeded, browsable app with Studio open.
What you need
Section titled “What you need”The gallery apps live in the framework repository — clone it for the app files only; you run them with your installed CLI and never build the framework:
git clone https://github.com/ingcreators/tesseraqlcd tesseraqlOne command
Section titled “One command”tesseraql dev --stack examples --app-name inventory --embedded-dbNo database, no compose: an embedded PostgreSQL starts inside the process, the app’s
migrations create and seed the schema, and every route serves immediately. Any gallery
app works the same way (purchase-request-app, helpdesk-app, scaffold-demo-app).
Alternatively, one container — a prebuilt image is published with each release:
docker run --rm -p 8080:8080 ghcr.io/ingcreators/tesseraql-demo:latest(Building it yourself — docker build -f deploy/Dockerfile.demo -t tesseraql-demo . —
also works, but compiles the framework from source and takes several minutes.)
First login
Section titled “First login”Studio signs in against the identity store, which the demo does not seed — dev says so at
startup and prints this step. Create an administrator once (second terminal; the CLI finds the
running embedded database by itself):
printf 'demo-password' > admin.pwtesseraql identity-schema --app examples/inventory-app \ --admin-login admin --admin-roles INV_READ,INV_WRITE --admin-password-file admin.pw(The roles grant the demo app’s own inv.read/inv.write policies, so the product pages
open for this login too. Seeding a database the app config points at elsewhere — a remote
server, say? Pass --jdbc-url explicitly; it takes precedence over both the config and
the running embedded database.)
The Studio tour
Section titled “The Studio tour”Open http://localhost:8080/_tesseraql/studio, pick inventory, and walk the loop the framework is built
around — every stop is live against the seeded data:
- Explorer — every route, view, job and workflow the app serves, straight from the
files on disk. Open
web/products/get.yml: the whole page is one YAML document and one 2-way SQL file. - Data browser — the seeded rows (the demo app ships with
tesseraql.studio.dataBrowser.enabled: true). Filter, sort, export CSV; with the row editor enabled, fix a value under audit + confirm. The opt-in spans every declared datasource — switch to theanalyticsDuckDB datasource and the same browser lists its attached catalogs and lake tables ascatalog.schema.table(editing stays onmain). - The instant loop — edit the SQL in the source editor, apply, and the running page changes; scaffold a CRUD slice from a table and its pages serve immediately; create a migration and press Migrate now. No restart anywhere.
- Tests — open a route and run its declarative suite in the sandbox; record a new case from the API console with one click.
- Docs portal — the generated documentation: routes, schema, coverage, the release
diff.
tesseraql admission --app examples/inventory-appis the bar a shared app must clear (marketplace admission). - Dashboards — open
http://localhost:8080/inventory/products/dashboardin the browser: stats, charts and a low-stock table from a handful of SQL files and onerecipe: dashboarddocument, no HTML anywhere in the app — including a supplier-price table read straight off CSV files and a price trend from the lake’s snapshots, live database and analytics engine composing in one page. The product pages share your browser login (the demo app’s JSON APIs stayauth: bearerfor machine callers). - The close, end to end — on the ops console’s jobs page
(
/_tesseraql/ops/console/jobs), runpricing.loadSummary: the ETL reads the CSV drop, lands the summary on the live database, and appends a lake snapshot — then the chainedpricing.dailyReportwrites the day’s CSV and drops it inoutbox/reports/. The produced file is on the transfers page (downloadable), the run history on executions, and the dashboard’s trend chart has a new point (the whole analytics loop).
The low-code loop, end to end
Section titled “The low-code loop, end to end”The demo walks the whole loop. A semi-technical author adds a column and its screen behaviour entirely in Studio, writing no HTML and never restarting: a migration created and applied with Migrate now, a view (a declarative document), and a recorded test from the API console’s one click.
From there the change leaves Studio. It promotes through a release diff
(environment profiles and promotion), and the route’s latency appears on a
scraped dashboard (observability,
deploy/grafana/tesseraql-dashboard.json).
Each leg is held green by an integration test: the zero-restart hot reload, the Studio test recorder, the release diff engine, and the Prometheus exposition.
- your-first-app.md — build one yourself, from an empty directory.
- overview.md — what the framework is for, and what it is not.
- studio.md — the console you just toured, in full.
- app-layout.md — what the files you opened are, and how URLs map to them.