Skip to content
AbdulazizAlSaid edited this page Dec 2, 2021 · 72 revisions

Rumii : FS-CSCI150-F21-Team10


1. Introduction

1.1 Purpose

This program is a web based application that allows users to track their utilities, bills, and rent. Then distribute them proportionally between multiple users who are staying under the same household. This wiki serves as a collection of information about the development of this web based application including the features and the purpose of the application. The requirements described later in this wiki are used to further develop the application more and rank task priorities during development.

1.2 Scope

This web application is for anyone with roommates that share house bills with each other. This application tracks and distributes multiple bills between users of the same household. These bills would include: rent, electricity, and internet as examples. Users would have to create profiles and then add each roommate to their household. The user would be prompted to complete a questionnaire to give a rough idea of which bills are needed for that house. For each type of bill the users would input the percentages of how much they pay each month and the bill due date. This application would then add each date onto their google calendars and set reminders for the bills. When one of the roommates pays their share of the bill, the application checks off and updates the payment as received. This will update and display the payment date for all other users in the household to view.

1.3 Definitions

User - Someone who can create a household by filling out a questionnaire and then adding other users who are using the service to be reminded to pay.

Household - Users that are in the same group and share bills through our services.

Profile - House definition of bills, inhabitance, and financial obligations.

Questionnaire - Profile builder that will automatically generate needed tools for the client and give the user a preset list of bills for their household


2. Description

2.1 Components

There will be two main components that build Rumii. The client is the software that provides the Web service. The next component will be the database, server side, that will be tied to the client that could be accessed through a network. The two components will be communicating to each other by taking in data as well as grabbing and projecting information to the client from the database. This will be done through the clients user interface. The specifications and utilities used will be specified below.

2.2 The Client

The client will be a web application that communicates with the database once logged in to retrieve user specific preferences based on the questionnaire they filled when they create an account. These are the number of people live in that household, types of bills (e.g. PG&E, internet, rental, and others), reminder for bill payments. The client can update their info and edit the information on the household.

2.3 The Database

The database will be made containing different bills. The database will save the bill configuration for the house or apartment based off of the questionnaire given during account registration. It will also save the home’s profile for inhabitants and be able to work with some API’s to send reminders and request payments.


3. Requirements

3.1 UI Requirements

UI Requirements: Login / Create account page, Questionnaire page, Dashboard, User Profile page.

ID: UIR1 Login

  • Description: The user is prompted with a signup page where they can submit login information such as username, email, phone, and passcode and also could login in through Google Login API. This user data will be stored in the database.

  • Rationale: Registers the user to be able to use the service and features within Rumii.

  • Dependency: N/A

ID: UIR2 Questionnaire

  • Description: Here the user will answer a group of questions to automatically create a profile for the home. The questions range from rental price, number of people in the home, and expected utilities.

  • Rationale: This will make the customization of the dashboard quicker and more efficient through not needing to manually input this information.

  • Dependency: UIR1

ID: UIR3 Dashboard/Homepage

  • Description: This is the main page that displays the bills/expenses, household members, Google Calendar, and transaction log.

  • Rationale: Users can view and access different functions of this webpage.

  • Dependancy: UIR1,UIR2

ID: UIR4 Profile Page

  • Description: Given that the user is registered on the website, a user can view their user profile page if they are logged in. It contains their name, questionnaire that the user filled during account registration, and also an option to change / link payment methods with Paypal.

  • Rationale: For the user to view their account and edit the questionnaire.

  • Dependency: UIR3

ProfilePage

ID: UIR5 Set Reminders

  • Description: This is a page where only household manager has permission to access to set reminder for the household members to make payment.

  • Rationale: User that is household manager can use this function to remind their roommates to pay their portion of bills

  • Dependancy: UIR8

ID: UIR6 Bills/Expenses Management

  • Description: This is a page where household manager adjust or edit the bills or expenses of the household .

  • Rationale: Household manager can adjust the amount or % of household members are paying.

  • Dependancy: UIR3

ID: UIR7 Make/Request Payment

  • Description: This is a page where user make payment or request payment

  • Rationale: This is a function where user pay or request money to another user

  • Dependancy: UIR3

ID: UIR8 Household Management

  • Description: This page is only accessible by household manager to edit or remove household members

  • Rationale: A page for household manager to view details or remove household members

  • Dependancy: UIR3

3.2 Functional Requirements

ID: FR1

Household Database

  • Description : The database stores information pertaining to the household from the questionnaire. This data will include household size, type, number of rooms, and utilities that are to be billed for. The database will also include an array holding the user ID's to refer to each Rumii. There will also be a sub-collection for bills to be laid out and include the amount, day that it is due, as well as an array whose index corresponds to the user ID array's.
  • Dependencies: Firebase Server, FR5

ID: FR2

User Database
  • Description : The database stores data pertaining to the user from the signup page or supplied by google login API. This data will include usernames, Gmail, phone, household ID, User ID, and salt/hash data.

  • Dependencies : Firebase Server. FR5

ID: FR3

User Profile
  • Description : The user profile will give the user access to the database which contains information like their houseID, bills, and payment information.
  • Dependencies: FR2

ID: FR4

User Sign-up Through Google API
  • Description : Creates a user profile through Google accounts API and will give Rumii access to the users Google Calendar.

  • Dependencies : FR9

ID: FR5

Questionnaire
  • Description : The questionnaire will be the initial user input that gathers the data to place in the database for further functionality, and also give the user a household manager role over the household

  • Dependencies : FR9

ID: FR6

Bills
  • Description : Splits each of the bills the household has by user defined percentages for each roommate.

  • Dependencies: FR1

ID: FR7

Google Calendar
  • Description : Using the Google Calendar API in order to gain access and create a google calendar with the other roommates in order to sync bill dates

  • Dependencies: FR6, FR4

ID: FR8

PayPal API
  • Description: Payments for bills through the Paypal API and confirming that the roommate has paid this bill to check it off the list for everyone to see.

  • Dependencies: FR6

ID: FR9

Sign-up Page
  • Description : The landing page after hitting the “Sign-up” button. This will request user input for first and last names, email address, and an account password.

  • Dependencies : FR4

3.3 Non-Functional Requirements

ID: NFR1

Responsive Web Design
  • Description : The layout of a web page should be different and compact when the size of windows has increased or decreased.

  • Rationale : The size of windows would be resized, so responsiveness of the web page should be carefully designed to show all necessary functions and information of the web page regardless of the size of windows.

ID: NFR2

Account Security
  • Description : Passwords and accounts must be validated through Google API to work efficiently with Rumii.

  • Rationale : If the account is not valid Rummi will not be able to connect to its API as well as create an account.

ID: NFR 3

Network/Database connectivity
  • Description : Creating a pipeline/route that connects the UI to the database.

  • Rationale : If there is no efficient connection between the two there is no way to store user data as well as be able to process the backend code from the UI.


4. Prioritization

Week of Back-End Front-End
9/26 -Setup database class with functions for the front-end (Sort different types of expenses)
-Find a database to use (NoSQL)
Make layout for:
-The web page including wireframes and the prototypes of the login page Wireframe
-Questionnaire
-Home Page
Then get approval from everyone
10/3 Card Sorting activity (Categorize and Standardize Cards) Card Sorting activity (Categorize and Standardize Cards)
10/10 Research on Firebase Start on prototypes
10/17 Complete Firebase database model Continue work on prototypes and class diagrams
10/24 Create a route that links the database to the frontend Set up login authentication for users to create a profile or login through Google API
10/31 -Make a function to process and confirm payments with Paypal API
-The user knows whether a transaction/payment is made successfully or not via notification
Create a PayPal linking UI and notification if transaction is successful or not
11/7 -Make a function that allows the users to set if a bill or expense is recurring or one-time only
-Also use Google Calendar API to allow users to check the bills and expenses on the date to be paid in a calendar-like format
11/14 Calculator-like system needs to be created to split bills between roommates Bill distribution between users under the same household
11/21 Google Calendar API needs to send out reminders to users that have outstanding bills Reminder to pay outstanding bills for users

5. Diagrams

5.1 Use Case Diagram

5.2 Class Diagram

5.3 Firebase Database Model

5.4.1 Sequence Diagram - Registration

5.4.2 Sequence Diagram - Questionnaire