-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the Pace-Pal wiki!
1. Introduction 2. Software Description 3. Database 4. Requirements 5. Plan
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.
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.
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.
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.
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.
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.
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
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
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.
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 |
- Aaron Marroquin
- Feliciano Murillo
- Marissa Palos
- Mason Juarez
3:30 Lab