Product

APIs, access control, files, and automation from one application model.

Define tables and relationships in YAML, JSON, or dashboard3. Daptin uses that model to create the database, APIs, permissions, file handling, actions, integrations, and live events.

Create your first table →

Generated from the model

What Daptin creates when it loads a model.

Database structure

Daptin creates tables, base identifiers, timestamps, declared columns, indexes, and relationship tables in SQLite, MySQL, or PostgreSQL.

Database support →

HTTP resources

Each application table receives JSON:API collection, record, relationship, filter, sort, pagination, and aggregation requests.

CRUD requests →

Machine descriptions

OpenAPI describes routes and action inputs. GraphQL exposes generated query access for clients that use it.

API overview →

Operator screens

dashboard3 reads the live model and gives administrators screens for records, permissions, actions, users, storage, and system configuration.

Data and APIs

Create and query application records.

Define fields and relationships for a product, customer, order, or ticket. Daptin creates database tables and JSON:API routes for create, list, filter, update, delete, and related-record requests.

The running server also exposes OpenAPI and GraphQL descriptions. Use dashboard3 to browse records while a frontend is still being built.

Define a schema →
GET /api/product?page[size]=20
GET /api/product/{reference_id}
POST /api/product
PATCH /api/product/{reference_id}
dashboard3 overview showing data and API tools
dashboard3 groups record management, API tools, imports, exports, and configuration in the server interface.
dashboard3 permissions table showing guest, user, and group access

Accounts and access

Apply the same access rules to rows, files, actions, and subscriptions.

Daptin signs users in and evaluates guest, user, owner, and group permissions for each table. A customer portal can give every person private records and grant a team access through one workspace group.

Those checks also apply when someone follows a relationship, downloads a file, runs an action, or subscribes to record changes.

Configure permissions →

Files and content

Attach files to records and inherit their permissions.

Add an asset column to store a product image with its product, an invoice with its order, or a support attachment with its ticket. The record's access rules determine who can retrieve the file.

Use local storage for a small installation or configure an rclone-backed store for S3-compatible services and other supported providers. Daptin also serves stored files through site and subsite routes.

Configure file storage →

Upload

Send multipart files or use Daptin's asset routes from the frontend.

Protect

Use the owning record and its groups to decide who can retrieve each file.

Store

Keep assets locally or sync them to a configured cloud store.

Serve

Attach files to records or expose a managed site directory.

dashboard3 actions table showing server-side operations

Actions and scheduled work

Move multi-step backend work into a named action.

Define an approve order action that validates the request, changes the order status, creates an audit record, and sends a notification. The frontend calls the named action instead of coordinating those steps in the browser.

Run actions from HTTP requests, state transitions, data exchanges, or schedules. Each action declares its input and output fields.

Build an action →

External services

Call external APIs with credentials stored on the server.

Install an OpenAPI description and expose selected operations as Daptin actions. Store one shared provider credential on the server or keep a separate OAuth token for each signed-in user.

The integration-auth demo proves that one user cannot borrow another user's connected-account credential. The OAuth provider demo shows another application signing in through Daptin.

Run the integration demos →

Connected account

A support agent connects their own provider account. Daptin selects that user's encrypted token when the action runs.

Shared provider

A billing action uses one server-held credential. The frontend sends order data, not the provider secret.

// subscribe after loading the dashboard
const socket = new WebSocket("wss://api.example/live")

// refresh only when an allowed order changes
socket.onmessage = ({ data }) => {
  const event = JSON.parse(data)
  if (event.type === "order.update") refreshOrders()
}

Live updates

Subscribe to record changes over WebSocket.

Daptin publishes record events through its live WebSocket endpoint. Subscribe a dashboard to order changes, a customer portal to ticket updates, or a monitoring screen to new usage records.

Read permissions determine which topics and records a connection may receive.

Subscribe to record events →

Create a table and inspect the generated API.