Skip to main content

Quick Start

Write and run your first FlowForger flow.

Create a Flow​

Create a file called hello.ff.ts. No imports needed — the transformer resolves the decorators and FlowContext automatically:

@Flow('HelloWorld')
class HelloWorld {
@HttpTrigger({ method: 'POST' })
trigger() {}

@Action()
async run(ctx: FlowContext) {
await ctx.response('Response', 200, { message: 'Hello from FlowForger!' });
}
}

Validate​

Check the flow for mistakes, including the rules Power Automate enforces when a flow is saved:

npx flowforger validate hello.ff.ts

A clean flow prints ✓ No issues found.; otherwise each finding is printed with its line, column and code; see Validation and diagnostics.

Run Locally​

npx flowforger run hello.ff.ts

On a terminal this prints the execution trace, one line per action. Pipe it or pass --json to get the full run result as JSON instead.

Compile to IR​

npx flowforger compile hello.ff.ts --out hello.ir.json

Compile to Logic Apps JSON​

npx flowforger compile hello.ff.ts --emit logicapps --out clientdata.json

Run a real flow safely​

A flow that reads from SharePoint and then writes somewhere can run locally against your real data without making the write. Sign in with --auth (after setting up an app registration) and stop before the first action that changes anything:

npx flowforger run my-flow.ff.ts --auth --stop-before Create_item

Everything before Create_item runs live, and the CLI prints the inputs Create_item would have been called with. --mock replaces an action's result with a JSON file, and --live makes every other outgoing call stop the run. See Local testing.

Next Steps​

  • DSL Overview — Learn the full DSL syntax
  • Examples — Runnable example flows, from a first HTTP call to child flows and mocks
  • Deploying — pull, diff and push against a Dataverse environment
  • CLI Reference — All available commands