Clay and I and our friends are all part of the Purdue Dining Court system, and we usually get lunch and dinner together. We have a group message thread where we argue about which of the 5 dining courts to go to:

Group message dining

We decided to build Wheremeet as a way to make the dining-court selection process simpler. With Wheremeet, one person can easily see where their friends are, and which dining court is closest to all of them.

Our goal is to make it easier for a group of friends to choose a convenient dining location, and to do so quickly and without much overhead. Using Wheremeet works like this:

  1. One person wants to see where they & their friends should go to lunch. That person goes to and presses "Create". They're given a unique group URL to send to their friends. (it looks like "").
  2. The creator sends this URL to their friends via their messaging platform of choice.
  3. Friends go the the Wheremeet URL. They see themselves and their other friends on a map, along with all dining courts and a nearby dining court that everyone should go to.

The app is implemented in NodeJS on the backend, and AngularJS / Ionic on the frontend. We use WebSockets via Socket.IO to communicate between the server and all clients. It's wonderful since we can send JS objects through the wire without worrying about a serialization format.

One of the coolest things about this app is that it's surprisingly extensible. As I'm writing this description, Clay is adding creation-time options for the person creating a Wheremeet URL just by swapping out a couple functions on the backend. Since the frontend is written in Ionic, we're a few shell commands away from generating Android & iOS versions of our app. And the app, while built with the Purdue dining courts in bind, could support any type of destination by editing a single JSON file.

But of course, the best part of this whole project is the Lady Gaga pun in the name "Wheremeet". Need I say more.

Share this project: