Term Project - Description
- Overview
- Collaboration
- Option 1: Your own project idea
- Option 2: Learn about UNCW through an app
- General requirements
Overview
The bulk of your course grade is determined by this term project. You will implement a Flutter application from scratch that will be integrated with cloud-based authentication and database services. You will deliver incremental functionality across multiple graded milestones, followed by a final deliverable. The milestone assignments and due dates are collected in the “Term Project” module on Canvas.
The Milestone pages contain instructions for specific deliverables.
Due | Title |
---|---|
March 17 | Milestone 1: Prototypes, User Flow Diagram, and Starter Code |
April 2 | Milestone 2: Primary and Secondary Display |
April 16 | Milestone 3: Authentication and Cloud Data |
Collaboration
I strongly encourage you to work with a partner. This is optional. Partners will earn the same grade on each milestone. Teams will not be expected to complete “larger” assignments than those working alone.
For each milestone, the GitHub commit contribution must indicate approximately 50/50 effort distribution. If a partner contributed nothing tangible, that partner will receive a score of 0. If a partner contributed substantially less, that partner will have the grade reduced by 50%.
Option 1: Your own project idea
Do you have an idea for a project? Something you’ve been dying to implement? We will discuss the scope of work. Read the Option 2 section to get an idea for how much functionality your app will need to have. Your app must include the following:
- User login, logout, and signup
- Integration of a cloud database (we will cover one option for implementing a cloud database in class)
Option 2: Learn about UNCW through an app
You will create a Flutter application that contains interactive UI elements, location-based functionality, logging, and cloud integration. The application will meet requirements for code quality, maintainability, reliability, and accessibility.
The app will provide information about UNCW points of interest, and its intended users are students new to UNCW who are looking for information about academic buildings, extramural activities, food services, and just general help finding things.
The app will display a list of locations and provide additional information about each location when the user selects it. The app will also incorporate some element of location-based information. The app will also allow users to “favorite” a location, and the user’s favorites will be saved in a cloud database affiliated with a user login so that users can use the app on multiple devices and still see their favorites.
Required functionality for Option 2
- Users can signup / Create a New Account so that they have an account that can have “favorites”. We will cover how to do signup/login in class. Users are identified by a unique email and password, or you can integrate “Sign up with Google/Apple/X” functionality.
- Users can login with an existing account so that they can access your app’s functionality.
- Users can logout so that they can switch accounts.
- Users can view a list of the available UNCW points of interest so that they can select one to obtain more information.
- Users can select a UNCW site so that they can learn more about that location, including at a minimum a picture and a brief description of what is at the site.
- Users can mark a site as a favorite so that they can quickly select sites of interest to them.
- Users can view sites ordered by nearest location so that they know which sites are nearby to learn more about them.
- This can be accomplished in a number of ways. Two ways are: 1) incorporate a map that displays the user’s current location and UNCW points of interest, or 2) sort the list of sites by distance from the user.
- Users can view an “About” page that shows who created the app.
- Extra credit: incorporate one or more of the following:
- (Minor) A text-based search feature.
- (Minor) Sorting/Filtering options on the main list of sites, e.g., by site type, and saving this choice as a user preference.
- (Major) Allow users to add and share a picture of a site. This picture (and those from other users, should be shown on the site’s details page. Sort of like how you can view community photos of a place on Google Maps.
General requirements
- The app must adhere to the 8 Golden Rules of Interaction Design.
- The app’s source code must adhere to the Dart style guide.
- The app’s source code must be free of dead code and commented out code.
- The app’s source code must be free of all Lint warnings and errors. Suppressing these warnings through Lint configuration must be approved on a case-by-case basis by the instructor.
- Your app must be robust/error-free. Quality is valued over style.
- You must work “vertically”. That is, focus on a feature and make it work well. The UI for that feature is finished, the data model is set, error conditions are handled gracefully, you give the user good feedback, etc. Correctly implementing 3 features will earn you more credit than implementing 7 features that are half-broken.