FrontierJS

The Frontier
is coming.

One starting source of truth. Get your database, API and UI …with validation, authorization, pagination, live updates, migrations, typed clients and forms derived, not written.

Derived from the schema, extended by you

Validation

Every write checked against the field rules in the schema.

autoValidate()

Authorization

Who can read and write a row is declared on the model.

@@gate

Pagination

Limits, offsets and cursors on every list, with no slicing in memory.

$after

Live updates

Lists change on screen when the rows change.

announce()

Migrations

The schema is diffed against the live database. You never write a migration file.

Typed client

The browser knows every service, field and filter.

ServiceTypes

Forms

The right control, label and options per field, and server errors on the right input.

@label

Audit trail

Every write is logged, with protected fields redacted.

AI agent access

An MCP endpoint over your app, with the gate as the permission model.

mcp()

Encryption at rest

Sensitive fields are sealed at the data boundary.

@encrypted

State machines

The UI shows only the actions allowed now, and the server refuses the rest.

@@transitions

Conflict detection

Two people editing one record cannot overwrite each other.

x-version

Field-level redaction

Who sees what, per field rather than per row.

$readAs

Safe filter and sort

Nobody filters or sorts on a field they cannot read.

$checkWhere

Multi-tenancy

One app, many tenants, each kept to its own data.

resolveTenancy

Admin UI

Browse and edit every model from the schema alone.

Litestone Studio

Test environment

A real app over a real database, in every test.

createTestEnv