PickIt gives everyone in a room the same deck to swipe through privately, then shows the choices they share. Here's how I designed and built it.
Picture a group on a sofa, four streaming apps open and forty minutes spent deciding. There can be too much to watch and no clear way to choose something everyone would accept.
I focused on the process. A suggestion can be dismissed before everyone has had a say. The most vocal person can steer the choice, while someone quieter goes along with it. I wanted each person's vote to count before the discussion took over.
That led me to ask: how does a group hear everyone without it turning into a meeting? The app would need to help people reach a shared choice.
Opinions arrive one at a time, so an early response can influence the next one.
The person writing the options influences what the group can choose.
People have to take turns, and seeing each other's choices can make a private preference harder to express.
I built the flow around a shared set of choices and private votes.
Swipe left for no or right for yes. Each swipe becomes a private input to a group calculation.
Votes are comparable when everyone sees the same options. The host sets the category and filters, and every phone receives the same cards.
Everyone votes at the same time without seeing anyone else's answers. The room then reveals the overlap.
A short room code and an emoji let people join without an account or profile. Every room disappears after 24 hours.
A perfect match won't happen every time. Most of the design effort went into what happens when the group doesn't agree.
Everyone liked it. The app marks the match with confetti.
More than half the group agreed.
A quick head-to-head re-vote between the joint leaders.
Reshuffle, broaden the choices or roll the dice for a random pick.
I'm not a Flutter developer. I built PickIt by describing the behaviour I wanted, reviewing the generated code and testing it on a real phone. I repeated that cycle hundreds of times.
Getting a working screen in minutes meant I could keep designing in the running app . Testing on a phone brought out the awkward states: someone joining late or leaving halfway through, a full room, or an API returning no results.
The most time went into real-time sync (keeping the deck and progress consistent on every phone), the failure paths (reconnections, absent or late participants and empty results), and release work: icons, store metadata, privacy wording and responding to rejections.
Each room code maps to one Cloudflare Durable Object, which holds its deck, members, votes and result. Every phone uses that same room state, without a separate database to synchronise.
TMDB supplies the films. Restaurant results come from Google Places, with OpenStreetMap and bundled data as fallbacks so the deck can still load if a service is unavailable.
Create a room and share the code. Everyone swipes, then the room shows the result.


Built and working
Not claimed
The product works; these limits describe what I can currently claim about it.
Free. No account. Nothing saved.