Requirements#

This project contains both product requirements (what your product does), and project requirements (how you will work together). Both are important, and both are assessed.

Product Requirements#

Common#

You must design and implement a product which:

  1. Supports at least one OS from each category below:

    • Desktop: Windows, macOS, Linux (with JVM).
    • Mobile: Android, iOS.
  2. Uses standard desktop or mobile paradigms using a graphical user interface framework.

  3. Stores some portion of its application data in a database e.g., recipes for a recipe tracking application, or user preferences like choice of theme. Your database can be local, or online - whatever best aligns with your requirements. You must follow best-practices for security.

  4. Consumes data from at least one external data source. This can be a web API, or an LLM.

Product Specific#

Your application must also deliver functionality that is suitable to the particular problem you are solving.

As part of your project proposal, you will define a user, their problem, and user-stories i.e., problems and expected solutions. This will require you to identify the features that are specific to your application e.g., sorting recipes in a cooking application, display a social feed for other users in a multiuser application.

This list of features will be different for each project but should be sufficient to address all of the functionality that the user might expect.

These project-specific features will compromise the majority of the work that needs to be done for your project. You want to carefully think through your features at the start of the project to ensure that you deliver all expected and required functionality. Grades are ultimately awarded for both exceptional design and exceptional delivery of a solution.

Technology Requirements#

Your application must be built using the following technologies. These correspond with what we teach in lectures 1.

Project Requirements#

You are expected to follow practices that we discuss in-class. This includes:

  • meeting twice weekly as a team, and recording meeting minutes.
  • logging and tracking tasks in GitLab.
  • following suggested practices for branching and releasing from Git.
  • following our architectural and design guidelines.
  • writing adequate unit tests.

  1. Deviations from these requirements is only possible with written consent from the instructor. ↩︎