App interfaces

Screens nobody hand-builds. Views everyone trusts.

Take a support workbench: reps work a grid of open cases, the team lead drags a kanban grouped by status, and everyone checks the due-date calendar. In ObjectOS that is one view definition — rendered per user, live as records change, and adjustable in the view designer without touching a file.

ObjectOS product surface connecting business data, applications, and AI agents
AI Writes metadata Objects, permissions, workflows, tools
Human Reviews diff Business authority, data access, approvals
Runtime Enforces policy UI, APIs, audit, MCP, actions
Zero
Hand-built frontend for list, form, and detail surfaces
Per user
Rows, fields, and actions filtered by permissions
Live
Screens update in real time as records change

A screen as metadata

The view is part of the reviewable definition.

This is that workbench: a grid with columns, a kanban grouped by status, a calendar on due dates, and a saved “Open Cases” list — one definition. When an agent adds a field, the affected screens are part of the same small diff, not a frontend ticket.

import { defineView } from '@objectstack/spec';

const data = { provider: 'object' as const, object: 'support_case' };

export const CaseViews = defineView({
  list: {
    label: 'All Cases',
    type: 'grid',
    data,
    columns: [
      { field: 'subject' },
      { field: 'customer' },
      { field: 'priority' },
      { field: 'status' },
      { field: 'due_date' },
    ],
    appearance: {
      allowedVisualizations: ['grid', 'kanban', 'calendar'],
    },
    kanban: { groupByField: 'status', columns: ['subject', 'customer', 'priority'] },
    calendar: { startDateField: 'due_date', titleField: 'subject', colorField: 'status' },
  },
  listViews: {
    open: {
      label: 'Open Cases',
      type: 'grid',
      data,
      columns: [{ field: 'subject' }, { field: 'customer' }, { field: 'priority' }],
      filter: [{ field: 'status', operator: 'equals', value: 'open' }],
    },
  },
});

Rendered from metadata

The workbench, surface by surface

Typed fields carry their own widgets and formatting, so generated screens look and behave consistently without a design-system project.

Views & lists

The same cases render as a grid, a kanban, or a calendar — with sorting, saved filters like “Open Cases”, and bulk actions — declared, not built.

Forms & detail pages

The case form follows the field types and validations: priority renders as its colored picklist, required means required. The UI can never drift from the rules.

Dashboards

Case volume and SLA counters sit next to the queue they summarize, sharing the same definitions and permissions.

Navigation & apps

Support gets a focused workspace — its objects, views, and dashboards grouped into one app — instead of one giant admin.

Multi-language UI

Labels, formats, and translations resolve per locale, so one definition serves every region.

The view designer

Adjust the screen while looking at the screen

Views open in a live-preview designer in the open-source console — the preview is the real renderer with the draft injected, so what you see is what ships.

Live preview while you edit

Change a column, watch the grid change — the designer renders list, kanban, calendar, and form views with real data as you work.

Column & filter inspectors

Add, hide, and reorder columns from an inspector; build nested and/or filters visually — “open, urgent, unassigned” without writing a query.

Record pages from blocks

Compose detail pages from blocks — sections, fields, buttons — each with visibility rules, dragged into place on a canvas.

Responsive by design

The page designer previews mobile, tablet, and desktop breakpoints with a component tree and undo/redo — layout decisions stay visible.

Permission-aware by construction

One screen definition, a different view for every user

Screens are not personalized by hand — they are shaped by the permission model. That is what keeps a generated UI trustworthy.

Rows they can see

The rep’s grid shows their team’s cases; the auditor’s shows everything — same screen definition, row rules applied inside the query.

Fields they can read

Masked and hidden fields stay masked in tables, forms, exports, and detail views — enforced by the runtime, not the frontend.

Actions they can take

The escalate button appears only when the user’s permissions and the record’s state allow it — gated server-side, not just hidden.

Real-time collaboration

Record changes, comments, and activity feeds stream to open screens, so the team works from the same live picture.

Decision surface

What changes, who reviews it, what runs

Business needAI writesRuntime supplies
A workbench for the support teamViews, forms, and an app definitionRendered screens, navigation, saved filters
The lead wants a kanban, reps want a gridOne view with two visualizationsBoth, rendered from the same definition
Managers see more than repsRow and field rules on the objectThe same screen, shaped per user
Ops tweaks columns without a deployNothing — the designer edits the same metadataLive preview, inspectors, drafts

Review checklist

A UI review should confirm

  • Screens are declared in metadata, not forked into custom code.
  • Every list and dashboard respects row-level rules.
  • Masked fields stay masked in exports and detail views.
  • Actions are permission-gated, not just hidden.
  • New fields reach screens through the same reviewed diff.

FAQ

Questions this page should answer

Can we still build custom screens?

Yes. The generated surfaces cover the repetitive CRUD majority, and the same APIs and permission model back any custom frontend you add — custom screens never bypass governance.

Is the view designer in the open-source edition?

Yes. The live-preview view designer, column and filter inspectors, the block-based page canvas, and the responsive page designer ship in the open-source console — alongside metadata-rendered views, forms, dashboards, navigation, localization, and real-time updates.

Next pages

Keep building the evaluation packet.