A template for building your own AI-driven workflow automation platform. Built on top of Workflow DevKit, this template provides a complete visual workflow builder with real integrations and code generation capabilities.
You can deploy your own version of the workflow builder to Vercel with one click:
What happens during deployment:
- Automatic Database Setup: A Neon Postgres database is automatically created and connected to your project
- Environment Configuration: You'll be prompted to provide required environment variables (Better Auth credentials and AI Gateway API key)
- Ready to Use: After deployment, you can start building workflows immediately
- Visual Workflow Builder - Drag-and-drop interface powered by React Flow
- Workflow DevKit Integration - Built on top of Workflow DevKit for powerful execution capabilities
- Real Integrations - Connect to Resend (emails), Linear (tickets), Slack, PostgreSQL, and external APIs
- Code Generation - Convert workflows to executable TypeScript with
"use workflow"directive - Execution Tracking - Monitor workflow runs with detailed logs
- Authentication - Secure user authentication with Better Auth
- AI-Powered - Generate workflows from natural language descriptions using OpenAI
- Database - PostgreSQL with Drizzle ORM for type-safe database access
- Modern UI - Beautiful shadcn/ui components with dark mode support
- Node.js 18+
- PostgreSQL database
- pnpm package manager
Create a .env.local file with the following:
# Database
DATABASE_URL=postgresql://user:password@localhost:5432/workflow_builder
# Better Auth
BETTER_AUTH_SECRET=your-secret-key
BETTER_AUTH_URL=http://localhost:3000
# AI Gateway (for AI workflow generation)
AI_GATEWAY_API_KEY=your-openai-api-key# Install dependencies
pnpm install
# Run database migrations
pnpm db:push
# Start development server
pnpm devVisit http://localhost:3000 to get started.
- Webhook
- Schedule
- Manual
- Database Event
- Send Email - Send emails via Resend
- Create Ticket - Create Linear tickets
- Database Query - Query or update PostgreSQL
- HTTP Request - Call external APIs
Workflows can be converted to executable TypeScript code with the "use workflow" directive:
export async function welcome(email: string, name: string, plan: string) {
"use workflow";
const { subject, body } = await generateEmail({
name,
plan,
});
const { status } = await sendEmail({
to: email,
subject,
body,
});
return { status, subject, body };
}# Via API
GET /api/workflows/{id}/generate-codeThe generated code includes:
- Type-safe TypeScript
- Real integration calls
- Error handling
- Execution logging
GET /api/workflows- List all workflowsPOST /api/workflows- Create a new workflowGET /api/workflows/{id}- Get workflow by IDPUT /api/workflows/{id}- Update workflowDELETE /api/workflows/{id}- Delete workflow
POST /api/workflows/{id}/execute- Execute a workflowGET /api/workflows/{id}/executions- Get execution historyGET /api/workflows/executions/{executionId}/logs- Get detailed execution logs
GET /api/workflows/{id}/generate-code- Generate TypeScript codePOST /api/workflows/{id}/generate-code- Generate with custom options
POST /api/ai/generate-workflow- Generate workflow from prompt
user- User accountssession- User sessionsworkflows- Workflow definitionsworkflow_executions- Execution historyworkflow_execution_logs- Detailed node execution logs
# Development
pnpm dev
# Build
pnpm build
# Type checking
pnpm type-check
# Linting
pnpm lint
# Formatting
pnpm format
# Database
pnpm db:generate # Generate migrations
pnpm db:push # Push schema to database
pnpm db:studio # Open Drizzle StudioSend transactional emails with Resend's API.
import { sendEmail } from "@/lib/integrations/resend";
await sendEmail({
to: "user@example.com",
subject: "Welcome!",
body: "Welcome to our platform",
});Create and manage Linear issues.
import { createTicket } from "@/lib/integrations/linear";
await createTicket({
title: "Bug Report",
description: "Something is broken",
priority: 1,
});Direct database access for queries and updates.
import { queryData } from "@/lib/integrations/database";
await queryData("users", { email: "user@example.com" });Make HTTP requests to any API.
import { callApi } from "@/lib/integrations/api";
await callApi({
url: "https://api.example.com/endpoint",
method: "POST",
body: { data: "value" },
});- Framework: Next.js 16 with React 19
- Workflow Engine: Workflow DevKit
- UI: shadcn/ui with Tailwind CSS
- State Management: Jotai
- Database: PostgreSQL with Drizzle ORM
- Authentication: Better Auth
- Code Editor: Monaco Editor
- Workflow Canvas: React Flow
- AI: OpenAI GPT-5
- Type Checking: TypeScript
- Code Quality: Ultracite (formatter + linter)
This template is built on top of Workflow DevKit, a powerful workflow execution engine that enables:
- Native TypeScript workflow definitions with
"use workflow"directive - Type-safe workflow execution
- Automatic code generation from visual workflows
- Built-in logging and error handling
- Serverless deployment support
Learn more about Workflow DevKit at workflow.dev
Apache 2.0
