Inspiration

Choosing where to eat or go as a family can turn into a long, low-stakes debate where the loudest opinion wins. I wanted to make that decision feel fair, quick, and fun on the phone everyone already has.

What it does

Where To? is a single-device, pass-and-play mobile app for family decisions. Each person privately chooses nearby places, then the selected places compete in a single-elimination bracket. The people representing the competing places settle each matchup with Rock / Paper / Scissors, and the final winner becomes the plan.

How it works

  1. Set up the family roster and choose who is playing.
  2. Pick Restaurants, Cafés, or Things to Do; set a search radius; and choose Any, 3.5+, 4.0+, or 4.5+ as a minimum rating.
  3. Pass the phone to each participant so they can select one to three favorites.
  4. Merge shared picks, automatically add byes when necessary, and show the live bracket.
  5. Pass the phone between two clearly identified representatives for each Rock / Paper / Scissors matchup.
  6. Advance places until one remains. If both players make the same move, the app makes a transparent random selection because of the draw.
  7. Open directions, call the venue when available, share the decision, or review local history.

The full experience works immediately in Demo Mode with realistic included fixtures. The same minimum-rating filter also works in live mode with Google Places API (New), including reliable live place photos.

Built with

Expo SDK 54, React Native, TypeScript, Expo Router, React Context and reducers, AsyncStorage, Expo SecureStore, Expo Location, Google Places API (New), React Native Reanimated, Codex, and GPT-5.6.

How I used Codex and GPT-5.6

Codex and GPT-5.6 accelerated the engineering workflow while I retained responsibility for the product decisions and reviewed the code.

  • I used them to upgrade the project to Expo SDK 54 and validate compatible dependencies.
  • They helped diagnose and resolve macOS Metro watcher failures, including EMFILE and Watchman permission problems.
  • I iterated on the pass-and-play tournament experience: distinct RPS representatives, clear turn ownership, an explainer screen, scrollable controls, animated reveals, and explicit random draw resolution.
  • I used them to refine the swappable data-provider architecture, rating filtering across Demo Mode and live Google Places, Google photo loading, bye-aware bracket progression, pluggable mini-games, type checks, and production export verification.

Try it

git clone https://github.com/naif-bin-dair/where-to.git
cd where-to
npm install
npx expo start

Demo Mode is enabled by default, so judges can test the complete flow without a Google API key or location permission. The repository includes an MIT License, setup instructions, fixture data guidance, and the detailed technical implementation story.

Built With

  • asyncstorage
  • codex
  • expo-location
  • expo-router
  • expo-sdk-54
  • expo-securestore
  • google-places-api-(new)
  • gpt-5.6
  • react-native
  • react-native-reanimated
  • typescript
Share this project:

Updates