A pixel-perfect clone of Weavy.ai workflow builder, focused on LLM workflows with Google Gemini API integration.
npm install
# or
pnpm installCopy the example environment file:
cp .env.local.example .env.localThen edit .env.local and add your API keys:
- Clerk (for authentication): Get keys from Clerk Dashboard
- Google Gemini (for LLM): Get key from Google AI Studio
- Database: Set up PostgreSQL (use Supabase or Neon for free tier)
- Trigger.dev (for node execution): Get keys from Trigger.dev
- Transloadit (for file uploads): Get keys from Transloadit
Note: For development, you can run without Clerk keys - the app will work but authentication will be disabled.
# Generate Prisma client
npx prisma generate
# Run migrations (when database is set up)
npx prisma migrate devnpm run devOpen http://localhost:3000 in your browser.
- ✅ Pixel-perfect UI matching Weavy.ai
- ✅ 6 Node Types: Text, Image Upload, Video Upload, LLM, Crop Image, Extract Frame
- ✅ DAG validation (no circular dependencies)
- ✅ Type-safe connections
- ✅ Undo/Redo functionality
- ✅ Keyboard shortcuts (Delete/Backspace)
- ✅ Workflow export/import (JSON)
- ✅ Connected input state
- ✅ Workflow history with node-level details
- ✅ Clerk authentication (optional in dev)
- Next.js 16 - React framework with App Router
- TypeScript - Type safety
- React Flow - Workflow canvas
- Zustand - State management
- Prisma - Database ORM
- Clerk - Authentication
- Tailwind CSS - Styling
- Zod - Schema validation
workflow-builder-app/
├── app/
│ ├── api/ # API routes
│ ├── editor/ # Workflow editor page
│ └── layout.tsx # Root layout
├── components/
│ ├── nodes/ # Node components
│ ├── ui/ # UI components
│ └── ...
├── lib/
│ ├── workflow-store.ts # Zustand store
│ ├── connection-utils.ts # Type-safe connections
│ └── workflow-utils.ts # DAG validation
└── prisma/
└── schema.prisma # Database schema
The app can run without Clerk keys in development mode. Just skip the Clerk environment variables and the app will work (without auth protection).
- Set up Clerk account and add keys to
.env.local - Set up PostgreSQL database and add
DATABASE_URL - Set up Trigger.dev for node execution
- Set up Transloadit for file uploads
GET /api/workflows- List workflowsPOST /api/workflows- Create workflowGET /api/workflows/[id]- Get workflowPUT /api/workflows/[id]- Update workflowDELETE /api/workflows/[id]- Delete workflowGET /api/runs- List workflow runsPOST /api/runs- Create workflow run
If you see Clerk errors, either:
- Add Clerk keys to
.env.local, or - The app will work in development mode without auth
# Kill process on port 3000
lsof -ti:3000 | xargs kill -9
# Or use a different port
PORT=3001 npm run dev# Remove lock and rebuild
rm -rf .next
npm run devSee IMPLEMENTATION_STATUS.md for detailed implementation status.
- Set up Trigger.dev for node execution
- Integrate Transloadit for file uploads
- Connect to PostgreSQL database
- Deploy to Vercel
MIT