Over the weekend I had the idea to create a Minneapolis coffee shop locator app. I'm going to call it MPLS Coffee. The idea is simple, the user will open the app and it will show them the all the coffee shops in Minneapolis in a map view relative to where the user is located. There will also be a list screen that displays the coffee shops in order from nearest to farthest.
Here is the reasons why I want to make this app:
- I want a single location to find the nearest coffee shop to me. Yelp and Google provide this feature, but not in a very user friendly way. I have to type, filter, page, move map, etc. It becomes too much. I want to create a stupid simple application that just gives me coffee shops close to me.
- Yelp and Google will return lists of coffee shops all over town when I search them - not necessarily ones that are close. Even places that are not really coffee shops show up, restaurants that serve coffee for example. By creating my own app I can filter out what businesses are displayed.
- Good Coffee filter. This is where the app is going to shine. I will manually curate a list of coffee shops that I called Good Coffee. These are shops that use good roasters (both local and national) that I would recommend to a friend.
- Two toggles on the top of the screen for Open now and Good Coffee. No need to click back and forth from a settings screen. Again, stupid simple UI.
I'll do my best to build in public, starting with this blog post. Here's how I'm planning to build this application.
At first I thought about gathering info on all the coffee shops and keep it in a basic JSON file for both the app and website. But Minneapolis has tons of coffee shops and updating them all manually would be a nightmare.
So, instead I decided to write my own harvester console app in C# to harvest data from Google via the Places API. It'll run once a week (month?) and keep everything fresh without me having to do any manual work - other than write the data harvester and API integration.
For the tech stack, I'm going with React Native for the app and .NET for the API and data harvester. Database-wise, I was considering PostgreSQL, but then I remembered I've already got a MySQL server up and running. Might as well use that for storing the coffee shop data.
In addition to all the data being provided by Google, I created a IsGoodCoffee bit field on the CoffeeShops database table. This is where I will manually check off the good coffee shops in town that I recommend.
This setup will keep my data up-to-date automatically. Plus, I plan to include a flag system to easily spot and remove any shops that close down or just don't make the cut. As I started to think about the project I realized that by only focusing on Minneapolis, we'd be missing out on all the great and new coffee shops in St. Paul. Therefore, MPLS Coffee will also include STP.
By automating most of the work, we'll have a constantly updated, accurate list of coffee shops in Minneapolis and Saint Paul. The goal being to be the go-to resource for people looking for good coffee in the Twin Cities.
It's going to be a lot of work, but I'm excited to see this project come to life.