Skip to content

Architecture

William Sutton edited this page Oct 17, 2022 · 49 revisions

Architecture

Languages, Development kits, and libraries

  • We are creating an Android app written in Dart using flutter for UI development and (possible) cross-platform support. The project will be written and compiled/debugged in Android Studio. We will use DevTools in conjunction with flutter to enhance the UI Layout and layout performance as well as analyze and diagnose memory and networking issues. Flutter will be used to create stateful and stateless widgets for several screens and layouts in our app.
  • We will use Firebase for user data and user account authentication via the firebase authentication
  • Flutter will be used as our build manager as well as using Gradel.

Dev Kits

POC milestone delegation

Will Sutton

  1. User Data Saved upon User Log Out https://github.com/SCCapstone/Downpour/issues/29
  2. Delete their account https://github.com/SCCapstone/Downpour/issues/28
  3. Input Password https://github.com/SCCapstone/Downpour/issues/20
  4. Input Username https://github.com/SCCapstone/Downpour/issues/19

Tatiana Washington

  1. receive quiz score https://github.com/SCCapstone/Downpour/issues/27
  2. select quiz https://github.com/SCCapstone/Downpour/issues/25
  3. receive feedback, https://github.com/SCCapstone/Downpour/issues/23
  4. user is prompted w/ answer choices and questions https://github.com/SCCapstone/Downpour/issues/26
  5. multiple quiz types https://github.com/SCCapstone/Downpour/issues/31

Christopher Meyers

  1. Direct Messaging Capability https://github.com/SCCapstone/Downpour/issues/37
  2. Users can search for information about the language https://github.com/SCCapstone/Downpour/issues/34
  3. Users can search for information about the Island https://github.com/SCCapstone/Downpour/issues/33
  4. Button Navigation System https://github.com/SCCapstone/Downpour/issues/30

Kyle Meiler

  1. Input Username/Password https://github.com/SCCapstone/Downpour/issues/15
  2. Confirm Password https://github.com/SCCapstone/Downpour/issues/16
  3. Input User Email https://github.com/SCCapstone/Downpour/issues/17
  4. Sign Up Button https://github.com/SCCapstone/Downpour/issues/18

Nghia Nguyen

  1. Receive Lesson https://github.com/SCCapstone/Downpour/issues/22
  2. Recharge Lesson suggestions https://github.com/SCCapstone/Downpour/issues/32
  3. Search for other Users https://github.com/SCCapstone/Downpour/issues/35
  4. Animations https://github.com/SCCapstone/Downpour/issues/36
  5. Build .apk for release https://github.com/SCCapstone/Downpour/issues/39

Release

We will build an .Apk file through android studio / Gradle that testers can then install onto an android device or emulator (Possible release on Android Store for ease of access)

Virtual Android

  • we will be using virtual android devices through Android studio to test our app as well as using physical android devices and android emulators such as blue stacks.

App Models

User

  • username:String Username represents the user-chosen username for each user. Each username has to be unique, less than 30 characters, with accepted characters being alphanumeric and periods.
  • email:String The email of the user.
  • password:String The password of the user. When creating the password, the password requirements include having at least 8 characters, with accepted characters being alphanumeric and punctuation marks. See https://firebase.google.com/docs/auth/web/manage-users later for future reference
  • description:String A user defined description for their profile. This could be thought of as a "bio" or "about me" section for their profile.
  • messagebox:MessageBox Where the user will receive messages.
  • quizzes:List<Quiz> List of quizzes that the user has taken.

MessageBox

Represents the users direct messages. When a user sends a message, it modifies both the user and their recipient's messagebox.

  • user:String The username of the user to which the MessageBox belongs.
  • conversations: List<MessageChain> the amount of "conversations" that the user is having. The user cannot have "two" conversations with the same people.

MessageChain

  • toAccount:User The account that the user is talking to.
  • List<String> The list of messages in chronological order.

Lesson

Lessons should be differentiated from quizzes. Each lesson is not generated while running the app, rather, it is loaded in. During a lesson, the user learns from a slide deck, but they are not quizzed on.

Quiz

Each lesson has an associated quiz. The content of each quiz is not generated while running the app, it is loaded in. A percentage could be calculated to recommend recharge lessons.

  • title:String The title for the quiz (will correspond to lesson title)
  • score:int The score out of the total points that the user had. The score can be used to recommend retaking the quiz and feedback.
  • pointsPossible:int The total score possible.
  • lastTaken: DateTime (from Dart core library) The last time the quiz is taken. This can be used to recommend recharge quizzes.

Post

Each post can be an article or supplementary material about the culture. The posts will not be directly user-submitted.

  • title:String Title of the post
  • author:String Author of the post
  • date:String Date of the post
  • content:String The content of the document, able to specify the text and images by URL.

State maintaining

  • App States: stored in memory
  • User data: stored in a database using Firebase.

Firebase Schema and queries

CapstoneDatabaseDiagram

Views and design

Log In Screen

Login (3)

Description

  • Should allow the user to sign into their account if they have one or prompt the user to create an account
  • Two fill bars one for username and one for password
  • a button for password recovery
  • a button to create an account

Sign Up

Sign Up (4)

Description

  • The sign up page should have 4 fillable text boxes for username ,password ,confirm password, and email.
  • A button for completing the sign up form
  • A button for returning the user to the login screen if they already have an account

Home Page

image

Description

  • The welcome screen should greet the user with lessons/quizzes and their current login streak
  • Shows buttons and view links for going to lessons and quizzes
  • should have navigational links at the bottom of the screen for moving to the different views

Search Page

image

Description

  • has a Fileable text box for user input
  • A search button that confirms the users query and searches for matches in the database

Example Lesson

image

Description

  • Multiple choice lessons have a questions and 2-4 answer choices for the user to select
  • they display the question number and the questions remaining

Profile Page

image

Description

  • the profile page displays a profile picture that the user can change
  • User statics in text boxes for their app engagement streaks and current lesson module
  • A button to log the user out
  • A button to edit their settings
  • A text field indicating when the user signed up for the app

Culture/ Article Screen

image

Description

  • Displays images in a layout that take the user to the corresponding article about said topic

Direct Message Page

image

Description

  • Allows peer to peer communication between users for increased interaction for sharing language and culture.
  • Allows for the user to enter text and then send

Learning Trail

image

Description

  • The user can see what level they have reached
  • The user can Start with the first lesson
  • The user cannot skip lessons
  • Clicking on a path i.e. "Greetings" directs user to the Greetings lesson
  • The user can access the navigation bar to swap screens