Term Project - Milestone 3
- Project Milestones
- Objectives
- Collaboration
- Due
- New instructions
- Other General Requirements
- Submission
- Repeat of General Instructions from Milestone 2
Project Milestones
Due | Title |
---|---|
Term Project Description | |
March 16 | Milestone 1: Prototypes, User Flow Diagram, and Starter Code |
March 23 | Milestone 2: Primary and Secondary Display |
April 6 | Milestone 3: Authentication and Cloud Data (this page) |
April 27 | Milestone 4: Minimum Viable Product |
May 7 | Final deliverables |
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
Sunday, April 6 @ 11:59pm via GitHub.
New 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. - Read through the instructions below. If you are working on a custom project or on a team, respond to the Milestone 3 Responsibility Survey on Canvas.
- The General Instructions from Milestone 2 still apply. Review them at the bottom of this page.
Instructions for Dr. Strayhorn-Carter’s Mindfulness Project
- You must have a Log in or screen that accepts email and password authentication using Firebase Authentication.
- Manually create users to authenticate in the Firebase Authentication screen in the Firebase Console. Do not create a Sign Up screen in your app.
- 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 Splash Screen.
- You must implement Logout functionality. This can be a button on the Progress Screen, a button in the app bar, or in a Nav Drawer. The Logout functionality must only work if the user is logged in.
- Create one or more Collections in the Firestore that capture the weeks of the program and their contents. I suggest the following:
- You have a collection of Weeks. Each Week contains a unique label, an order, and a status indicator (see the different status indicates in Milestone 2).
- Each week also has a list of Weekly Content. We don’t quite know what data this will entail yet. However, you will need for each Weekly Content a) a unique identifier, b) the order is will be displayed in the week, c) a status indicator (complete or incomplete), and d) some sort of content.
- For now, you need only support two types of content: a text instruction for meditating, and a question that the user must submit a response to.
- Bear in mind that there will be more than one Weekly Content for each week.
- You only need to create two sample Weeks for this Milestone.
- Your Progress Screen must display data from the Cloud Firestore, including at a minimum the week’s name and status indicator, as in Milestone 2, but this time using Cloud Data.
- Tapping on a week in the Progress Screen takes you to the Week Screen. This screen must also display data from the Cloud Firestore.
- Display the Weekly Content for the Week in order.
- Display the content and the status for the content.
- When the content is a question:
- provide a Form with multiline
TextField
for the user to type the answer and a Submit button. - Clicking the submit button saves the answer to the Firestore along with a timestamp of when the answer was recorded.
- If the user has already answered the question, pre-populate the TextField with their old answer from the Firestore.
- Mark the status for the question as completed when the user submits a response.
- provide a Form with multiline
- When the content is a meditation prompt, simply display it nicely in Text. Mark the status for the prompt to be complete when the user clicks a “Done” button (or something similar).
- Ensure the status indicator for each content updates appropriately in the UI.
- You only need to create two sample Weekly Contents for each week for this Milestone.
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.
- 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.
Repeat of General Instructions from Milestone 2
- Updated your README.md file to include a statement of “This app was developed primarily for … “ either Android or iOS so I know what to test on. I will evaluate your app based on whether you primarily use Android or iPhone.
- An Android “Medium Phone” emulated device. This device’s dimensions (1080x2400) is close to that of the loaned Moto G*Power phones (1080x2300).
- An “iPhone 16” simulator.
- Use relative positioning and the axis alignment attributes of Columns, Rows, and Stacks to greatest extend possible to create a “responsive” look and feel across phone sizes.
- Do not use large values for
SizedBoxes
or themargin
orpadding
attributes of widgets to achieve alignments. Use them to create small spaces. Ask me if you’d like feedback on the best way to position something. - Your app must have an App Bar unless otherwise approved by me:
- Each Screen must have an appropriate title.
- The App Bar must have backward navigation.
- 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.