FireFlyer
Declutter your news
Joel Julin
Mikey Morrissey
Jefferson Leonata
Deliverable 2: Software Architecture Pitch
A Quick Review of our Project:
FireFlyer: a modern news application with an easy to navigate interface.
Software Architecture Overview
We chose the Model-View-Presenter design pattern
Software Architecture Diagram
Model (Jeff)
Presenter
View (Joel)
User
Article
Authentication
+
Cloud Firestore
Home Page
Search Page
Profile
Our Model
Jeff Leonata
ArticleModel
String title
List contributors
String articleURL
String thumbnailURL
int progress
Boolean status
DateTime creationTime
UserModel
String id
String name
List<ArticleModel> savedArticles
Firestore
Flutter service
We can use our Flutter App to read/write data to Firebase
CollectionReference articles = FirebaseFirestore.instance.collection(“articles”);
// We can use articles.add for reading
// or articles.set for writing new data
View
Joel Julin
The View is what the user will directly interact with and consume (home/profile page, search bar, article)
View
Presenter
Model
Presenter
The Presenter serves as the main communication between the Model and View
Presenter
Model
View
Mikey Morrissey
Key Task Software Pathways
To implement our app, we will have seven key tasks.
User Profiles
Users can sign in to their user profile if they are registered. The view presents the user profile page which contains favorited articles as well as the ability to sign out. The presenter pulls user information from the model and populates the favorites section with favorites for that specific user. Signing out causes the view to change to the login page. The presenter is updated to reflect that no user is currently ‘logged in’.
Login
The view presents the user with a basic login page. Any attempt to login prompts the presenter to send the login credentials to the model to determine if a user with those credentials is stored in our database. On successful login, the presenter changes the view to the home page which is populated with specific user information from the model. On unsuccessful login, the view remains at the login page, however, the presenter adds a dialog that indicates that the login was unsuccessful.
Search Bar
View presents a home page with a search bar at the top. Upon entering information into the search bar, the presenter will send the user input to the model (containing Firebase implementation) to be queried. While in the model, a list of the most related articles will be composed, sent through the presenter, and presented to the user as an updated view.
Viewing an Article
View presents home or profile page, user input (article thumbnail clicked) is sent through the presenter, the clicked article’s viewing status is retrieved from the model (Firebase) and an updated view with the option to continue/start reading is shown. User selects the option, selection passes through the presenter, then either the stored location or new location of the article content is retrieved from the model and the user is presented a link to go to the host website (WSJ, Forbes, etc.)
Categories
Four categories:
For each news article, we will have a category id that maps to the four categories.
Gallery
Navigation
Material Design widget: AppBar.bottom class