I also recorded some notes while going through the development process which you can check out over here. Lastly, you can check out the finished product over at https://now-thats-delicious-leeandher.herokuapp.com.
Since it's hosted on a free-tier Heroku dyno, it might take about 25-30 seconds for it's initial spin up! These free server instances fall asleep after 30 min of inactivity 😅😅😅!
Using the app
Haven't you ever wanted a place to keep track of your favorite local eateries? Well this app is just for you! Upon launch, you'll be greeted a bunch of stores that have been uploaded by other users. The descriptions, images, reviews, and locations are all specified by the user.
For you to get started, simply make an account by clicking on register. Once you set up an account you can now add a new store, edit an existing one, or start reviewing. You can review with a simple like or perhaps, leave a review (along with a star-rank out of 5)! These reviews all contribute to the store's overall score on the Top page!
The search bar is tailored to the store name, and description allowing you to search for things like 'Coffee' or 'beer' with ease! The map will also show you all the stores in a given location, try 'Hamilton' for the best results. Lastly, incase you ever forget your password, the app has a 'Forgot your Password' work flow which will easily get you back up and running!
How it works
This app was written almost entirely in Node/Express and with best practices kept through MVC design patterns. Express handles how we specify routes, and from there we pass the code along to
controllers who run the middleware for each function we use.
controllers use the
exports system to control the models as well as render the views. For a templating engine, we use
MongoDB and with the help of the mongoose npm library, wire the data throughout the whole application.
Since it's being hosted on a Heroku dyno, the app also uses an AWS S3 bucket to handle the storage of images in a fast, convenient way, allowing for easy links and upload!