RootCX
Docs
Pricing
RootCX/RootCX
Introduction
What is RootCX?How it Works
Build
Getting StartedApplicationAI AgentIntegrationDeploying
Platform
CoreAuthenticationRBACData APISecret VaultJob QueueAudit LogReal-time Logs
Developers
QuickstartReact SDKBackend & RPCManifest ReferenceREST APISelf-Hosting
RootCXBuildApplication

Build an Application

A RootCX Application is made of three pieces: a manifest that defines your data model and permissions, a backend for custom logic, and a frontend for the UI. The Core handles everything else -- database tables, CRUD API, authentication, access control, and process supervision.

You don't need to write any of this from scratch. Describe what you want and the AI Forge generates the entire structure.


Quick Start

Open the Studio, create a new project, and type a prompt in the AI Forge:

"A CRM to manage contacts, companies, and deals with a sales pipeline."

The Forge scaffolds a manifest, a backend worker, and a React frontend. Hit Run (F5). The Core creates the database tables, starts the worker, and the app launches.

CRM Contacts view
CRM Companies view
CRM Deals pipeline
CRM Deal detail
The screenshots use the Seed Demo Data button to populate the app with realistic sample records. This button is available in the Studio toolbar during development.

What Gets Generated

The Forge creates a project with this structure:

sales_crm/
├── manifest.json         # Data model, permissions, actions
├── backend/
│   └── index.ts          # Backend logic
└── src/
    └── App.tsx           # User interface

You can review and edit every file. The AI generates code you own.


The Manifest

The manifest.json is the single source of truth for your application. It declares your entities (tables), their fields, permissions, and actions. Everything else -- database tables, API endpoints, constraints -- is derived from it automatically.

Here is what a contacts table looks like in the manifest:

{
  "appId": "sales_crm",
  "name": "Sales CRM",
  "dataContract": [
    {
      "entityName": "contacts",
      "fields": [
        { "name": "first_name", "type": "text", "required": true },
        { "name": "last_name",  "type": "text", "required": true },
        { "name": "email",      "type": "text" },
        { "name": "phone",      "type": "text" }
      ]
    }
  ]
}

Every entity gets id, created_at, and updated_at columns automatically.

Field types

Type Description
text Variable-length string.
number Numeric value.
boolean True/false.
date Calendar date.
timestamp Date and time.
json Arbitrary structured data.
file Uploaded file reference.
entity_link Link to another entity (foreign key).
[text] Array of strings.
[number] Array of numbers.

Relationships

Use entity_link to connect entities. For example, a deal linked to a contact and a company:

{ "name": "contact_id", "type": "entity_link", "references": { "entity": "contacts", "field": "id" } },
{ "name": "company_id", "type": "entity_link", "references": { "entity": "companies", "field": "id" } }

Constrained values

Use enumValues to restrict a field to a set of allowed values:

{ "name": "stage", "type": "text", "enumValues": ["lead", "qualified", "proposal", "won", "lost"], "defaultValue": "lead" }

Permissions

Add permission keys to the manifest to control who can do what:

"permissions": {
  "permissions": [
    { "key": "contacts.create", "description": "Create contacts" },
    { "key": "contacts.read",   "description": "View contacts" },
    { "key": "deals.update",    "description": "Edit deals" },
    { "key": "deals.delete",    "description": "Delete deals" }
  ]
}

Keys follow the entity.action convention. Once deployed, assign them to roles via the Studio Roles & Permissions panel. See RBAC for details.


Evolving Your App

Need to add a field, a new table, or change a type? Edit the manifest (or ask the Forge to do it) and hit Run again. The Schema Sync Engine diffs your manifest against the live database and applies only what changed. No migration files needed.

The Schema Sync Engine drops columns removed from the manifest and can drop orphaned tables. Only id, created_at, and updated_at are protected.

Actions

Actions are named operations declared in the manifest. Declaring them makes them discoverable by the Studio, integrations, and AI agents:

"actions": [
  {
    "id": "pipeline",
    "name": "Pipeline Summary",
    "description": "Returns deal counts per stage"
  }
]

To gate access, declare matching keys in the permissions block (e.g. action.pipeline).


File Uploads

Add a file field to any entity to enable file uploads. Max 50 MB per file. Supported formats include PDF, images, spreadsheets, CSV, JSON, and more.


Deploy

Press Run (F5) in Studio. The deployment pipeline:

  1. Manifest install -- creates or updates database tables and permissions.
  2. Schema sync -- applies any differences to the live database.
  3. Backend deploy -- starts the backend worker.
  4. App running -- the frontend connects and your app is live.
appId is immutable. It becomes the database schema name. Changing it after the first deploy requires manual data migration.

What You Can Build

RootCX is purpose-built for custom internal software. Some examples:

  • CRM & sales pipeline -- contacts, companies, deals, activities. Row-level access so reps see only their accounts.
  • Billing & subscriptions -- plans, invoices, usage events. Workers handle Stripe webhooks and status updates.
  • Fleet & field operations -- vehicles, drivers, assignments, maintenance schedules. Nightly jobs flag overdue maintenance.
  • Document approval workflows -- documents, versions, approval chains. Each step triggers notifications.
  • Industry-specific tools -- construction projects, clinical trials, logistics tracking. Any relational model works.

Next Steps

  • Getting Started -- your first app in five minutes.
  • Deploying -- deployment flow and production setup.
  • For developers: Manifest Reference, Backend & RPC, React SDK.
PreviousGetting StartedNextAI Agent

On this page

Quick Start
What Gets Generated
The Manifest
Permissions
Evolving Your App
Actions
File Uploads
Deploy
What You Can Build
Next Steps