FotoDrop: 20 Hours from First Commit to First Deploy
A family photo album made with coding agents: from a dictated prompt on Thursday evening to the first production deploy on Friday, and what is still missing.

TL;DR
On Thursday evening I dictate a prompt. On Friday afternoon the first production deploy goes out, 20 hours and 32 minutes after the first commit. The product is called FotoDrop, a family photo album for households with both iPhones and Android phones. The design came together in parallel, and the direction I'd picked in advance didn't hold up in the first real round. What's done so far is the foundation. The launch is planned for 1 November.
Thursday, 18:15, a dictated prompt
At 18:07 I buy the domain picturecatch.app. Eight minutes later I dictate the kickoff prompt. I dictate in German, so the quotes here are translated.
The brief: "The goal is to spin an offshoot out of this repo, so we don't bury EventDrop under features but take a second, separate, good path." The parent is EventDrop. There, guests at a party upload their photos through a QR code, with no app and no login. I've written about EventDrop's first paying users before. The prompt also says: "EventDrop is good as it is, but I think it can be turned into something better."
The new idea: a shared album for families where one person has an iPhone and the other an Android phone. A bit like iCloud, but for both. The goal comes at the end, right after a "Let's go!": "The goal is for this project to be online on 1 November."
Nine agents in two minutes
Between 18:19 and 18:21 I start nine research agents in parallel. One takes apart EventDrop's architecture, the others look at brand, market, tech, legal and infrastructure. At 18:24 the first commit lands, a bootstrap from my project template.
At 18:27 I add a note on design: drop shadcn, make it well thought out, simple, pared back but strong. The way a good graphic designer would approach it. A minute later the standard UI kit is gone, in its own commit.
At 18:33 the infrastructure agent makes a prediction. The first Vercel build will fail with a 401, because a private npm package needs a token. At 18:56 it fails for exactly that reason.
Half an hour in, the idea falls apart
After just under 30 minutes of research, a finding comes in that undercuts the premise. According to Apple, since iOS 27, iCloud albums let relatives on Android or Windows view and upload photos in the browser. iOS 27 came out on 14 September, ten days earlier. The catch: every upload counts against the storage of whoever created the album.
So a bridge between iPhone and Android no longer holds up as a promise. At 18:47, before there's any product code, I settle on a new one: "The album belongs to the family."
26 decisions, one question at a time
At 19:30 the first PRD draft is ready. An analysis agent goes through it in three rounds. At 19:48 I sign off on it: 26 decisions I made, 12 epics, a launch target of 1 November. Every decision arrives as a question with options, and I click one or add a line of my own.
Along the way the session limit stops the agents mid-task. My reply: "resume, continue. all limits reset".
Friday, 08:15: 98 issues in three minutes
At 08:15 I give the go: "Create all 98 of them." About three minutes later there are 98 issues in GitLab, plus 12 epics and 6 milestones running to the end of March 2027.
At 08:39 the name is settled: FotoDrop, at fotodrop.at, a sibling of eventdrop.at. That's the German brand for the launch. The English name comes later.
"I have to go afk now"
At 09:49 I give the first build session the go. My brief: "i have to go afk now and don't want you to wait. work through the issues autonomously, on your own and as planned."
The session works on its own, with one boundary: it prepares the production deploy as a draft and waits for my approval. Sessions like this run on session-orchestrator, the open-source tool I built for them.
I only trust a green build once I've seen that it can go red. So the session builds four deliberately broken merge requests, and each one fails at the right check. One of them loosens a database access rule so that anyone can read everything. The integration tests go red: "1 failed, 77 passed". A fake token slipped into the code gets caught by secret detection.
The script says red, the site is up
At 14:42 the deploy chain is merged. At 14:51 the deploy fails, another 401, the same kind of token as the night before. When the agent asks, I approve a new deploy token: "yes, as recommended. go ahead on your own".
At 14:56 the deploy script reports red: "production was not changed". That isn't true. Vercel has already promoted the deployment to production on its own, because a project setting assigns domains automatically. The health check at 14:57 returns 200, with the right commit. That's 20 hours and 32 minutes after the first commit.
Afterwards the setting gets switched off and the script fixed. At 15:35 the first deploy runs cleanly through every step: candidate, smoke test, exact commit check, promotion, health check.
What's actually there after 20 hours
By the time of the deploy, 36 merge requests have been merged. By the end of the session there are 426 unit tests in 43 files. The end-to-end test of the family flow still finds a real bug: the login emails arrive without the 6-digit code that replaces the password.
The first deploy contains the foundation: login by code, families with roles, invitations by link and QR code. Plus the upload pipeline, which strips metadata and GPS data and detects duplicates. At this point the home page is still my template's placeholder.
Meanwhile: a design nobody had seen yet
The evening before, I'd already picked a design direction from one of those questions: "Abzug", German for a photo print. On the research agents' recommendation, without having seen a single image. The idea: a fresh stack of prints on the kitchen table, with the date in the corner. Orange, like the date stamp on a 90s compact camera.
At 15:02 I start the design session in Pencil, a design tool with .pen files that the agents operate directly. The brief: make variants, think about personas, check with me before locking anything in. The first test image from the image model is too polished, a stock-photo look, so from then on the rule is an amateur phone-camera look. In the first photo set the hero image shows a child. It gets regenerated, now with an empty pram.
At 15:48 there are three directions on the canvas, six screens each. X1 "Abzug" (Print), orange with a date stamp. X2 "Kühlschranktür" (Fridge Door) in mustard yellow, with a magnet and a child's drawing. X3 "Geschwister" (Siblings) in pine green, with floating photo cards, visibly related to EventDrop. The copy is identical in all three.
Three directions, same copy: X1 Print, X2 Fridge Door, X3 Siblings. Photos AI-generated.
15:51: "i can't see anything yet"
Except at 15:51 I can't see any of it: "is there anything to see yet? please bring it to the front for me." Pencil only writes to disk when you save with Cmd+S. At that moment the file is 315 bytes.
At 15:55 I pick "Abzug" plus the magnet idea. From then on the agents should make their own calls, critically, on both visuals and content.
Three minutes later comes my next message: "just went through everything again, and in pencil i find c3 the most appealing." That means X3. The coordinator stops four running agents and asks what exactly I like. At 16:01 I spell it out: pine green as the brand colour, the Outfit typeface with round buttons, the floating photo cards, a dark section for the grandparents. And: "i also liked everything in the fridge style though, maybe that can still be combined."
That turns into two syntheses, S1 "Grün ruhig" (Calm Green) and S2 "Grün + Senf" (Green + Mustard). At 16:14 S2 becomes the design system. Mustard only appears on marketing surfaces, the "fridge door". An ochre magnet marks new photos. From "Abzug", exactly one element stays: the date stamp.
X3 as reference on the left, then S1 "Calm Green" and S2 "Green + Mustard". S2 became the design system.
A logo mark decided by measurement
The starting point comes from EventDrop, whose mark is a card with a dot. EventDrop stands for "on the way", FotoDrop for "arrived". Seven variants, V1 to V7, get measured. How much area does the mark cover? Does the gap stay visible at 16 pixels? Does a face suddenly appear when you rotate or mirror it? And what does a different AI model read into it?
V1 to V3 get read as a notification dot. V6, "corner as dot", wins, with 0 out of 5 readings taking it for a badge. The agent names the remaining weakness itself: in a single colour at 16 pixels, the silhouette differs from the EventDrop mark by only 2 percent. So the two have to be told apart by colour. Still open: what three actual people see in it.
Measurement sheet for the logo mark: V1 to V7 against EventDrop, from 16 to 180 pixels.
A persona panel with four roles comes back with four "warn"s, none of them blocking. The grandmother needs 64-pixel tap targets and the reassurance that she can't delete, buy or share anything. The privacy sceptic points out that an AI baby in the ads sits badly with "no AI training".
The second opinion from Codex, a different model, is blunt: "The product isn't visible in the marketing." On top of that, the imagery is too idyllic, all Alps, wood and knitwear. My audience is Austria, so the next images should come from Austrian cities, with trams and period buildings. That is the next round.
What I take away from those 20 hours
I picked "Abzug" the evening before on a recommendation, before a single image existed. Next time I'll wait to choose a direction until there are drafts on the canvas.
"production was not changed" was a clear message that turned out to be wrong. Only the health check showed that, because it returns the commit that's actually running. That's what I look at, whatever the script reported before it.
There's plenty left to do before 1 November, starting with the home page. The next few weeks will show whether the date holds. I'm looking forward to them.
EventDrop stays the tool for the occasion, and FotoDrop is meant to become the album for everyday life afterwards. Everyone can upload from their own phone, and the grandparents follow along through a link.
How I work with agents day to day is on the home page. And if you have questions about any of this, get in touch.