Skip to content

Pomo Kingdom

Zach Curtis edited this page Dec 6, 2021 · 73 revisions

The Pomodoro technique is a productivity technique used to break up focused work into timed intervals.
Pomo Kingdom aims to reward these focused intervals with commonly found RPG game elements.

1. Introduction

1.1 Purpose:

Pomo Kingdom is a timer that combines the Pomodoro technique with RPG elements to make focused learning more fun and interactive. The purpose of this wiki is to function as an information document of requirements in the development of Pomo Kingdom. The requirements later described in the wiki help create priorities and act as milestones during the development of the software.

1.2 Scope:

The Pomo Kingdom will be an android app and web application to help users manage their tasks and encourage the user to work with the time they have rather than against it. In addition, the user will be able to access real-time reports showing how much time they have spent working on each task/subject, the amounts of tasks completed, and the total hours of task working for each day and month. Users will also be able to add one another to their friend's lists to track each other's progress. The web and Android applications will be aesthetic and easy-to-use to inspire users to focus and complete their tasks.

List of Key Features:

  • Pomodoro Timer with the ability to change the time for intervals and the current task
  • Account login that saves user progress
  • User gains experience and levels up as they use the timer more
  • User gains items to match their progression
  • Database that stores all of this data (account info, items gained, etc.)
  • Having the front-end as both a web app and an android app

2. Description

2.1 Project Architecture

This project follows the client-server architecture model. The four main components of this project are the web application client, the android application client, the server, and the database. Both the web and android apps will connect to the same server, connecting both to the same database as well. The web and android apps will have the same functionality in general. Shown below is an image depicting the top-level architecture of the project including all four main components.

2.2 Web and Android Clients

The clients will be the website that we create and the android app. Both of these applications will connect to the database. Once the user is logged in, the client will retrieve their data from the database and then let the user use different features of the app such as the Pomodoro timer, user avatar, user level, user stats, item shop, and the friend system. The client can update the user’s information based on events in the client and can then send this updated information to the database. There are no functional differences between the web and android app, only UX changes to match the platform.

2.3 Server

A single server will be used to run both the we band android clients. This server will provide an API which allows both front-ends to access the database for the creation, retrieval, updating, and deletion of data. The API will do most of the heavy lifting required to format the data properly, such as password encryption/decryption, organizing the data into the proper fields, and formatting the entire user object on the creation of a user. With this server API, the client will be able to make simple requests to access the database which can make fairly intricate changes or retrieval of the stored data.

2.4 Database

We will be creating this database using MongoDB to store the user’s information. This includes the user’s username and encrypted password, the user's friends list, items received, the user’s current experience level, and other statistics as we see fit. It will also store all the different possible items that the user can unlock. When the user logs in, the database will be used to verify the credentials are the same as the ones stored in the database.

3. Requirements

3.1 UI:

  • User Registration/Login Page
    • UIReq1
    • Description: Once the user has accessed the web page or android app they will be prompted with a registration or log in screen, they need to be logged in or registered to view their character/use the timer.
    • Dependency: N/A
  • Main Page with Timer and Character
    • UIReq2
    • Description: Once the user has logged in they can now be presented with the main page where they can start the Pomodoro timer to begin questing. They will also see their avatar with their character's stats along with the tasks they have made which they can select from. On the app, the timer and character have their own separate pages due to the limited space available on phone screens.
    • Dependency: UIReq1
  • Friends Page
    • UIReq3
    • Description: Once the user is logged in and on the main page, they will be able to navigate to their list of friends, of which they can add or remove, as well as view their friends' profiles.
    • Dependency: UIReq1, UIReq2
  • Item Shop Page
    • UIReq4
    • Description: Once the user is logged in and on the main page, they will be able to navigate to an item shop, which will allow the player to spend the gold they have earned on items, which for the time being are only cosmetic. On the webpage, the character avatar and equipped items will also be shown, but for the app, only the item shop will be shown, as the app has a dedicated character page as described in the "Main Page with Timer and Character" UI requirement.
    • Dependency: UIReq1, UIReq2

3.2 Functional:

  • Database
    • FR1
    • Description: The database is used to store the data used by the software. The database will store user accounts info such as user login info, timer settings, character progression and friends list.
    • Dependency: N/A
  • User Registration
    • FR2
    • Description: The user will be able to create a new profile by providing a username and password. Following our non-functional requirements of security and authentication, the password will be encrypted in the backend before being stored in the database.
    • Dependency: FR1
  • User Login
    • FR3
    • Description: The user can access an already created account by providing the username and password created during the registration process. Usernames and passwords will be checked against the database in order to access individual accounts. Following our non-functional requirements of security and authentication, secure authentication will be used to check the input password against the encrypted password stored in the database.
    • Dependency: FR1
  • Edit timer
    • FR4
    • Description: Allows the user to set the interval, small break, and large break times used in the software.
    • Dependency: FR1
  • User Avatar
    • FR5
    • Description: The user avatar includes all of the game-related components of the user’s profile. This would include the user’s level, health, inventory, equipped gear, achievement progress, and more. The database will be used to store all of this information, and everything will be account-bound. The user avatar is essentially the foundation on which many of the game mechanics will be built upon.
    • Dependency: FR1, FR2
  • User level and stats
    • FR6
    • Description: The user’s level will determine many of their stats, their stats improve as their level grows. For the time being, the stats available are just the character HP and gold, with the plan to maybe implement more complex game mechanics involving stats like strength and defense in the future. Progressing by completing tasks on the Pomo timer will allow the user to gain XP (experience points) and then level up, allowing them to progress in the game. All of the information related to the user’s current level, their XP, and their other stats will be stored using the database and will be account specific.
    • Dependency: FR5
  • Items
    • FR7
    • Description: Items can be earned by players in a variety of ways, such as completing a task or purchasing in the item shop. These items can be broken down into categories, such as weapons, shields, or armor. They will be account-bound and stored in the database where the account information is held. The database will also be used to track what items the player currently has equipped at a given time. For the time being, items are only cosmetic, with the plan being to give them stat bonuses in the future if this project continues.
    • Dependency: FR5
  • Item shop
    • FR8
    • Description: The item shop will serve the function of allowing the user to use currency to buy new items or upgrades to existing items. The shop will be implemented to progress with the user, so that more powerful gear will be available when the user becomes more powerful. The available items in the shop will be stored in the database and will be account-based.
    • Dependency: FR7
  • Friend System
    • FR9
    • Description: Registered users will have the ability to add one another to their friend’s lists. This will allow for players to see each other’s progress, participate in activities together to give a bonus to their progress, and maybe even trade items.
    • Dependency: FR2, FR5
  • User Logout
    • FR10
    • Description: This will allow users to logout the current account. After logging out, the user will no longer have any sort of access to the account which they were just logged in to, and they will be able to log back in at any point in time so long as they use the proper name and password.
    • FR1, FR2

3.3 Non-Functional:

  • Authentication
    • NF1
    • Description: During registration every user creates a unique username and password. During the login process, entered user name and password must match what is saved into database to gain access into individual accounts.
  • Security
    • NF2
    • Description: Every password that is saved into the database is automatically encrypted by the server.
  • Adaptability (Android App)
    • NF3
    • Description: When the android app is run, it should be able to accommodate any Android screen size.

4. Diagrams

4.1 Wireframes

4.2 Use-Case Diagrams

4.3 Class Architecture

4.4 Sequence Diagrams

Technology

Android App:

Kotlin
Android Studio

Web App:

React
Express
NodeJS
Javascript
CSS
HTML

Backend:

MongoDB
Insomnia