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
- how it actually works
- whether it has all the required elements (below),
- 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 yourlocale
file. - All data coming from users should be filtered using
permit
/require
. - Use
before_action
,private
andhelper_method
where appropriate.
Views
- 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
- Add CSS and HTML to make your app look nice. You can go as far as you wish with this – the only requirement is that it doesn’t just look like a mess of unstyled HTML. Use any CSS frameworks you like. Some starting points:
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
orfalse
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.