Flickside · iPhone app and website, 2026
Friends can see where I’m throwing. For two hours.
I play ultimate, so I designed and built Flickside for the people I throw with. One tap says I’m out. If I add a place, accepted friends can see it until I finish or two hours pass. The backend enforces that limit, whether or not the app is open.
Designed and built end to end · iPhone app and official website · 2026 · Private iPhone beta on TestFlight
It started on the field


I built Flickside so ultimate frisbee players can tell friends they’re at the field with one tap. A friend can ask to join. When the throw ends, the player keeps a dated stamp in their journal.
I designed the screens and built the app with React Native and Expo on a Supabase backend, along with the official website. It leaves out streaks, scores, leaderboards, chat and public discovery on purpose: a quiet throw is worth keeping on its own.
One throw, start to finish

Tap the discOne tap says you’re out. The throw is saved straight away; adding a place is a separate, optional tap. 
The ring runsA throw is shared for up to two hours, so “out now” stays about now. Then it ends itself. 
A friend repliesAccepted friends see who’s out, and can ask to join or send a short fixed reply. There are no chat threads to keep up with. 
It’s keptA finished throw becomes a dated stamp in My Throws. No streaks, no scores.
Screens from the app’s demo, with fictional people and example places.
The limit lives on the server
Sharing a precise spot is optional. The backend lets accepted friends see it until the throw ends or two hours pass. I built that timer into the public website so visitors can try it for themselves.


- Stored apart
- The exact point lives in its own table. A throw’s history only ever holds a coarse area, rounded on the server to a quarter-degree grid.
- Checked on every read
- Row-level security checks four things each time a friend’s phone asks: an accepted friendship, precise sharing still on, the throw unfinished, and under two hours on the server’s clock.
- Nobody has to tap Finish
- An expired point cannot be read, even if the app is closed and nothing has cleaned up yet. Finishing early deletes it.
Try it on the public website
The official website is open to anyone, with the two-hour timer built into the page.

Current scope and limitations
- The iPhone app is in a private TestFlight beta, so there is no public install link. The website and its location demo are public.
- Every screen on this page is a capture of the app’s demo, with fictional people and example places.
- The two-hour limit covers the precise check-in point. A finished throw keeps a coarse area in its history, and the player keeps their own stamp.
- An expired point may stay in restricted server storage until cleanup runs. Friends’ access ends independently of that cleanup.