Skip to content
Aaron M edited this page Feb 6, 2019 · 3 revisions

Logo

Welcome to the Pace-Pal wiki!

1. Introduction 2. Software Description 3. Database 4. Requirements 5. Plan

1.Introduction


1.1 Purpose

Pace Pal in an app that communicates the real-time distance traveled between two people who happen to be walking or running.

In a world of fitness, PacePal allows friends to do Collaborative Cardio. How does this work? Two people in completely different locations are able to walk or run together in real-time.

1.2 Scope

In a growing world of fitness an app to revolutionize fitness is essential. That is where PacePal comes in. PacePal is an app that will encourage friends to come together and work out. PacePal will encourage people to go out and work out together by allowing friends to run or walk in real time. PacePal will provide several functionalities that will allow individuals to track their daily, weekly and monthly stats. Every user will have an account where they can track their statistics and connect with their friends.

Features:

🏃 Keep Track of distance of a person (two people, more?)

❤ Cardio stats: A user can see the distance they have traveled over the course off all of their Pace-Pal sessions.

🎤 Voice Feedback: Phrases that provide updates on the state of the session for users so they do not have to check their phones, such as periodic updates on their distance or updates on the connected player.

Users will have the freedom to choose from 3 modes: Competitive, Collaborative, and Social.

  • In the Competitive mode, friends decide on a Goal Distance; for example, two friends want to see who runs 3 miles first. PacePal will silmutaneously track each friend, although they may be competing in two completely different neighborhoods.

  • In the Collaborative mode, two friends work towards a common goal; for example, two friends want to walk a combined distance of 4 miles. PacePal gives those friends the flexibility to walk in their own respective locations, while still working on the same goal.

  • In Social mode, users are able to have a stress-free experience, void of any goals or competition. PacePal will facilitate a friendly cardio session, tracking their stats, but not encouraging competition.

2. Software Description

2.1 The Client

The client for Pace-Pal will be a mobile application created using c++ with Android Studio as an IDE. The application will be the primary interface through which users initiate actions provided by our app. These actions include signing in, messaging other users, initiating one of the three modes (competitive, collaborative, and casual), and viewing their cardio stats. A GUI will be provided to enhance the user experience as they initiate these actions and will be created with Android Studio's Layout Editor.

2.2 The User

The user for Pace-Pal only interacts with the mobile application GUI. From this GUI they must be able to perform all of the applications functionalities with ease.

3. Database

3.1 Database Overview

The database stores user accounts, statistics and real time information such as current individuals logged onto Pace-Pal. User accounts and statistics will be stored via Firebase, a mobile and web application development platform. Firebase has a real time database service called Firestore which allows the app data to be synchronized with the users. With Firestore data can easily stored, synced and queried on mobile and web apps.

3.2 Structured Database

Since Pace-Pal will give the user the ability to check statistics for daily, weekly, and monthly achievements it is necessary to have a well structured database. With Firestore it is possible to structure data in many ways. A hierarchy can be created to store related data that can be easily retrieved using expressive queries.

4. Requirements

4.1 UI Requirements

Login Page, Main Menu, Stats Page, Map Display W/ Live Distance Tracking Feed,etc

UIR1: First Window: -Description: Once the user has downloaded and started the app a window must be displayed -Rationale: Allows the user to see the UI -Dependency: None

UIR2: Login Page: -Description: Once the first window has been displayed a window is necessary for the user to access an existing account, retrieve a forgotten password or make a new account. -Rationale: Allows the user to create an account and/or login to an existing account -Dependency: UIR1

UIR3: Main Menu: -Description: Given that the user has an account and has logged in, it is necessary to have a page that will guide the user through the UI. -Rationale: Allows the user to navigate through the apps functionality -Dependency: UIR2

UIR4: Stats Page: -Description: Given that the user has selected to see his stats from the main page, the stats page will display the users exercise statistics. -Rationale: It is one of the applications uses. -Dependency: UIR3

UIR5: Map Display Page: -Description: Given the user has decided to go into a workout session, the map display page will display the workout session. -Rationale: Display the workout session -Dependency: UIR3

4.2 Functional Requirements

Profile System, Messaging System, Distance Tracking, Competitive Mode, Collaborative Mode, Social Mode, Stat Tracking System

FR1: User Registration -Description: The user must be able to sign in using Google sign in. Then the user must create a username and enter their first and last name. This information is saved into Firebase Authentication database and added to FireBase Cloud Firestore database. -Rationale: The user needs to register in order to use our application. -Dependency: None

FR2: User Silent Login -Description: Given that a user has registered with Google sign in, they should be able to enter the app automatically without having to sign in explicitly. -Rationale: User can launch the app and access the main content without having to sign in every time. -Dependency: FR1

FR3: Create a Pace-Pal Session -Description: A user should be able to begin a Pace-Pal session in one of the three modes. -Rationale: So the user can begin using the application's primary function. -Dependency:FR2

FR4: Add friends: -Description: A user should be able to add friends who are also registered on the app. -Rationale: An organized way for players to invite users to their session -Dependency: FR1

FR5: View Friend's List: -Description: A user should be able to view their friends in a list. -Rationale: An organized way for a user to view their friends.

FR6: View Friend's Profile: -Description: A user should be able to view their friends' profiles and to check their stats. -Rationale: An organized way for a user to check their friends' stats.

FR7: Invite Friends to a Session -Description: A user should be able to invite their friends to a Pace-Pal session before it begins. Rationale: So the user can share a session with their friends. Dependency: FR4

FR8: Messaging System -Description: Users have the means to communicate with their friends at any point, as long as they are not in a running session. We do not promote running and messaging simultaneously, as this poses a serious hazard. -Rationale: PacePal facilitates communication between friends, and the messaging system is one of the ways PacePal accomplishes that. -Dependency: None

4.3 Usability Requirements

Things our app needs in order to ensure good user quality of life. Examples would be quick creation of sessions, responsive menus, support for multiple phone resolutions, etc.

5. Plan

Outlines the timeline we want for getting this thing done on time.

Week Front-End Goal Back-End Goal
2/5-2/12 Main Menu + Friends List Design Social Mode Refactor + Adding Friends + Friends Search + Firebase Messaging + FB & Silent Login
2/12/-2/19 Login Page + Line in mapbox Collaborative Mode + Competitive Mode +
5-6 UI Plan Finished *
7-8 Login Page, Main Menu Determine API, Integrate API, Studio, and Firebase
8-9 Profile Page, Friend Search Page User Registration, Distance Tracking Algorithm (start on/finish)
9-10 Map Interface, Invite Friends to Session Page Distance Tracking Algorithm, Extend Algorithm to Two Users
10-11 Stat tracking Page, Messaging Page Modify Algorithm for Competitive Mode, Invite Friends Functionality
11-12 Test app with phones, Map Menu, Create sessions Integrate MapBox SDK, Allow User tracking via MapBox
12-13 Create access buttons on map UI, Create GUI for map Send/receive user data from database

6. Team Members

  • Aaron Marroquin
  • Feliciano Murillo
  • Marissa Palos
  • Mason Juarez

7. Lab hour

3:30 Lab

8. Diagrams

8.1 Use Case Diagram

8.2 Class Diagram

8.3 Sequence Diagram

8.4 Wire Frames

https://marvelapp.com/5j1dga3