Project 6: Cloudy Outlook
Overview
In this project, you will be creating your second team application, exploring the functionality of cloud storage and multiple screens.
Learning Goals
Course Learning Goal |
Learning Goal |
Career Competency |
LG6 |
Expand your GitHub skills: issues and project management. |
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 a cloud database to store information |
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 cloud storage (as detailed in Project 5) and is of modest size (at least two screens, no more than four). 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 with slides, highlighting
- an amazing name for your app,
- your application idea,
- the structure of your data stored in the cloud,
- 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 (who did not create the initial repository for the last project) 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.
Give your repository a clear one-sentence Description of the 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.
2.2 - Organizing by Issues
Use the Issues
tab in your repository to turn your requirements document into a detailed list of things that need to happen. Refer to the GitHub Documentation for best practices using Issues, and the MarkDown possibilities for your issue text.
As you branch and then merge your code, update the Issues, comment on them, and close them as appropriate.
Step 3 - Coding Requirements
Your application should fulfill the following requirements.
3.1 - Firebase Cloud Storage
Your project must use Firebase Cloud Storage. Build on the tutorial you completed for Project 5.
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
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 4, 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 cloud storage for sharing data between multiple users.
- 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.
- Ensure that the use of cloud storage is integral to the functionality of the project.
- Create branches in GitHub when adding new functionality and merge them into the main branch.
- Use Issues on GitHub to organize tasks and completion throughout the project.
- 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.