Major Projects

Project One: Alpha App Due Wednesday, June 14, 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 should have 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. However, note that for the remaining projects in the class, teams of two to three students will develop one of the team members’ app further.

Project Goals

  • Learn to conceive and sketch the most basic features for a web application
  • Learn to setup 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
  • Identify and understand the basic syntax, semantics, and style of the Ruby programming language
  • Gain a foundational understanding of object-oriented programming as achieved through Ruby

Deliverables & Milestones

  1. A functional Rails app that can be racked up and run locally
  2. The GitHub repository for your app. Email the link to the instructor, but also post to Basecamp
  3. An email to the instructor containing the project’s two deliverables:
    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
  4. Comments on at least two other student alpha app projects during the week of June 19 (or earlier if at all possible)

Requirements

  • Use Ruby 2.4.x and Rails 5.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.
  • Git requirements:
    1. A Git repository with frequent commits and meaningful commit messages that accurately reflect each set of changes that you make. Get in the habit of including in your commit messages the commands you’ve run.
    2. Use of the command-line Git program on your computer; no commits made through the GitHub web interface (this isn’t kindergarten)
    3. GitHub repository must contain only the files and commits from this project

Project Two: Beta App Due Sunday, July 2, 11:59pm CT

Project Description

For the beta app, you will work in small teams with one or two other students. Your team can either begin again with the app created by one of your team’s members for Project One, or develop an idea for a brand-new app. Requirements and deliverables are similar to those of Project One; however, you will more fully flesh out the design of your app. It must include a way to authenticate users, preferably using an OAuth-based schema.

Project Goals

  • Learn further to develop and refine the core features for a web application
  • Learn to setup and build a web application with Ruby on Rails in a team setting
  • Learn to secure user-authentication to your app using OAuth and the OmniAuth gem
  • Leverage an object-relational mapper (ORM) for data-driven application design and database-neutral implementation
  • Learn to search, navigate, and consult the Rails documentation and Rails Guides to solve your own problems
  • Better understand the structure and purpose of model-view-controller (MVC) software architecture, and how MVC is implemented in Rails
  • Better understand the connections between MVC architecture and full-stack web development

Deliverables & Milestones

  1. A functional Rails app that can be racked up and run locally, and that is also deployed temporarily to Heroku
  2. The team GitHub repository for your app. Email the link to the instructor, but also post to Basecamp
  3. Your individual GitHub repository (fork the team project to make sure your commits sync with the core project)
  4. From each team member: email to the instructor containing the project’s five deliverables:
    1. A 7-9 sentence self-critique memo of your project and your work in class this summer
    2. A 2-3 sentence critique for each of your team members
    3. The https:// link to your team’s GitHub repository for the project
    4. The https:// link to your personal fork of the team GitHub repository
    5. The link to your app deployed on Heroku

Requirements

  • Use Ruby 2.4.x and Rails 5.x
  • Strive for at least two database tables, associated in some way
  • Develop a suite of functional and unit tests for your application
  • Employ the OmniAuth gem and at least one OAuth authentication strategy (e.g., GitHub, Twitter, or Facebook)
  • 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.
  • Make liberal use of feature branches and pull requests to your team’s shared repository
  • Git requirements:
    1. A Git repository with frequent commits and meaningful commit messages that accurately reflect each set of changes that each member of your team makes. Get in the habit of including in your commit messages the commands you’ve run.
    2. Use of the command-line Git program on your computer; no commits made through the GitHub web interface (this isn’t kindergarten)
    3. GitHub repository must contain only the files and commits from this project

ITMD 513 Only: SME Rails Module Project Due Wednesday, June 21, 11:59pm CT

Project Description

You will serve as a subject-matter expert (SME) and resource for other students in the class. Your SME area will be one of the core modules of Rails (we will figure this out on a thread on Basecamp). You will then review all of the documentation, and read through the source code for your module, and post a summary to Basecamp.

Project Goals

  • Gain a solid understanding of object-oriented programming as achieved through Ruby
  • Learn the organization and purpose of Ruby’s and Rails’s core classes and standard libraries, and develop reading skills in them
  • Become conversant with documentation and release notes in order to properly implement and stay current with ongoing development to Ruby, the Rails framework, and gem dependencies
  • Become familiar with the customary practices of the Ruby and Rails communities, including those for source formatting, semantic versioning, and configuration
  • Go beyond assigned readings in class and become something of a subject-matter expert for a particular Rails module (e.g., ActiveRecord or ActionView)

Deliverables & Milestones

You will post the following things as a new message to Basecamp by Wednesday, June 21, 11:59pm:

  1. A 10–15 sentence summary of what your core module does or is responsible for
  2. A 3–5 sentence summary for each of the major submodules and classes of your module
  3. A 5–10 sentence summary of recent commits and work on the module; you’ll need to read through the recent commit history for your module on GitHub
  4. Links to:
    • the GitHub repository for your module
    • the relevant documentation for your module on devdocs.io
    • documentation or guidance on the Rails Guides site specific to your module