Skip to content
Platform / Applications

Build the interface your operation needs.

Combine business objects, Function results, and Actions into focused applications for your teams.

Explore ApplicationsInspect source

How do your teams use it?

Dashboards
Configured panels over Function results
Workspaces
Configured objects, links, Actions, and work
Custom apps
Authored TypeScript and React
Product client
Generated typed operation access

An interface around the business operation.

Switch between monitoring, an operational workspace, and a custom quote interface.

Supplier onboarding / dashboardGuided example · sample data

Know where the work stands.

Configured panels display the output of the onboarding cases Function.

08Cases
03Awaiting signature
02Needs evidence
Meridian ComponentsAwaiting signature
Northline SupplyNeeds evidence
Fieldstone PartsActive

How Applications work.

Explore quote and acceptance

Monitor with dashboards.

Present Function results in declared panels. Choose the data and presentation for the team’s task, while the Function owns the calculation and read contract.

Work from the object.

Compose workspaces from object selections, properties, relationships, Function panels, Actions, and associated work. Put investigation and the next operation within reach.

Build a custom React application.

Author the interface your process needs. A generated product client provides typed access to objects, Functions, and the Action planning and execution path.

Reuse the operation across interfaces.

A tailored screen can present a business operation differently without becoming a second authority for its rules. The server checks the current proposal when an Action runs.

Follow it into the source.

An exact excerpt from the repository, with the complete source file available to inspect and download.

Verify and accept a quote tsx
  async function acceptCurrentQuote() {    if (local === null || isAcceptanceInFlight.current) return;    isAcceptanceInFlight.current = true;    setIsAccepting(true);    const revision = inputRevision.current;    const input = {      request_id: requestId, unit_price_minor: BigInt(unitPrice), units: BigInt(units),      discount_bps: BigInt(discount), tax_bps: BigInt(tax),    };    try {      setOperationError(null);      const plan = await acceptBookingQuote.plan(client, input, { targetKey: requestId });      if (inputRevision.current !== revision) return;      await acceptBookingQuote.execute(client, plan, { planHash: plan.hash });      if (inputRevision.current !== revision) return;      setAccepted(true);    } catch (cause) {      if (inputRevision.current !== revision) return;

You choose the interface and compose its views. An object definition does not automatically design an entire application. Client-side calculations and hidden controls do not replace server-side checks.

Read the capability reference

Connect the next part of the process.

Bring us a process.
We'll build it with you.

A business process, the systems it touches, and the rules it needs to follow.