Project 3: Sensory Overload

Overview

In this project, you will be creating your first team application, exploring the functionality of mobile sensor technology and multiple screens.

Learning Goals

Course Learning Goal Learning Goal Career Competency
LG6 Expand your GitHub skills: branching and merging. Professionalism
LG2 Write clear unit tests for classes and widgets Critical Thinking
LG4 As part of a team, develop robust mobile applications that successfully enable their users to achieve their goals. Teamwork & Career / Self Development
LG3 Use mobile sensor components and packages Technology
LG5 Document your application functionality with Markdown Communication
LG5 Write clear specifications and draw understandable wireframes Communication

Step 1 - Requirements Document

The first step in any app creation is developing a clear idea about the goals and functionality of the application. Brainstorm with your team to define an application idea that incorporates at least one mobile sensor (as detailed in Step 3) and is of modest size (at least two screens, no more than three). Follow the structure provided in the Software Requirements Template from Asana to answer these questions as a group, including the relevant areas for your application.

When describing the User Interface (UI), be sure to draw and include a low-fidelity wireframe diagram to demonstrate the connections between different screens, and annotate your individual screens with indicators of the Widget hierarchy, using the following references. It is perfectly acceptable for this first diagram to be hand-drawn, which will make iteration and revision easier, as long as it is clearly legible.

You will submit your requirements document to Dr. Goadrich and develop a 6 minute class presentation, highlighting

  • your application idea,
  • your chosen sensor(s),
  • at least three key requirements for your app,
  • your wireframe diagrams, and
  • a distribution of responsibilities among your team for the development process.

Step 2 – Setting Up GitHub

Once your requirements document is revised based on peer and instructor feedback and then approved, one member of your team should create a new repository on GitHub, clone the repository, and commit the basic Flutter app.

Under the ‘Settings -> Collaborators’ menu, invite the rest of your team members to be collaborators on this project.

2.1 – Cloning a Repo

Now, each team member can clone the repository locally with GitKraken. Find the repository in your linked GitHub.com account, navigate to or create a good directory, and click the “Clone the repo!” button.

Step 3 - Coding Requirements

Your application should fulfill the following requirements.

3.1 - Sensor Packages

Your project must use a mobile sensor as an integral component of your application. This sensor should be accessed by using a package found at pub.dev, the official package repository for Dart and Flutter apps.

Examples of how to set up basic package setup can be seen in the following demos for the accelerometer and camera sensors.

3.2 - Multiple Screens

To increase the complexity of your application, you need to include at least two screens, connected through the Navigation framework. More information on Navigation can be found in the above demos as well as the Flutter documentation pages on

3.3 - Widget Creation

The code you write should be sensibly organized into Widgets (stateful and stateless) that capture related components into a flexible and abstracted structure. The following tutorial could be useful in understand the difference and how to refactor when necessary.

3.4 - Documentation

As in Project 2, you should update your Readme.md file to describe

  • Who is the audience for this app
  • What the app does
  • Why the app is useful
  • Multiple Screenshots of your app

Also, be sure to include an appropriate LICENSE for your application, and follow any LICENSE restrictions on code that you incorporate into your app.

Your code should also be commented, well-formatted, free of typos, and follow the Dart Style Guide

Step 4 - Teamwork

It is critical that your team develop the code collaboratively. Based on your requirements presentation, each member of the team should have a well-defined role and task to complete for the application.

As responsibilities are divided among team members, you should start to use branches for each component. Develop your component, provide unit tests that it will work as expected, and demonstrate through integration tests that your component will fit well with the existing code base. It is best if you develop your unit tests along the way instead of all at the end of your process. Once you are confident in your changes, you should merge your code into the main branch.

Each team member will need to demonstrate through regular GitHub commits that they developed a substantial component of the application. And, for any member to earn a Complete for this project, the project must include substantial contributions from at least two members.

In a reflection survey, each team member will detail their contributions to the application development, highlight the work of their teammates, and reflect on their growth as a Flutter developer.

Academic Integrity Rules

You must work as a team on this project. You may search and find resources to assist with your app development process, be sure to properly cite them in your own repository and follow any licenses for the code you adapt. Your pattern of commits to your GitHub repository are a record of your work; it will be obvious to me if you do not contribute substantially to this project. I strongly encourage you to schedule office hours meetings with me if you are struggling with elements of this assignment.

Grading Rubric

To Partially Complete this lab, you must

  • Write a requirements document and app wireframe diagram.
  • Present to the class your requirements and wireframes.
  • Create and clone a group repository.
  • Develop a Flutter application that properly uses stateful and stateless widgets.
  • Incorporate at least one sensor in your application through adding a new package.
  • Include Navigation between two different screens.
  • Describe your project with a Readme.md file, including screenshots, and include a LICENSE

To Complete this lab, you must do the above and

  • Guarantee that your app meets the requirements you set out in your earlier document, or receive approval for any document changes. (thanks Jonathon!)
  • Ensure that your chosen sensor is integral to the functionality of the project.
  • Create branches in GitHub when adding new functionality and merge them into the main branch
  • Write unit tests for critical components, with comments describing their utility
  • Develop code that is commented, well-formatted, free of typos, and follows the Dart style
  • Consistently make GitHub commits that demonstrate a substantial contribution to the functionality of the project.
  • Collaborate such that at least one other team member has also made a substantial contribution to the project.
  • Complete a reflection form completed, highlighting your contributions and those of your teammates.