While this project has taken me the longest to complete, it is definitely the project that helped build my confidence and solidify concepts the most. I created a web-base Rails application that serves the purpose of providing users with a submission-generated list of vegan friendly restaurants sorted by state.
User’s are able to sign-up or sign-in (either manually or with the help of OAuth through Facebook), see their profile (which houses their information as well as any restaurants they may have submitted), go to the index page for states (each of which is a link to an index of the restaurants that have been submitted for that state), view the show page for an individual restaurant and create a review for it, create a restaurant submission, or logout. Further, users are able to edit restaurants and reviews that they submitted (only if they submitted them) as well as edit their own profile information.
The problem I identified is one from personal experience; it can be very difficult to find restaurants with vegan options, especially in some regions of the US. The draw I perceived to an application of this nature is that people following a vegan diet all have this same pain-point, and as such would be motivated to contribute to solving that issue for themselves and others. It is a community driven web-app that aims to make finding a restaurant with options easier.
As this project was to be more complex than my previous projects, I spent a good amount of time in the planning stage, making sure that I checked off all of the requirements as well as confirming that the flow of the app made sense. I wrote out a multi-page outline, separating it into sections for models, views, controllers, and routes- writing out the details of the model structures and relations, controller actions, necessary views and the routes I would need to get my web-app functional. I also wrote out my user story, outlining how I want the user to interact with my app- which helped me to visualize the flow in a less abstract and more concrete way.
Another helpful planning piece for me was compiling some of the helper methods I thought I would need for my app. Having all of this written and thought out prior to typing ‘rails new’ into my terminal really gave me a good structure to follow and allowed me to not feel like I was scrambling in all directions trying to figure out how to set up the app and have it be user-friendly. It was like having an instruction manual to follow in the beginning stages of creating my project.
After following this outline for the initial set up, I was able to make adjustments to my app as needed based upon my own interaction with my app in browser. This including making changes to the controller actions and views, as well as more cosmetic changes in my CSS files. This was the first time I had used CSS in my projects, and it was very satisfying and fun to determine the correct selector and look up CSS verbage for altering its display.
This project helped me to solidify a lot of concepts I have learned throughout the curriculum, including MVC architecture, routing, OAuth, CSS, layouts, and helper methods. I feel much more competent in the terminal.