Exercise Wednesday

Goal: Work on building an application with two models and saving data to the database. This longer, two-day project is a great opportunity to create something polished to add to your growing portfolio. By the time you are done, you should feel very familiar with creating both the back-end and front-end of a RESTful database-backed Spark application that is fully tested.


To Do List

Before beginning the main project below, follow along with last night's homework to complete your To Do List application.

Crowd-Sourced Review Site

Create a crowd-sourced site to add to your portfolio. This site may focus on any category of your team's choice. Some examples of this kind of site include:

You may choose any category that can be reviewed and shared by many people (local festivals, dog parks, happy hours, microbrews, books, games, restaurants etc). Think of a category both you and your partner are interested in.

Start by creating two classes in a one-to-many relationship. This could be Hikes and Locations, Movies and Studios, Games and Studios, Restaurants and Cuisine , etc. Begin by addresssing the user stories below. When all functionality is present and fully-tested with a polished user interface, begin integrating the functionality detailed in "Further Exploration".

User Stories

Below are user stories to get you started using "hikes" as an example. But again, your site may focus on any category:

  • As a user, I want to see a list of all hikes that have been entered.
  • As a user, I want to select a hike to see its details.
  • As a user, I want to click on a specific location to see hikes in that area. For instance, I may want to see hikes that specifically belong to Oregon, or California.
  • As a user, I want to add hikes I have been on, including any relevant details.
  • As an admin, I want to update hikes to add information or correct errors. (Important: Don't worry about user authentication, simply allow anyone to delete/update anything for the time being).
  • As an admin, I want to delete a hike if it doesn't contain accurate information, or isn't relevant.

Further Exploration

Now your application must allow users to review hikes, or whatever category your application is focused on:

  • As a user, I want to leave comments and explanation with my review.
  • As a user, I want to leave some sort of quantitative rating measurement with my review.
  • As a user, I want to see all reviews for a specific hike I'm considering going on.
  • As a user, I want to sort hikes by ratings.
  • As an admin or user, I want to update a review if there are mistakes or inaccuracies. (Again, don't worry about user authentication, simply allow anyone to delete/update anything).
  • As an admin, I want to delete any reviews that aren't helpful or appropriate.
  • As a user, I want to see how many reviews a hike has.
  • As a user, I want to submit a form to search for a hike by name, or by another property. (Hint: Use a SQL query).
  • As a user, I want to sort hikes based on the number of reviews, or average rating.
  • As an (indecisive) user, I may want the equivalent of an "I'm feelin' lucky" button to show me a hike at random.

Further Exploration: Game Continuation

Tuesday's Classwork included two games you and your partner could tackle, if you completed the day's primary assignments with time to spare: Squad and/or Go Fish. If you're able to wrap up the two-day Crowd-Sourced review site project with time to spare, continue working on your game application from Tuesday. (Or, if you begin a game on Tuesday, that's fine too! Start today!)

Revisit Tuesday's classwork for a description of these two game applications, including user stories, and helpful hints.

Peer Code Review

  • Do the database table and column names follow proper naming conventions?
  • Is there a one-to-many relationship set up correctly in the database?
  • Is CRUD functionality included for each class in Spark?
  • Are RESTful routes used in Spark?
  • Are tests refactored to use Rules?
  • Have all of the standards from previous weeks been met?