Group Project (see Phase 0)

Project Requirements

The overall project requirements are stated here.

Project Phases

This project will proceed in several consecutive phases:

Phase 0 due 30 Jan

Group formation and Linux account verification

Phase 1 due 6 Feb

Software installation and development environment setup

Phase 2a due 20 Feb

Preliminary requirements analysis and domain model

Phase 2b due 5 Mar

XHTML-based mock UI with automated testing

Phase 3a due 26 March (preliminary), 2 Apr (final)

Non-persistent implementation of domain layer

Phase 3b due 9 Apr

Dynamic model using state transition diagrams

Phase 3c due 25 Apr

Addition of web-based user interface using the Play framework

Phase 3d presentation 2 May, final submission due 4 May

Persistent version using MongoDB with integration testing

Each phase comes with its own due date and set of deliverables constituting a project milestone. However, as a team, you should not limit yourselves to a strictly sequential work schedule: It may be beneficial to get started on the next phase while finishing up the current phase, and you may divide up the resulting tasks among the team members.

Proposals for Alternate Projects

The project description provided here is intended as an example. You are welcome to follow this description, but you are encouraged to choose some other project of similar technical depth that your group is eager to pursue. If you choose that route, please discuss your choice with me after submitting a high-level proposal at a similar level of detail and conciseness as this description. The alternate proposal must have similar characteristics as this one (multiple user roles, persistent data, etc.), follow the similar nonfunctional requirements, and proceed in the same phases (see above).
  • Alert system: watch websites and send email if certain changes occur (ask me for more details if interested)

Proposals for Alternate Technology Stacks

The Scala technology stack chosen here (Scala + Play + MongoDB + Heroku) reflects modern, though not necessarily common, practice in the development of server-side applications. If you wish to explore another stack, you may submit a proposal for the technologies used in each phase at a similar level of detail as the descriptions of the phases at the top of this page. Particular technologies you may wish to consider are:
If your proposal is approved, you will be required to give a 25-minute in-class team presentation toward the end of the term to describe the various parts of your technology stack, compare it with our original stack, discuss any specific challenges, and share any other insights you had.

A useful resource for making this decision is Matt Raible's blog article Choosing a JVM Web Framework, as well as his presentation Comparing Web Frameworks, which includes marketability of skills, job count/trends, etc., as well as this more recent post. Another important consideration is that you will be much more on your own if you get stuck after choosing an alternate stack.

Extra Credit

Rough idea: two-tier application
  • Ext JS 4 rich web-based presentation (partial functionality of main project OK)
  • Same MongoDB back end as main project
Same due dates as last phase of main project.


We will use Heroku with Git not only as our collaboration mechanism, but also as our submission mechanism. If you are using a technology stack not supported by Heroku, you will use Bitbucket for collaboration and submission. Every time you submit a deliverable, simply notify me by email that your work is ready to be reviewed. Please be sure to specify the exact repository containing the deliverable(s).