ImagineArt Workflows: App Builder
Turning node-based AI workflows into publishable, monetizable apps, starting from any selection on the canvas.
- Company
- ImagineArtAI image and video creation platform with 100M+ users across web and mobile.
- Role
- Senior Frontend Engineer
- Period
- Feb 2026 – Sep 2026
- Location
- San Francisco, CA (remote)
Original reconstruction for this portfolio.
Overview
ImagineArt Workflows lets creators chain AI image and video models on a node-based canvas. I architected and launched App Builder, which turns those workflows into publishable, monetizable apps with in-editor test runs and a guided publish flow.
Around it, I worked across the canvas itself: zoom-aware media loading, group connections that wire a whole selection in one drag, shared node components adopted across dozens of node types, and nodes such as Creative Analyzer, Ad Maker, Storyboard, and the Combine Audio & Video timeline.
Context and problem
A workflow graph makes sense to the person who built it. An app has to make sense to everyone else. To publish one, the system needs to know which nodes are the app’s inputs, which are its results, and which are internal steps the end user should never see.
Creators can select any part of a canvas, so that answer can’t be configured by hand for every selection. It has to come from the structure of the graph itself.
My role and ownership
What I built
- Architected and launched App Builder for ImagineArt Workflows: in-editor test runs and a guided publish flow.
- Built one-click “Build App” from any canvas selection, using a graph planner that derives entry inputs and final outputs from dependency and reachability rules.
- Previewed the plan on hover: planned inputs and outputs light up on the canvas before anything is created, from the same planner the click uses.
- Improved canvas rendering by about 20% via zoom-aware media loading (6 resolution tiers across image, video, and import nodes) and identity-based memoization.
- Built group connections: drag a whole section or multi-selection onto a node and every member wires into the node’s roomiest compatible input, with type validation and slots added up to the input’s limit.
- Engineered reusable canvas components: a config-driven action toolbar used by 45 node types, a resize system used by 30, and a floating results carousel with inertial panning used by 29.
Challenges
Deriving a contract from an arbitrary selection
A selection can be a whole workflow or a fragment of one. The app’s inputs and outputs had to be inferred from how the selected nodes depend on each other, not from manual configuration.
Keeping a media-heavy canvas responsive
Workflow nodes show generated images and video at every zoom level. Loading full-resolution media everywhere makes panning and zooming expensive, and re-rendering media on every frame makes it worse.
Consistency across dozens of node types
Toolbars, resizing, and result browsing rebuilt per node type drift apart in behavior and cost. They needed to be shared without becoming rigid.
Design and architecture decisions
Plan from the graph, not from settings
The planner walks dependencies and reachability inside the selection to find where data enters and where final results leave. The creator selects; the system works out the contract.
Show the plan before building it
Hovering Build App paints the plan onto the canvas: inputs glow violet, outputs amber, everything else dims. The hover and the click share one planner, so what is shown is exactly what gets built.
Load only the pixels the zoom level needs
Image, video, and import nodes pick one of 6 resolution variations by zoom bucket. A node re-renders only when zoom crosses a bucket, never per frame, so panning leaves media alone, and node renders memoize on data identity.
Configure shared components per node type
The action toolbar is driven by configuration, so each node type declares its actions instead of shipping its own toolbar.
Selected implementation details
Loading the interactive reconstruction…
Selection to app
Select nodes, plan, preview on hover, build, test-run inside the editor, then publish through a guided flow.
Zoom-aware media
Six resolution tiers for image, video, and import nodes, level-of-detail thumbnails when zoomed out, and re-renders only when zoom crosses a tier.
Group connections
One drag connects a whole group: each member is checked against the target’s supported input types and lands in its own slot, with incompatible handles dimmed while you drag.
Platform components
Action toolbar (45 node types), resize system (30), and a floating results carousel with inertial panning (29).
Group connections
Wiring ten reference images into a node used to take ten drags. A section or multi-selection now grows one output handle per data type. Drop it on a node and every member lands in its own slot of the roomiest compatible input, with new slots added up to that input’s limit. Inputs that can’t take the type dim while the wire is in the air, and a group with mixed outputs explains why it can’t connect.
Other nodes I shipped on this canvas
Original reconstructions after the live nodes.
Creative Analyzer
Ad-effectiveness predictions for enterprise clients through Brainsuite’s scoring API, with a schema-driven test wizard, reports for 3 ad formats, and PDF/XLSX/CSV export.
Combine Audio & Video
A timeline inside the node: every wired clip gets a lane, with per-track volume and mute, and drags that snap to any clip edge.
Ad Maker
Video ads from product, avatar, and template selections.
Storyboard and Sound Effects
Two more AI nodes on the same canvas: storyboard frames and generated sound effects.
Outcomes
- ~20%faster canvas rendering
- From zoom-aware image and video loading and identity-based memoization.
- 120 fpspan and zoom on an image- and video-heavy workflow
- Measured on the live canvas on a 120 Hz display: median frame 8.3 ms, p95 9.3 ms once media is cached. A team result that includes my rendering work.
- 2,152commits to the ImagineArt web app
- Every commit across all branches, Feb to Sep 2026. The most of 33 contributors.
- 100M+users on the ImagineArt platform
- The scale of the product I shipped into, not users I acquired.
Figures come from my resume or from measuring the shipped product. Where a number describes the product or the team rather than my work, the context says so.
Technologies
- React
- TypeScript
- React Flow
- Zustand
- TanStack Query
- WebSockets
- Graph algorithms
- Rendering performance