Skip to content

unibuc-cs/software-engineering-product-jan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Questify

Table of contents

Intermediate Product

  1. Product Vision
  2. Requirements
  3. User Personas
  4. Features
  5. Backlog
  6. Design

Final Product

  1. Architectural Description
    i. Product Syntesis
    ii. C4 Diagrams
    iii. Non-functional Requirements
  2. QA - Testing
  3. Security Analysis
  4. CI/CD
  5. Demo

Product Vision

  • FOR people in need of a productivity tool
  • WHO are searchig for motivation and a fun way to stay focused.
  • Questify is a productivity mobile app
  • THAT disguises mundane tasks in a story-like manner
  • UNLIKE overwhelming, too complex, unengaging task managers(Habitica)
  • OUR PRODUCT offers a more intuitive and accessible user interface
  • Requirements

  • Must have a specific (iconic), engrossing interface
  • Must be easy to use and intuitive
  • Must engage the user and motivate them to keep using the app
  • Should offer a rewarding experience
  • Should make the user feel like a hero going through their character development
  • Should have a slightly social part too, let the user engage with their friends
  • User Personas

  • People in need of a productivity tool, regardless of their job or education level, who are searching for motivation and a fun way to stay focused
  • Features

  • Account Creation
    • Input: Account details
    • Activation: Press on Sign-up
    • Action: A user account is being created
    • Output: Gain access to application functionality
  • Account Login
    • Input: Account credentials
    • Activation: Press on Sign-in
    • Action: User credentials are being checked for validation
    • Output: Access to application
  • Task Creation and Control
    • Input: Task details (Title, Description, Due Date/Time, Priority Level, Task Type)
    • Activation: Press on "Create Task" and other task related butons
    • Action: ask details are processed; unique logic is applied based on the selected task type (e.g., Standard, Habit,etc)
    • Output: Task is added to the task list with appropriate settings and indicators; points are allocated; confirmation message is displayed
  • Points System
    • Input: created tasks
    • Activation: navigate to designated screen
    • Action: Calculate levels for every stat based on the completed task
    • Output: Stats are acccurately updated and displayed
  • Task Recommendation system
    • Input: Recorded Tasks, interests and friends
    • Activation: Navigate to designated section for recommandations
    • Action: Use different methods to create new customized tasks for the user
    • Output: Display the recommended task list
  • Progress Visualization
    • Input: Recorded and completed Tasks
    • Activation: Navigate to designated page
    • Action: Calculate and create progress related information
    • Output: Display the progress-related information in an intuitive manner
  • Friends
    • Input: Search other users and/ or accept friend requests
    • Activation: press invite/ accept invitation buttons
    • Action: Associate two user accounts as being friends
    • Output: Display the new friend in the friends list

    Backlog

    Prioritized backlog is situated in projects on Github, based on the User Stories from Issues

    Design

  • UML Diagram

  • image

  • C4 Container Diagram

  • image

    Architectural Description

    Product Syntesis

    Gamify is a mobile application that enables users to manage their daily activities more efficiently, interact with friends, and stay motivated through a gamification system. It combines task management functionalities with social interaction, aiming to boost users' motivation to complete their tasks and to keep their interest in the application for as long as possible.

    At the intermediate deliverable, the team has established the following functional objectives for the final deliverable:

    • the ability to make an account
    • the ability to manage three different types of tasks to organize work more efficiently.
    • the ability to receive daily tasks suggested by the app
    • the ability to log in
    • the ability to connect with one or more friends
    • the ability to give and receive challenges from buddies
    • the ability to level up my character, based on my achievements and in-app progress
    • the ability to choose the initial appearance of my character
    • the ability to have suggestions that are tailored to my interests

    Whilst some of the objectives, like: authentication, login and, the creation of three different tasks(without the possibility to edit or delete them :))) were already completed at the intermediate deliverable, for the final deliverable we still had many functionalities to implement. Now we can say that we managed to implement all the above-mentioned features, except the ability to level up your character, based on your achievements. We decided to give up on this idea because none of us have previously worked with animation tools and this process would have been a burden given this context. Nevertheless, we still created a feature that increases each character’s stats based on personal accomplishments.

    C4 Diagrams

  • C4 Container Diagram

  • image

  • C4 Context Diagram

  • Screenshot 2025-01-31 at 16 53 42

    Non-functional Requirements

    • Load a user’s tasks within one second.
    • Don’t let users wait for their suggestions.
    • Searching a buddy should not take more than 2 seconds.
    • The user should be aware of any loading processes.
    • No loading process should take forever.
    Our non-functional requirements regard mainly performance and responsiveness, as these were the quality attributes on which we chose to focus during the development of our project. Meeting them was accomplished by the following architectural decisions:
    • switching to a NoSQL database whose documents have been organized in a manner in which our main search processes would be as efficient as possible
    • working with contexts which fetch all our user data when the app is opened, guaranteeing no loading time for the user afterwards
    • scheduling the LLM which provides the suggestions to asynchronously generate them at the beginning of each day; this way, our users won’t have to wait for the tasks to generate (~ 8 seconds / task) the first time they enter the suggestions screen

    QA - Testing

    Security Analysis

    Main Threats:

    • No Data Encryption
    • Unsafe Communication Protocol (HTTP)
    • Insecure Authentication
    • Client-side Injection

    Best Practices to Avoid Mentioned Threats:

    • Encrypt data & use proper encryption key management solutions
    • Use a safer communication protocol with the server (HTTPS, TSL)
    • Use access control to restrict access to the stored data
    • Add requirements to users’ passwords to make them more robust
    • Add input validation in order to prevent code injection

    CI/CD

    Demo

    WhatsApp.Video.2025-01-31.at.16.57.11.mp4

    About

    software-engineering-product-jan created by GitHub Classroom

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Contributors 4

    •  
    •  
    •  
    •