mdxui

Activities

The ing.as platform for universal activity apps

Activities

ing.as is the universal platform for activity apps - any verb becomes an app.

{object}.{verb}.ing.as/{context}/{role}

The Grammar of Activities

Every activity follows a consistent grammar that maps directly to URLs:

Subject-Verb-Object

Subject    performs    Action    on    Object
  │                      │              │
  Who                   What           Target
  (Worker)             (Verb)         (Thing)

The Verb Lifecycle

Action → Activity → Event
  │         │         │
 scan   scanning   scanned
approve approving  approved
review  reviewing  reviewed
StageFormWhenExample
ActionImperativeCommand to do"scan this barcode"
ActivityGerund (-ing)While doing"scanning barcode..."
EventPast tenseAfter done"barcode scanned"

URL Structure

{object}.{verb-stem}.ing.as/{context}/{role}

barcode.scann.ing.as/warehouse/picker
   │       │             │        │
   │       │             │        └── Role: who's doing it
   │       │             └── Context: where/what business
   │       └── Verb stem: the action (scan → scann)
   └── Object: what's being acted on

Why Verb Stems?

The subdomain uses the verb stem (not full gerund) because ing.as provides the "-ing":

VerbStemSubdomain
scanscannscann.ing.as
approveapprovapprov.ing.as
reviewreviewreview.ing.as
processprocessprocess.ing.as
generategeneratgenerat.ing.as
analyzeanalyzanalyz.ing.as

Activity Categories

Data Entry Activities

ActivitySubdomainUse Cases
Scanning{object}.scann.ing.asBarcodes, QR codes, documents
Entering{object}.enter.ing.asForms, data entry
Uploading{object}.upload.ing.asFiles, images, documents
Recording{object}.record.ing.asAudio, video, notes

Approval Activities

ActivitySubdomainUse Cases
Approving{object}.approv.ing.asInvoices, requests, PRs
Reviewing{object}.review.ing.asCode, documents, applications
Signing{object}.sign.ing.asContracts, documents
Verifying{object}.verif.ing.asIdentity, data, claims

Communication Activities

ActivitySubdomainUse Cases
Drafting{object}.draft.ing.asEmails, proposals, docs
Messaging{object}.messag.ing.asChat, notifications
Calling{object}.call.ing.asVoice, video calls
Presenting{object}.present.ing.asSlides, demos

Processing Activities

ActivitySubdomainUse Cases
Processing{object}.process.ing.asOrders, payments, requests
Triaging{object}.triag.ing.asTickets, issues, leads
Sorting{object}.sort.ing.asItems, priorities
Routing{object}.rout.ing.asTasks, messages, requests

Creation Activities

ActivitySubdomainUse Cases
Generating{object}.generat.ing.asContent, reports, code
Creating{object}.creat.ing.asRecords, items, resources
Building{object}.build.ing.asProjects, features
Designing{object}.design.ing.asUI, graphics, systems

Analysis Activities

ActivitySubdomainUse Cases
Analyzing{object}.analyz.ing.asData, metrics, trends
Monitoring{object}.monitor.ing.asSystems, metrics, logs
Tracking{object}.track.ing.asTime, progress, shipments
Auditing{object}.audit.ing.asLogs, compliance, finances

Scheduling Activities

ActivitySubdomainUse Cases
Scheduling{object}.schedul.ing.asMeetings, appointments
Booking{object}.book.ing.asResources, rooms, services
Planning{object}.plann.ing.asProjects, sprints, events
Coordinating{object}.coordinat.ing.asTeams, resources

Context + Role Customization

The same activity renders differently based on context and role:

Example: barcode.scann.ing.as

/warehouse/picker
├── Large scan button
├── Item details display
├── Quantity confirmation
├── Bin location
└── Next item in pick list

/warehouse/receiver
├── PO lookup
├── Quantity received
├── Condition check
├── Put-away location
└── Discrepancy reporting

/retail/cashier
├── Running total
├── Item lookup
├── Price check
├── Discount application
└── Payment integration

/retail/inventory
├── Count mode
├── Location verification
├── Stock level display
├── Reorder alerts
└── Batch scanning

Example: invoice.approv.ing.as

/finance/manager
├── Full invoice preview
├── Line item breakdown
├── Budget impact
├── Approval chain
└── Comment required

/finance/controller
├── Batch approval view
├── Exception flagging
├── Audit trail
├── Policy compliance
└── Delegation options

/operations/manager
├── PO matching
├── Delivery confirmation
├── Service verification
├── Quick approve/reject
└── Escalation path

Activity App Structure

Each activity app has a consistent structure:

Views

ViewPurpose
QueueList of items to process
ActiveCurrent item being worked
HistoryCompleted items
SettingsActivity preferences

Panels (Active View)

ActiveView
├── ObjectPanel (what you're acting on)
├── ActionPanel (controls to perform action)
├── ContextPanel (relevant context/history)
├── NavigationPanel (prev/next/skip)
└── StatusPanel (progress, queue depth)

Activity Flow

Queue → Select → Preview → Act → Confirm → Next
  │       │        │       │       │        │
  │       │        │       │       │        └── Return to queue
  │       │        │       │       └── Event recorded
  │       │        │       └── Activity in progress
  │       │        └── Review object
  │       └── Pick from queue
  └── Available work

Subject: Workers

The Subject performing activities is always a Worker (Human or Agent):

interface Worker {
  ask(prompt: string): Promise<Response>
  do(task: Task): Promise<Result>
}

class Human implements Worker {
  // Uses ing.as UI to perform activities
  // Sees queue, picks items, performs actions
}

class Agent implements Worker {
  // Uses ing.as API/MCP to perform activities
  // Automated processing of queues
}

Human Workers

Access activities via browser:

barcode.scann.ing.as/warehouse/picker
→ Mobile-optimized UI
→ Camera access for scanning
→ Touch-friendly controls

Agent Workers

Access activities via API/MCP:

POST barcode.scann.ing.as/api/scan
{
  "object": "barcode",
  "context": "warehouse",
  "role": "agent",
  "data": { "barcode": "123456789" }
}

Object: Things Being Acted On

The Object in {object}.{verb}.ing.as is the Thing type being processed:

ObjectThing TypeExamples
barcodeBarcodeProduct, asset, location codes
invoiceInvoiceAP invoices, bills
documentDocumentContracts, forms, PDFs
codeCodePRs, commits, files
ticketTicketSupport tickets, issues
leadLeadSales leads
orderOrderCustomer orders
emailEmailMessages to review/send
meetingMeetingCalendar events
taskTaskWork items
contentContentArticles, posts, copy
dataDataRecords, datasets

Events: Activity Completion

When an activity completes, it produces an Event:

interface ActivityEvent {
  $type: string        // 'BarcodeScanned', 'InvoiceApproved'
  $id: string          // Event ID
  timestamp: Date      // When it happened

  // The grammar
  actor: Worker        // Who did it
  action: string       // What they did
  object: Thing        // What they did it to
  result: Thing        // What was produced

  // Context
  context: string      // Where it happened
  role: string         // In what capacity
}

// Example
{
  $type: 'InvoiceApproved',
  $id: 'evt_123',
  timestamp: '2024-01-15T10:30:00Z',
  actor: { $type: 'Human', name: 'Jane Smith' },
  action: 'approve',
  object: { $type: 'Invoice', $id: 'inv_456' },
  result: { $type: 'Approval', $id: 'apr_789' },
  context: 'finance',
  role: 'manager'
}

Event Flow

Activity (ing.as) → Event (schema.org.ai) → Workflow (trigger)
      │                    │                      │
  "approving"         "approved"            "on approved"

Events can trigger workflows:

# Workflow definition
$type: Workflow
trigger:
  event: InvoiceApproved
  context: finance
actions:
  - notify: accounts-payable
  - schedule: payment
  - update: budget

Reverse Relations

Every activity has a reverse relation for querying:

ActivityEventReverse
scanningscannedscannedBy
approvingapprovedapprovedBy
reviewingreviewedreviewedBy
creatingcreatedcreatedBy
assigningassignedassignedTo
# Find all invoices approved by Jane
query {
  invoices(where: { approvedBy: "jane@acme.com" }) {
    id
    amount
    approvedAt
  }
}

# Find all items scanned at warehouse today
query {
  barcodes(where: {
    scannedAt: { gte: "2024-01-15" },
    context: "warehouse"
  }) {
    id
    item
    scannedBy
  }
}

Integration with Studios

Activities integrate with the studio ecosystem:

Management.Studio
└── monitors activities across businesses

Agents.Management
└── assigns agent workers to activities

API.Management
└── exposes activity APIs

ing.as
└── provides the activity UI/API

Activity Metrics in Studios

ManagementDashboard
├── ActivitiesPanel
│   ├── Active now (who's doing what)
│   ├── Throughput (activities/hour)
│   ├── Queue depth (waiting work)
│   └── Completion rate

Summary

The ing.as platform provides:

  1. Universal Activity URLs - Any verb becomes {object}.{verb}.ing.as
  2. Context + Role Customization - Same activity, different UIs
  3. Human + Agent Workers - Both can perform activities
  4. Event Production - Activities produce events for workflows
  5. Studio Integration - Metrics and management across businesses

The grammar:

Subject (Worker) + Action (Verb) + Object (Thing) = Activity (ing.as)
                                                           ↓
                                                    Event (schema.org.ai)
                                                           ↓
                                                    Workflow (trigger)

On this page