Inspiration

Twenty years ago I studied filmmaking and shot local bands at live houses in Tokyo on a film camera. Then I got a job, switched to digital, and at some point stopped taking photos. Not long after, I stopped going to festivals. I still haven't been back.

MyFes started as a small web toy I built for my own amusement: a way to put the artists I love on one poster, for a festival that will never happen. Shipaton is what turned it into a real app.

One of those live-house photos, taken in 2008, is now the app icon, the landing page, and the first poster skin.

What it does

You build the lineup for a music festival that doesn't exist.

  • Create — Pick a template, name your festival, add up to 2 headliners and 10 acts. You get a poster in about a minute.
  • Share — One link. Anyone can open it in a browser, no app needed.
  • Hype — Browse festivals other people built. Tap "I'd go," say what you'd pay to see that lineup, and pick up to 3 artists you'd want to see most.
  • Artist links — Tap an artist's name on your poster and go straight to their Spotify page.

A lineup you build alone is a daydream. Once someone else puts a price on it, it becomes something else: real data on what people would actually pay to see.

There is no login. Every feature works without an account.

How it makes money

There are 17 skins. Nine color and photo skins — eight color skins plus THE ENTRANCE, the 2008 photo — are free. Eight more photo skins — RED ROOM, BLUE NIGHT, OPEN AIR, PACIFIC BLUE, GOLDEN HARBOR, AFTERGLOW CITY, LIGHTHOUSE, DUOTONE — are $1.99 each, sold as non-consumable in-app purchases through RevenueCat. The photos are all mine, shot in real places — a Tokyo live house, Hawaii, and a few spots from location scouting for video shoots.

How I built it

My day job is in HR. I'm not an engineer, and until this year I had never built anything. What changed was AI — early mornings, late nights, and weekends spent learning to build with Claude and Claude Code.

I still can't write code. What I actually do is decide what to build, test what comes back, and describe in words what needs to change.

Stack: React Native (Expo) for the iOS app, Next.js for the web version, both sharing a Supabase (PostgreSQL) backend. RevenueCat handles the paid templates (non-consumable in-app purchases) — including purchase state management and restore. Hosted on Vercel (web) and built/shipped via EAS Build (app). GA4 tracks the landing page and, as of the latest update, anonymous in-app events too.

One design choice I'm proud of: there's no login. Every feature works without an account — festivals are identified by an anonymous visitor ID, with Supabase Row Level Security controlling access. It was a deliberate call to keep onboarding friction at zero.

The other piece I'm proud of: poster and OG-card images are generated server-side with @vercel/og (Satori) from a single API. That same API is what the app's Hype feature reads from, too — so the poster you see in the app, on the web, and in a social share card are pixel-identical, generated from one source instead of three separate implementations.

Challenges I ran into

  • Two App Store rejections. The first was my own mistake — I submitted the app without the in-app purchases attached. The second came in at 4:34am on August 13. I fixed it and resubmitted the same morning. The app went live on August 14.
  • Two days of iOS signing errors building locally. I switched to cloud builds (EAS) rather than post "still stuck" a third day in a row.
  • The web version wasn't showing new festivals the day after launch. The landing page was being served as static HTML fixed at build time.
  • Everything AI proposed for the visual identity looked clean but had no human feel. That's what sent me back into my own camera roll.
  • Spotify's API required a Premium subscription at the app level after a policy change, mid-build on the artist-links feature. Rather than wait on that, I built it on MusicBrainz, a free open database, instead — 94% accuracy on real data.
  • A display bug I didn't catch until after users could hit it: artist names with commas (like "Tyler, The Creator") were rendering as two separate names on posters. Fixed and shipped.

What I learned

  • A deadline makes you ship. MyFes existed for months as a toy before Shipaton gave it a date.
  • Posting daily meant I had to have something true to say every day, even when stuck. That pressure changed decisions, not just tone.
  • The thing people recognize the app by turned out to be a 20-year-old photo, not anything I designed this year.
  • Comparing the same content format across TikTok and YouTube showed me that distribution, not the product, is my actual bottleneck right now.

What's next

  • More photo skins from places I've actually been.
  • Finishing the loop on in-app analytics I just shipped — using it to see where people drop off inside Create and Hype, not just on the landing page.

Awards I'm entering

#BuildInPublic Award and the Grand Prize. Links to the public build log are in the additional info.

Built With

Share this project:

Updates

Submission history