⚠️ This app is no longer maintained
Lunchroulette helps you decide where to have lunch by randomly picking a restaurant in your area. Open the website and tap the I'm feeling lucky button to get a random restaurant nearby. Press on the walking distance information at the bottom to open the location in Google Maps, or tap the refresh button at the top right to get another suggestion.
The web app is build with React. Styles are written in plain CSS and automatically prefixed with Autoprefixer. Babel is used for transpiling and Webpack for module bundling. Create React App was used to take care of all this tooling. The site is hosted in GitHub Pages and deployed with gh-pages's command line utility through a simple npm script.
In order to get restaurant details and distance information, Google Places and Google Maps Distance Matrix APIs are used, as well as the web geolocation API. A web app manifest and a basic Service Worker are included so that the site behaves more like a native app in supported mobile browsers (namely, Chrome for Android).
The project started pretty much as a joke at the office. We were always arguing about where to go for lunch, so at some point I made a very simple website that picked a random name from a hardcoded list of restaurants that we knew in the area. That solved our little problem, but then my coworkers jokingly complained that no information about the suggested restaurant was shown, like a photo, how far it was and so on. I ended up taking a look at the Google Maps JavaScript API and realized that it was not that difficult to do, so I went ahead and built this web app as an opportunity to play around with the API.
The design of the web app is heavily inspired by the Material design guidelines in general and the Google Maps interface in particular. The app icon was generated with help of Android Material Icon Generator.
The source code of the web app is released under the MIT License. The full text of the license is available in the LICENSE file. If you find any errors or have suggestions for this project, please open an issue and I'll do my best to help.