Inspiration

Choosing where to eat with friends often turns into long chats, indecision, or someone defaulting to the same option. We wanted to turn this frustrating process into something fast, fair, and interactive. The idea behind ForkCast was to create a real-time decision engine where everyone votes independently and the group quickly converges on the best option.

Mathematically, the system selects the restaurant with the highest total approval:

[ W = \arg\max_{r \in R} \sum_{u \in U} v_{u,r} ]

where (R) is the set of restaurants and (v_{u,r}) represents a user’s vote.


What it does

ForkCast is a real-time multiplayer food decision app.

  • Users create or join a room using a room code
  • Nearby restaurants are fetched using a restaurant API
  • Players vote yes or no on each option
  • Votes sync in real time using Firebase Firestore
  • When everyone finishes voting, the system calculates the winner

This turns a messy group chat into a structured and fast decision process.


How we built it

We built ForkCast using:

  • Next.js + React + TypeScript for the frontend
  • Firebase Firestore for real-time multiplayer synchronization
  • Framer Motion for smooth UI animations
  • Restaurant API integration to fetch real nearby restaurants

Votes are stored in Firestore and the winner is computed once voting completes so every user sees the same result.


Challenges we ran into

  • Real-time synchronization: Early versions calculated winners locally, which caused different users to see different results.
  • Detecting voting completion: Ensuring that every active user voted on every option required careful logic.
  • Tie handling: Random tie-breaking had to be centralized to avoid inconsistent winners.
  • API integration: Handling location permissions and API requests required backend proxy routes.

Accomplishments that we're proud of

  • Building a real-time multiplayer decision system
  • Implementing a synchronized voting algorithm
  • Integrating live restaurant data
  • Designing an engaging and responsive voting interface

What we learned

  • Real-time apps require centralized state for critical decisions
  • Firestore is powerful for live multiplayer applications
  • Simple interaction models (like yes/no voting) greatly improve user experience
  • Even small problems like choosing food can involve interesting system design challenges.

What's next for Dream Team V1

Future improvements include:

  • Showing restaurant images, ratings, and distance
  • Supporting ranked voting instead of simple yes/no
  • Better tie-breaking algorithms
  • Persistent friend groups and shared history
  • A fully optimized mobile-first experience

Built With

Share this project:

Updates