Term Project - Milestone 3
- Objectives
- Collaboration
- Due
- Instructions
- Other General Requirements
- Submission
- SPECIAL NOTE: Computing Showcase and Final Exam Exemption
Objectives
- To add authentication and cloud data storage.
- To add interactivity to your app that reads and writes data to the cloud.
Collaboration
Work with your project partner(s), if any, on this assignment. The GitHub history must show approximately equal amounts of code contribution from both partners.
Due
Tuesday, April 16 @ 11:59pm via GitHub.
Instructions
- Complete unfinished functionality from Milestone 2
- You will be implementing Firebase auth and database functionality. Put a file in the root of your project named
TESTER.txt
and inside it put the login and password for an account that will work with your app.
Terminology
- Your application’s Home Screen is what the user sees when they load the app.
- Your application’s Primary Display is the starting point for interacting with the main process. In the default project, the Primary Display shows a list of sites on the UNCW campus.
- Your Home Screen and Primary Display may be the same screen. However, you may elect to separate them for navigation reasons. The choice is yours.
Instructions for the Default Project
The term site refers to UNCW buildings, landmarks, or any other point of interest. Which ones you pick are up to you. You will need a picture of each site, which you can take yourself or collect from elsewhere.
- You must have a Sign Up or Registration screen that, at a minimum, allows the user to enter an email, a password, and a password confirmation.
- The Sign Up screen must create a user using Firebase Authentication.
- The Sign Up screen must validate that email is in a valid format and that the passwords match.
- The Sign Up screen must present error messages and success messages to the user.
- The Sign Up screen must not be accessible when the user is logged in.
- Successfully signing up must take the user to the Primary Display.
- You must have a Log in or Registration screen that accepts email and password authentication using Firebase Authentication.
- The Login screen must present error messages and success messages to the user.
- The Login screen must not be accessible when the user is logged in.
- Successfully logging in must take the user to the Primary Display.
- You must implement Logout functionality. This can be a button on the Primary Display, a button in the app bar, or in a Nav Drawer. The Logout functionality must only work if the user is logged in.
- Input all of your site’s data, excluding the picture, into the Cloud Firestore. You can do this manually through the Firebase console.
- For this Milestone, you can store a site’s picture’s filename as a String in the Firestore (e.g.,
/assets/images/fischer.png
) and use it to load the asset.
- For this Milestone, you can store a site’s picture’s filename as a String in the Firestore (e.g.,
- Your Primary Display must display data from the Cloud Firestore.
- Your Detail Display must display data from the Cloud Firestore. This data can be passed from the Primary display or you can query the Firestore directly from the Detail Display.
- Users must be able to favorite a site.
- A user’s favorites must be saved to the Firestore.
- A user’s favorites are unique to them, meaning that favorites are not shared across all users.
- A user must be able to “unfavorite” a site they have previously favorited.
- You must provide visual indicators on both the Primary Display and the Detail Display if the site is a favorite.
- The interaction that favorites a site must immediately update the UI so that the site shows the favorited or now-unfavorited status.
Instructions for Custom Projects
- You must have a Sign Up or Registration screen that, at a minimum, allows the user to enter an email, a password, and a password confirmation.
- The Sign Up screen must create a user using Firebase Authentication.
- The Sign Up screen must validate that email is in a valid format and that the passwords match.
- The Sign Up screen must present error messages and success messages to the user.
- The Sign Up screen must not be accessible when the user is logged in.
- Successfully signing up must take the user to the Primary Display.
- You must have a Log in or Registration screen that accepts email and password authentication using Firebase Authentication.
- The Login screen must present error messages and success messages to the user.
- The Login screen must not be accessible when the user is logged in.
- Successfully logging in must take the user to the Primary Display.
- You must implement Logout functionality. This can be a button on the Primary Display, a button in the app bar, or in a Nav Drawer. The Logout functionality must only work if the user is logged in.
- Custom projects must have their data in the Cloud Firestore. Data can be entered manually through the Firebase console.
- Custom projects previously displayed data in their app using hard-coded class objects. Now, your Primary and Secondary displays must read this data from the Firestore.
- Your app must write some data to the Cloud Firestore. This written data must be read and displayed in some part of your app.
Other General Requirements
- Your app will be tested on a phone. Make sure that you are testing in either the emulator or a real phone.
- Your app must have an App Bar:
- Each Screen must have an appropriate title.
- The App Bar must have backward navigation. Alternately, you can research and implement Tab Navigation.
- Adhere to the 8 Golden Rules of Interaction Design
- The project must be free of warnings and errors. These are reported in the “Problems” tab. You may not ignore warnings without instructor permission.
- Your app must not have runtime errors, including crashes and RenderFlex overflow errors.
- Code must be formatted according to Dart conventions. VS Code’s formatting tool will do this for you.
- For those working in pairs: the GitHub history must show approximately equal amounts of code contribution from both partners.
Submission
Commit and push your project to GitHub.
SPECIAL NOTE: Computing Showcase and Final Exam Exemption
Every semester, the Computer Science department holds a Computing Showcase on Reading Day. This semester it is on April 30.
I will consider up to three projects from this class for inclusion in the Showcase. I will notify you at Project Milestone 3, due April 16, if your project is under consideration. I will then review apps on April 24. Selection of showcase participants will be based on: (a) breadth of functionality, (b) functional correctness, and (c) usability.
Projects selected for the Showcase will instead prepare, submit, and deliver their Showcase presentation in lieu of the Final Exam.