npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

frontdeskos-automation-builder

v0.1.0

Published

Visual automation workflow builder for FrontDeskOS

Downloads

95

Readme

frontdeskos-automation-builder

Visual drag-and-drop workflow builder for FrontDeskOS. Build automation workflows with triggers, actions, conditions, delays, and branching logic — powered by React Flow.

MIT License npm version

Install

npm install frontdeskos-automation-builder react react-dom

Quick Start

import { AutomationBuilder } from 'frontdeskos-automation-builder';
import 'frontdeskos-automation-builder/styles.css';

const triggers = [
  {
    type: 'call.missed',
    description: 'Fires when an inbound call is missed',
    category: 'call',
    availableFields: ['callerPhone', 'callerName', 'direction'],
  },
];

const actions = [
  {
    type: 'send_sms',
    label: 'Send SMS',
    description: 'Send an SMS message',
    category: 'communication',
    fields: [
      { name: 'to', label: 'To', type: 'text', required: true, supportsVariables: true },
      { name: 'message', label: 'Message', type: 'textarea', required: true, supportsVariables: true },
    ],
  },
];

function App() {
  return (
    <AutomationBuilder
      availableTriggers={triggers}
      availableActions={actions}
      onSave={(workflow) => console.log(workflow)}
    />
  );
}

Features

  • Drag-and-drop canvas — visually connect triggers, actions, conditions, delays, and branches
  • Trigger registry — define available triggers (calls, appointments, leads, schedules, webhooks) with typed fields
  • Action registry — define actions (SMS, email, CRM updates, HTTP requests, AI generation) with configurable form fields
  • Template support — load pre-built workflow templates
  • Validation — built-in workflow validation with error/warning reporting
  • Test mode — simulate step-by-step workflow execution
  • Theming — light and dark mode support
  • Read-only mode — display workflows without editing

Node Types

| Node | Description | |------|-------------| | Trigger | Entry point — the event that starts the workflow | | Action | Performs an operation (send SMS, create lead, HTTP request, etc.) | | Condition | Filters execution based on field comparisons | | Delay | Pauses execution for a specified duration | | Branch | If/else split based on conditions |

Props

interface AutomationBuilderProps {
  automation?: Workflow | null;        // Existing workflow to load
  availableTriggers: TriggerDefinition[];  // Trigger registry
  availableActions: ActionDefinition[];    // Action registry
  templates?: WorkflowTemplate[];      // Pre-built templates
  onSave?: (workflow: Workflow) => void | Promise<void>;
  onTest?: (workflow: Workflow) => void | Promise<void>;
  theme?: 'light' | 'dark';
  readOnly?: boolean;
}

Exports

// Components
import { AutomationBuilder } from 'frontdeskos-automation-builder';

// State hook
import { useWorkflowState } from 'frontdeskos-automation-builder';

// Utilities
import { autoLayout, validateWorkflow, hasBlockingErrors } from 'frontdeskos-automation-builder';

// Types
import type {
  Workflow,
  TriggerConfig,
  TriggerDefinition,
  ActionDefinition,
  ActionStep,
  WorkflowTemplate,
  BuilderNode,
  BuilderEdge,
  ValidationError,
  AutomationBuilderProps,
} from 'frontdeskos-automation-builder';

Workflow JSON

The builder produces and consumes a Workflow object:

{
  "name": "Missed Call Follow-Up",
  "triggerConfig": {
    "eventType": "call.missed",
    "conditions": []
  },
  "actions": [
    {
      "id": "delay_1",
      "type": "delay",
      "config": { "minutes": 2 }
    },
    {
      "id": "sms_1",
      "type": "send_sms",
      "config": {
        "to": "{{trigger.callerPhone}}",
        "message": "Hi {{trigger.callerName}}, we missed your call!"
      }
    }
  ]
}

Variable Interpolation

Action fields that support variables use {{trigger.fieldName}} syntax to reference trigger event data:

Hi {{trigger.callerName}}, we missed your call at {{trigger.callerPhone}}.

Peer Dependencies

  • react ^18.0.0
  • react-dom ^18.0.0

License

MIT