Back to works
Storyboard to video, 39 seconds

AI Application

mico

Four AI production tools in one desktop app, with a bill you can trust.

A macOS app I designed and built for a media studio's daily generative work: prompt tools, image and video generation, and a storyboard chain from idea to panel grid. Every round is filed to a project and priced twice, estimate first, actual after. Roughly halved our pre-production time, by my estimate.

Tools
Tauri v2 · Rust · React 19 · TypeScript · Zustand · Vitest · Claude · OpenAI Images · Seedance (Volcengine Ark) · Cloudflare R2 · ffmpeg
Role
Product · Design · Engineering
Year
2026
244
commits · 1,361 tests passing
4
areas: prompt · image · video · storyboard
554 + 48
images and videos generated through it on one machine
3
product generations, each change on record
DetailsRead the full storyCollapse

What it is

Home is four planets on an arc, one per area, sharing only settings, the design system, a one-shot handoff and the current project. Prompt tools are deterministic where a rule beats a model: a seven-view character reference board and fifteen "looks" written as visible properties (light, shadow, grade, material) rather than style words. Image generation runs on OpenAI's image models with drag-and-drop references and a built-in sketch pad. Video runs on five Seedance models with text, first-and-last-frame and multi-reference modes. A utilities room does green-screen alpha extraction and video-to-frames locally.

The storyboard chain

Idea → brief → concept with characters, setting and key props → script → director's shot list → reference cards → a 2×2 to 4×4 grid cut into panels. Manual mode is one step per click, each reviewed and editable, with a stepper to walk back and redo from any point. Auto mode runs the whole chain in one click. Afterwards every layer stays live: edit a shot, redraw a panel with its cards as references, enhance to 2K, upload a replacement, restore any of the last five versions, or send a panel to the video area as a first frame. Each stage persists before the next starts, so a failure resumes.

Money and reliability

Video cost depends on model, output resolution tier, input-video seconds with a four-second floor, and dated promotions; the formula was rebuilt from the official price page and tested against every worked example on it, and actual cost uses the server's token count and the order date. Image cost is estimated before and read from the response after. Tasks are claimed synchronously before the first await, so React's double-run can never bill twice. In-flight work persists and resumes on relaunch; "sync cloud" reconciles the vendor's task list and downloads anything missing. Two billing accounts, per-project spend, monthly totals.

Three generations

It started as a storyboard app (idea to panel grid). When the output moved from stills to video, it became a Seedance prompt compiler: six stages, twenty-five director profiles, a de-AI pass that strips filler words. When image and video generation became products in their own right, the single pipeline was replaced by independent areas, each rebuilt around one real need at a time. The storyboard chain came back as the fourth area, its text agents recovered verbatim from git history and wrapped in a new, fully injectable stage runner that runs under test with fakes.

Engineering notes

Tauri v2 with a thin Rust layer: an HTTP proxy for a vendor that sends no CORS headers, R2 uploads with SigV4 signing and MD5 verification so local reference videos can be used at all, drag-and-drop file reads. React 19, TypeScript strict, Zustand, Tailwind, Vitest: 133 test files, 1,361 passing, two tested invariants (API keys never written to disk, large input bytes never written). About 61,000 lines of app code and 22,000 of tests. SPEC.md and CHANGELOG.md updated with every version. Bilingual UI. Distributed as a signed-for-nothing .dmg to a four-person team.