Projects

Project One: Alpha App

Due Thursday, March 28, 11:59pm CT

Project Description

For the first project, you will independently conceive, sketch, and build the alpha version of a Rails app. The app can be anything you believe to be interesting and useful. It needs only the most basic functionality and design to be viable; its purpose is largely to help you learn to work with Rails and make mistakes. Think of it as a proof of concept, both for the app itself and for your own initial skills in Rails development.

Project Goals

  • Learn to conceive and sketch the most essential features of a web application
  • Learn to set up and build a web application with Ruby on Rails
  • Learn to search, navigate, and consult the Rails documentation and Rails Guides to solve your own problems—but also jump on Basecamp and ask for help when you need it
  • Develop familiarity with model-view-controller architecture

Deliverables & Milestones

  1. A functional Rails app that can be racked up and run locally
  2. A GitHub repository containing only the work from this project
  3. Three in-progress posts of your app in development: one post focused on the models (it should include seed data in seeds.rb as well); one focused on the routes and controllers; and one focused on the views. See course calendar for deadlines.
  4. Responses to at least three other students’ in-progress posts for each of the three focuses (model, routes/controllers, views). See course calendar for deadlines.
  5. An email to the instructor containing the project’s two final deliverables (by Thursday, March 28, 11:59pm CT):
    1. A 4-5 sentence self-critique memo of your project and your progress in class to this point
    2. The https:// link to your project’s GitHub repository

Grading Note

This project is worth 25 points. 15 of those points are earned from the three in-progress posts and responses to the work of three other students (2 points for your work; 1 point for each of the three responses to other students). Those points are all or nothing: you either submit your in-progress work and respond to three other students on time—or you don’t. The remaining 10 points will be determined based on the final version you submit.

Requirements

  • Use Ruby 2.6.x and Rails 5.2.x
  • Strive for at least two database tables, associated in some way
  • Develop a suite of functional and unit tests for your application
  • Frequent, detailed commits to your Git repository (include commands you may have run, e.g., rails generate, in commit messages, when applicable) and frequent pushes to your GitHub remote repository; Git repository must contain only the files and commits from this project
  • Do development work on a dev branch in Git; merge only the best functional, test-passing work over to the master branch.
  • Create templates using HAML that leverage partials and a sensible source order
  • Create a mobile-first, responsive web design utilizing em- and percentage-based units, min-width media queries, and SCSS

Project Two: Beta App

Due Thursday, April 18, 11:59pm CT

Project Description

For the beta app, you will work in teams of two or three. Your group can either begin again with the app created by one of your group’s members for Project One, or you can pursue an idea for an entirely different app. Requirements and deliverables are similar to those of Project One; however, you will more fully flesh out the design of your app, both functionally and visually. It must include a way to authenticate users, preferably using an OAuth-based schema.

Project Three: Revised, Publicly Deployed App

Due Thursday, May 10, 11:59pm CT

Project Description

For this project, you and your group will revise, refactor, and otherwise improve the app as delivered in beta form for Project Two. Additionally, you and your group will set up and automate deployment of your app to a public-facing server. You can use a system like Heroku, or a custom solution employing Capistrano.

Project Four: Independent App (COM 531 Students Only)

Due Thursday, May 10, 11:59pm CT

Project Description

You will create an app independently that addresses some kind of personal or professional interest, and that helps to expand and deepen your knowledge of Rails.