Sprint 2 - ISIS-3510-Mobiles/Flutter GitHub Wiki
1 List all the business questions that you will implement with their respective type
Type 1 Business Question (App's Telemetry):
-
Question2: "Which day of the week do users log the most hours on the app?"
-
Context Q2: Knowing when users are most active can help tailor content delivery, feature updates, and promotional activities to times when they are most likely to be seen and interacted with. This simple metric can significantly impact user engagement strategies.
Type 2 Business Question (Direct User Experience Improvement):
-
Question1: "What specific points in the checkout process contribute most to cart abandonment, and how can they be addressed to improve conversion rates?"
-
Context Q1: This question focuses on identifying the key pain points within the checkout process that lead to cart abandonment. By understanding which steps are causing users to abandon their purchases, targeted improvements can be made to enhance the overall user experience and increase conversion rates.
-
Question 4: "How frequently do users engage with the sustainability tracking feature, and what patterns can be observed in terms of user interaction over time?"
-
Context Q4: This question focuses on increasing user interaction with the sustainability tracking feature. By making it more prominent and easier to access, the app can better emphasize its core mission of sustainability, leading to a deeper sense of accomplishment for users and a stronger connection with the platform's purpose.
Type 3 Business Question (Features Analysis):
-
Question 3: "Which product listing categories (e.g., vintage, branded, casual wear) receive the least traffic and conversions?"
-
Context Q3: This question helps analyze whether certain categories are underperforming. Based on the insights, the app team can decide to remove or merge these categories, promote them differently, or revamp their presentation to increase their appeal.
2 List all the implemented functionalities.
Use of at least one sensor in the phone
The implementation of phone biometrics in the Profile view for secure password changes, as well as in the login process, effectively fulfills the requirement of utilizing at least one sensor in the mobile app. By leveraging the phone's biometric sensors, such as fingerprint or face recognition, the app allows users to authenticate their identity seamlessly and securely during both login and password changes. This dual use enhances user experience by providing a convenient method for accessing their accounts and making secure updates, while also reinforcing the app's security measures. Integrating biometric authentication demonstrates an innovative use of the phone's capabilities, aligning with the goal of enhancing app functionality while prioritizing user safety.
https://github.com/user-attachments/assets/20c34853-7fed-4ae9-b018-a98f1308c7a1
https://github.com/user-attachments/assets/11b131a5-4482-4d99-97b2-201e664330ca
A functionality that answers Type 2 questions (User Experience Improvement) could involve tracking user interaction with Cart-Checkout to streamline the purchasing process:
- Cart-Checkout functionality: Use telemetry data to analyze user behavior, such as average checkout time, and optimize the process for reducing abandonment rates.
- View: Cart-Checkout.
- Data Source: App telemetry.
A context aware functionality
The context-aware feature leverages the user's location and recent browsing data to enhance their shopping experience. Its primary goal is to help users easily find products of interest that are nearby, thereby encouraging purchase decisions. When a user accesses the app, the feature lists available items based on the order in which they were uploaded. If the app obtains the user's location, it organizes the items by proximity while initial search patterns are still being established.
Additionally, the feature retains a record of the last five items viewed by the user. If it detects that at least three of these items share a common word in their titles, it prioritizes displaying those items first, sorted by relevance. The secondary sorting criterion is the geographic proximity to the user. Each item includes latitude and longitude coordinates, allowing the app to determine how close each product is to the user's current location. This intelligent organization not only facilitates easier access to relevant products but also enhances the overall shopping experience by making it more personalized and efficient.
https://github.com/user-attachments/assets/2233dba7-bac3-470c-adfe-d1cd310a9834
A functionality that is considered smart feature
This smart feature generates a list of similar products based on the item the user is currently viewing in the 'detail_view'. Its primary aim is to recommend additional products that may interest the user while ensuring they fall within their purchasing range. To achieve this, the feature scans all available products for those that contain at least one word similar to the title of the item being viewed.
If the search yields fewer than three products with similar keywords, the feature then looks for the products with the lowest prices. Ultimately, it compiles a list of three recommended products, prioritizing cost-effectiveness to enhance user savings. By providing tailored recommendations based on user interest and affordability, this functionality enriches the shopping experience and encourages users to explore more options.
https://github.com/user-attachments/assets/908e9b90-c6c9-4213-8569-b6299c7b6595
Allow users authentication and use external services
The implementation of Firebase for authentication in the Login-Register functionality fulfills key requirements for secure user management while allowing authentication through external services. By leveraging Firebase Authentication, the app ensures secure user sign-up, login, and session management, protecting sensitive data with built-in security features. This integration streamlines user management, making it easier for developers to handle authentication workflows efficiently, ultimately improving both security and usability in the app.
- Failed Auth Firebase:
https://github.com/user-attachments/assets/c1736e23-e6b5-44e5-9e0e-01aa01775c84
- Successful Auth Firebase:
https://github.com/user-attachments/assets/a8d1f221-6769-4289-9d24-d41f4b223234
- Successful Registration Firebase:
https://github.com/user-attachments/assets/e06ffc5c-f7fb-4257-bd86-f1ad910f407c
- Failed Registration Firebase:
https://github.com/user-attachments/assets/26d7097e-6ab1-4c78-a530-6f5a849b7ee3
The Sustainability view will connect users to external resources explaining the environmental impact:
- Sustainability functionality: Link external services to provide educational content on water saved, waste diverted, CO2 emissions, etc., through Firebase Cloud Storage or an external API.
- View: Sustainability.
- External Services: Link to external sustainability resources. This is accessed via the button included.
3 Design an analytics stack or pipeline (WIKI)
- Analytics pipeline for Q2 Type 1:
The EcoStyle analytics stack primarily leverages Firebase Analytics to gather, analyze, and report user interactions within the app. This stack begins with Firebase Authentication, which securely manages user login processes, ensuring that each user’s identity is verified before accessing the app's features. When users log in, Firebase Authentication records essential information, such as the time and method of authentication. This data is crucial for understanding user access patterns and provides a foundation for the analytics collected.
Once authenticated, user interactions are tracked through Firebase Analytics, which captures events such as app sessions, product views, and purchases. This comprehensive data collection allows the EcoStyle team to monitor user behavior effectively. By linking user logins to specific actions within the app, it becomes possible to analyze when users are most active and which days they log the most hours. This information can then inform marketing strategies and content delivery tailored to peak user activity times, ultimately enhancing user engagement.
4 Describe the architecture of your solution by using the necessary diagrams, patterns, and tactics. (WIKI)
Architecture Design of the EcoStyle Application - Dart:
The architecture of the EcoStyle application is based on a layered approach, which separates concerns and allows for better maintainability and scalability. The primary layers include the Presentation Layer, Business Logic Layer, and Data Access Layer. This structure facilitates the implementation of various design patterns such as Model-View-Controller (MVC) and the Repository Pattern.
In the Presentation Layer, the UI components are designed using Flutter, which allows for a reactive and dynamic user interface. The Business Logic Layer handles authentication and data management through Firebase services, such as Firebase Authentication for user login and registration, and Firebase Analytics for tracking user interactions. The Data Access Layer is responsible for interacting with Firebase services to fetch or store data, ensuring a clear separation between the UI and data handling. This architecture not only enhances code organization but also provides a robust foundation for integrating future functionalities like machine learning and additional analytics.
5 Provide a rationale for your architectural design choices. (WIKI)
Rationale for Architectural Design Choices - Dart:
The architectural design for the EcoStyle application employs a layered architecture that promotes separation of concerns and scalability. By isolating functionalities into distinct layers—Presentation, Business Logic, and Data Access—we enhance maintainability, allowing developers to work on individual components without affecting others. This structure is crucial for future enhancements, enabling seamless integration of additional features like analytics or machine learning without significant rework.
Utilizing the Model-View-Controller (MVC) and Model-View-ViewModel (MVVM) patterns allow for organized code management, dividing the application into models (data), views (UI), and controllers (logic). This organization facilitates better testability, ensuring that key functionalities, such as user authentication and analytics, are robust. Flutter is chosen for the Presentation Layer due to its reactive UI capabilities and cross-platform compatibility, providing a dynamic and engaging user experience while minimizing development time.
Incorporating Firebase services in the Business Logic Layer offers secure user management through Firebase Authentication, which is essential for handling sensitive information in a marketplace environment. Additionally, Firebase Analytics tracks user interactions, providing insights into user behavior that help tailor content and features. Finally, the Repository Pattern in the Data Access Layer centralizes data management and abstracts underlying data sources
6 Implement the proposed architectural design.
Links to the implementations:
Implementation | Description |
---|---|
Login View | Implements user login using email/password authentication and Face ID. This view is part of the Presentation Layer, utilizing Flutter's reactive UI for dynamic interaction and Firebase Authentication to securely manage user access. |
Profile View | Displays user profile data, allowing users to update their information. It connects the UI to Firebase services through the Business Logic Layer, ensuring smooth data synchronization and user experience. |
Firebase Options | Provides the Firebase configuration settings essential for authentication and analytics integration. It supports the separation of concerns in the layered architecture by abstracting configuration from the main logic. |
Main Application File | The entry point that initializes the application's routing and structure. It demonstrates the Model-View-Controller (MVC) pattern by handling the transitions between views, such as login and profile, and coordinating business logic execution. |
Register View | Implements user registration with Firebase Authentication. After successfully registering, it redirects users to the list items view. This view is part of the Presentation Layer, ensuring that user data is capture |
This section outlines the components of the MVVM design pattern used in the application, highlighting their roles and responsibilities.
Implementation | Description |
---|---|
Detail View | Manages everything related to the user interface and communication, focusing solely on presenting information to the user. It handles user interactions and displays product details effectively. This view uses the provided package of flutter in order to implement the MVVM pattern. |
Detail ViewModel | Serves as an abstraction of the view, containing all the methods and properties needed for its functionality. It directly connects to the view through a 'binder', allowing for seamless updates and changes. |
Product Model | Manages the data model for the information displayed in the view. It facilitates the creation of new products and ensures that data can be efficiently used within the ViewModel. |
Implementation | Description |
---|---|
Sustainability View | Shows the environmental impact that the user has based off key metrics arbitrary chosen |
Sustainability Model | Models the sustainability attributes for firestore |
Cart View | Shows the implemented cart view |
Cart Model | Models the cart object for firebase |
Cart Service | Crud for the cart items |
7 Implement business questions (BQ).
Links to the implementations:
Implementation | Description |
---|---|
Login View | Contains the registration of the time of the app and other statistics needed to fulfill BQ 2 Type 1 |
Sustainability View | Contains the sustainability options to answer the BQ 4 type 2 |
Cart View | Contains the view that feeds the analytics engine for BQ 1 Type 2 |
List of Items View | Contains the view that feeds the analytics engine for BQ 3 Type 3. |