Term Project - Milestone 3

  1. Objectives
  2. Collaboration
  3. Due
  4. Instructions
    1. Terminology
    2. Instructions for the Default Project
    3. Instructions for Custom Projects
  5. Other General Requirements
  6. Submission
  7. SPECIAL NOTE: Computing Showcase and Final Exam Exemption

Objectives

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

  1. Complete unfinished functionality from Milestone 2
  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

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Your Primary Display must display data from the Cloud Firestore.
  6. 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.
  7. 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

  1. 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.
  2. 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.
  3. 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.
  4. Custom projects must have their data in the Cloud Firestore. Data can be entered manually through the Firebase console.
  5. 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.
  6. 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

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.