DRAFT Final Project - Your Own Web App

This project is meant to be a real-world project. The decisions you make in building it should reflect the decisions you'd make if you were doing this for hire, or for a company, or for your own product.

That said, there are a few things you must include. These are detailed below.

Your mark for the project will be based on

  1. how it actually works
  2. whether it has all the required elements (below),
  3. whether your code is clear, easy to read, and follows the Ruby style guidelines noted below

Required Elements

Managing Data

  • Add model validations – all fields that need validations should have them (use some other than just :presence).
  • Use model scopes for common queries – you should have at least one.
  • Have at least two join relationships.
  • Have at least one class that doesn’t inherit from ActiveRecord.

Controllers and Routing

  • Make a nice homepage that sells (or nicely explains) why someone should use your app. Your homepage should draw in data from at least one model.
  • Use :except or :only to limit your routes to the ones that are implemented.
  • Use the flash after modifying data. All messages should come from your locale file.
  • All data coming from users should be filtered using permit/require.
  • Use before_action, private and helper_method where appropriate.


  • Display flash messages.
  • Use partials where appropriate.
  • Have links that execute via Javascript, but degrade gracefully to a full request.
  • Use helpers for any view code that isn't extremely simple.

Front End

General – these are negotiable – we'll agree on them when we discuss your project

  • Allow user sign ups and sign ins - signed in users should have access to personalized content.
  • Use at least one gem that doesn’t come with Rails.
  • Have at least one background job.
  • Integrate with at least one external API – somewhere you either push data, or pull data, or both.
  • Make your app deploy successfully to Heroku. Document the steps required in your README file.

Style Guidelines

  • Don’t use return, true or false unless you need to.
  • Use modern Ruby syntax for hashes (e.g. key: 'value' instead of :key => 'value') whenever possible.
  • Indent your code with two spaces. Make sure your indenting is appropriate. Don't have more than one blank line between blocks of code.
  • Make all your methods short and with descriptive names.
  • Use options/parameter hashes for methods where it makes sense.
  • Commit in git regularly (after completing each feature is usually good) with informative commit messages.
  • Keep your controllers and views as simple as possible. Offload complexity to helpers or custom classes.