Design Lab / project
Allemanac
I own more graphic tees than I can remember owning. Half of them live in a drawer I never open. The idea was dumb and simple: photograph everything once, put it in a database, and let software do the "what goes with what" part. Then it got out of hand, in a good way.
The idea
A closet is just an inventory with feelings.
Every piece gets a photo, a type, a colour and a tag. Fifty-two items so far. Shoes count. Belts count.
Pick pieces onto a rail, name the look, save it. A stylist note tells you what is missing. "Dress for: everyday" is a real dropdown.
Stage the outfit against one of five fitted body references and let an image model put the clothes on me. Face, tattoos, pose all preserved.
The backend
Two processes, one private volume.
Python, standard library only, SQLite in WAL mode. The web process serves the UI and the API. A worker process watches for staged try-on jobs, claims one atomically, writes a provider-neutral work package to disk, calls the renderer, and marks the job ready or failed. Any job can be replayed by hand from that package.
The renderer is a swappable adapter. It shipped with an honest placeholder that just laid the body reference next to the garment photos. Now it calls an image model with the reference plus the garments and a prompt that is mostly rules: keep the face, keep the tattoos where the garment does not cover them, never crop a sleeve. If the model fails, the placeholder still renders and the job records why.
Auth is doubled on purpose. Authentik in front, and the app checks the identity header itself, so a request straight to the container port gets a 401 instead of my body references.
allemanac.allemanit.com devzone, Caddy
forward_auth -> Authentik
-> allemanac-web :8792 UI + API, identity re-checked
-> allemanac-worker try-on jobs
/data (private volume, never in git)
closet.db items, outfits, jobs
catalog-media/ my photos of the clothes
stock-media/ product refs, keyed by item id
models/ five fitted body references
worker-queue/job-N.json replayable work package
tryon-results/job-N.png the render
provider = gemini (was: composite)
body ref + garments + rules --> one image
nightly: media mirrored to the NAS, models/ stays home The fun part
Software for a drawer of t-shirts.
"Dress with intent." "Own it. Style it. Wear it." The Today page reads like an editorial because a closet app that reads like a spreadsheet gets opened once. The tabs are sticky notes. There is a little cartoon of me.
Five body references, shot against a wall in my underwear, labelled front relaxed, front open, left profile. The first "renders" were a contact sheet. The first real one, with the model actually dressing me, was the moment it stopped being a joke.
The dashboard tracks what I have actually worn. It says 0%. That number is the real reason the app exists, and it is going to be embarrassing for a while.
Got a collection, a shop, a thing that needs a real record?
Same shape as the diecast vault. This is the kind of build Quick IT does. Free 30-minute consult.