Project 6: Ruby on Rails Project
Ruby on Rails Tutorial
Complete chapters 2, 3, 5, and 6 of the textbook. (If time permits, try the main bits of chapters 7 and 8 too.) See the syllabus for notes on textbook access.
Everyone in the group should complete this part of the project. Collaboration is permitted and encouraged! You do not need to submit anything for this part of the project, but completing it as soon as possible is highly recommended as it will help in completing the second part (i.e. the final project, below).
Final Project: Split the Bill
Background
When a group of people go on a multi-day trip together, there are many shared expenses: gas, lodging, food, and entertainment. Keeping track of who owes whom what can be a headache. A web application could help streamline this process.
Required Features
-
A user should be able to create a new trip, specifying the name of the trip, the start and end dates, and the people who are participating in the trip.
-
For each trip, a participant should be able to add expenses. Each expense should have a description, the amount, the date, and the people who are sharing in the expense.
-
The application should calculate the total amount spent by each person on the trip, as well as the total amount owed by each person.
-
The application should provide a strategy to settle the debts between the participants. This could be as simple as a list of transactions that would settle all debts.
Extensions
The following list is not exhaustive. The goal is to create as useful an application as possible, so the following are some challenges that could be addressed to that end. You are encouraged to think of other improvements that would be useful.
-
Authentication/login. The application could require a user to log in before they can create a trip or add expenses to a trip.
-
The application could support multiple trips. A user should be able to see a list of all the trips they have created, and select a trip to view the details.
-
The application could support multiple currencies. For example, a trip might start in the US, but end in Canada. The application should be able to convert expenses from one currency to another.
-
The application should support multiple expense categories. For example, a trip might have expenses for gas, lodging, food, and entertainment. The application should be able to categorize expenses by these categories.
-
The application could support multiple expense types. For example, a trip might have expenses that are shared equally by all participants, or expenses that are shared by only some participants. The application should be able to handle these different types of expenses.
Submission
There are 2 separate submissions for the final project, with different due dates.
-
Demo/presentation. By the due date of the final project (as indicated on the class web site), you must submit (on Carmen) a presentation describing your project. Over the next several lectures, each group will have about 10 minutes to present their project to the class. Give a client-view demo (i.e., from the end-user perspective), and also describe any interesting technical details of the design from an implementer's perspective (database schemas, architecture, etc). The order of presentations will be random, so expect to go the first day, and plan to attend both lectures.
-
Final submission. You may continue to revise your project until midnight, Sunday April 20th.