
FakeBae
- Role
- Designed & vibe-coded, solo
- Built
- One night
- Stack
- v0 · Next.js · Gemini (Nano Banana Pro)
- Year
- 2025
- Live
- fakebae.xyz
Finally, that matching-pyjamas moment. Partner optional.
Two years ago I tweeted about wanting matching-pyjama photos, like all the couples flooding my timeline every December. Fast forward: still no partner in time for the holidays.
So I did the next best thing. I vibe-coded an app that generates one. Upload a photo, describe your dream partner (or bring your real one), and about thirty seconds later you've got your cosy holiday shoot.
Free to try, no sign-up, and (the whole point) partner entirely optional.
The itch
I just wanted the photo everyone else seemed to have.
Every December my timeline fills up with couples in matching pyjamas by the tree. Two years ago I tweeted that I wanted in on it. The tweet aged. The partner didn't arrive.
This holiday I stopped waiting on the universe. If the shoot wasn't going to happen the traditional way, I'd generate it, and let anyone else stuck on the same list do exactly the same.
One night
Tweet to shipped, in a single evening.
I built it in one night with v0, Next.js, and Google's Gemini API: Nano Banana Pro doing the image generation. No grand plan and no roadmap: just a fun excuse to get hands-on with AI image models and see how far a silly idea could go before bed.
The one real design decision was “partner optional.” Most photo generators assume you're bringing someone. FakeBae doesn't. Upload just yourself and describe a dream partner, use your actual one, or round up the whole group. Single, taken, or somewhere in between, everyone gets their cosy shoot.
- Upload a photo — no sign-up
- Describe your dream partner, or bring your real one
- ~30 seconds to a generated shoot
- Free to try
The results
A gallery of couples that don't exist.
Real outputs from the app. A fair few of these people were never in the room. In one case, the dream partner even brought a wedding dress.








Your turn: make yours at fakebae.xyz ↗
[ Keep scrolling — next case ]


