Skip to content

Create your first flow

Now that pgflow is installed, let’s create a simple greeting workflow that demonstrates the core concepts.

Our workflow will:

  1. Take a person’s first and last name as input
  2. Format a full name
  3. Create a personalized greeting

First, create a directory for your flow:

mkdir -p supabase/functions/_flows
  • Directorysupabase
    • Directoryfunctions
      • Directory_flows
        • greet_user.ts

Create a file called supabase/functions/_flows/greet_user.ts with this content:

supabase/functions/_flows/greet_user.ts
import { Flow } from 'npm:@pgflow/dsl';
type Input = {
first_name: string;
last_name: string;
};
export default new Flow<Input>({
slug: 'greet_user',
})
.step(
{ slug: 'full_name' },
(input) => `${input.run.first_name} ${input.run.last_name}`
)
.step(
{ slug: 'greeting', dependsOn: ['full_name'] },
(input) => `Hello, ${input.full_name}!`
);
  1. Input: The flow receives first_name and last_name parameters
  2. first_name step: Combines the names using input.run to access the flow input
  3. greeting step: Takes the result of the first step (via input.full_name) and creates a greeting

When run with {"first_name": "Alice", "last_name": "Smith"}, this produces { "greeting": "Hello, Alice Smith!" }.

For more in-depth explanation of the Flow DSL, see Understanding the Flow DSL.