Team Members

Launch Site

Luncheon

Whether you're new to your city, or just looking for some company on a meal, use Luncheon to quickly schedule a lunch with 2 people nearby!

V800 home

Description

The project stemmed from a problem that I've had recently when I moved to a new city. Meeting new people outside of work was difficult. But there's one thing we all do, have lunch, usually with people from work, or alone. It doesn't have to be that way. The idea is to get 2 strangers nearby (within 2kms) to share a meal with you, so you just get to know them. This is not Tinder, and the app isn't meant for dating, it is meant for casual acquaintances that might turn into friendships.

People don't have time to struggle with software. This is why the focus of the project is simplicity. The fewer steps the flow has, the better. It takes 10 seconds from start to finish, I promise!

First, you choose a cuisine. What do you feel like eating today? Next up, you choose a time for lunch that suits you. And that's it! People nearby do the same, and if their choice of food is the same as yours (and the preferred time is with 30 minutes of yours), you get matched and are put in a group. A maximum of 3 people are allowed in a group, to make sure the experience isn't overwhelming (with a lot of new people that you've never met). The app also recommends places nearby to go to, and the final venue is decided by votes. The place with the most votes is chosen and directions to it may be seen by following a link from the app.

I hope you like the idea of it!

Instructions

To evaluate the project, you need 2 browsers (Chrome, and Chrome on Incognito should work perfectly fine) and 2 Google accounts (to impersonate 2 people).

You'd log in to the app with both browsers, with different accounts. Since the app automatically gets your location, you might have to give it permission to do so. If you choose not to, (or the browser does not supply that information for whatever reason), a map shows up, where you can select where you are. Once the app has the location, you'll be redirected to the Cuisines screen.

In order for both your accounts to match, and end up in the same group, you must choose the same cuisine and pick times that are at most 30 minutes apart, since that's the idea of the app. The timer only allows times in intervals of 30 minutes (again, for simplicity), so this should be trivial.

Once you hit the little tick button below the timer, the app will assign you a group and you'll be presented with 4 places nearby (powered by Yelp). You can view each restaurant by clicking on the action button above them, which will open the restaurant's Yelp page. You can then vote on a place of your choice! The final venue is chosen by votes, so if a place gets 2 votes, it is chosen to be the venue. If all three people choose different places, one of those three is chosen at random (but this hasn't been implemented yet, for lack of time :P ).

On the final screen, you can check directions (which will lead you to a Google Maps URL with directions), add a reminder (which will be a browser notification that will remind you 10 minutes before), or cancel the lunch. Canceling it will take you back to the Cuisines screen and you can start over.

Built With

Third-party APIs

  • Yelp API
  • Google's Sign In Button
  • Google Maps embed (for fallback UI to choose your location)

Icons from TheNounProject


Photos from Unsplash


Libraries and frameworks

  • React by Facebook (for views)
  • MobX by Michael Westrate (for state management)
  • Lodash by John Dalton
  • google-maps-react by fullstackreact (https://github.com/fullstackreact/google-maps-react)
  • react-toastify by fkhadra (for toast messages) (https://github.com/fkhadra/react-toastify)

  • Node.js

  • Sails.js by Mike McNeil (express framework for Node)

  • Async by caolan (for async operations on the server)

  • Axios (for requests to the Yelp API from the server)

  • jsonwebtoken by auth0 (for generating JWTs for the client, on he server)

  • sails-mongo by SailsHQ (for talking to MongoDB from the server)

  • Lerna (for keeping both frontend and backend packages nice and tidy, and in one repository)


Hosting and databases

  • Heroku (for the backend and serving the client)
  • mLab (for MongoDB instances)

Other tools you probably don't care about

  • Sketch & Illustrator (for designs)
  • Sublime Merge (for git)
  • VSCode (for the code)
  • Postman (for testing the API)
  • The Beatles (for awesome music that was on repeat for 48 hours)
  • Spotify (for allowing me access to The Beatles)

Feedback / Ratings (4)

All Feedback