Skip to content
Back to work

viffit: try it on your avatar before you buyviffit:买之前先穿到虚拟形象上

Year
2026
Status
Paused
Outcome
An iOS try-on prototype that answers one question: buy it or not

The app hands you a stand-in. You pick a body type, enter height and weight, and get an avatar with a generic face — no photo of yourself required. After that, anything you're tempted to buy gets screenshotted in, put on that avatar, and checked against the clothes you've already logged. It comes back as buy it, buy it but you'll need something else first, or skip it. Swiping a look away is the signal; there's no rating step.

That wasn't the first idea. It started as "tell me the occasion and I'll pick an outfit from your closet." On day four a single commit turned it around — avatar system, look carousel, wardrobe drawer, purchase evaluation, all in one change — and styling became a buying decision. Eighteen days, March 11 to March 29, 59 commits: Expo on iOS, a Node backend, Postgres, and a small Astro landing page.

The commit count tells you nothing about this one. I didn't really know how to develop yet, so a commit was whatever had piled up — 66,370 lines added across those 59, eleven of them over a thousand lines each, the largest touching 196 files and 16,633 lines.

Most of that time went into the image. A try-on shot has to come back on white, with the figure filling the frame, wearing only the garment that was swapped in rather than a whole new outfit, and the prompts had to fork by gender. More than a dozen commits are nothing but that. One version was more careful: generate three candidates, score them against a reference for position and size, keep the best. I cut it the day after it worked, and the reason is in the commit message — three images cost three times as much, and regenerating once when you don't like the result is cheaper. The scoring script is still in the repo, imported and never called.

The habit was to write the task down before writing code — 33 of those files — and to have two models argue out any call that wasn't obvious, which left 28 transcripts. One argument turned up a real hole: the image editor's Save button only wrote its numbers into local phone storage, while the backend code that actually edits the file had been written and never wired up. Still true at the last commit.

The last feature landed on March 29; the April 24 commit only checkpointed local notes, and nothing in the history says why it ended there. 65 issues closed, 81 open, no CI. Of 152 tests, the backend's 19 pass on a clean clone and 130 of the 133 frontend ones do — the three failures are looking for image assets deliberately kept out of version control. The landing page is finished, down to the line promising Android next, but there's no build or store configuration in the repo and no trace of it ever going out. A prototype that runs, not a product that shipped.