6
GET SWOLE Design Documentation Dartmouth College, COSC 65 Professor Andrew Campbell Designed by Cameron Price, Andrew Pillsbury, & Patricia Neckowicz Description: Do you like to hit the gym, but always forget what you want to do? Are you seeking that perfectly ripped body, but don’t know what it takes to get one? Are you looking to get more organized and serious about your lifting routines? GET SWOLE is here to help. GET SWOLE is a simple, easytouse app that enables users to keep track of their lifting schedules and weights. It allows you to create your own workout, manage your schedule, and track your progress. GET SWOLE’s user interface is so intuitive and easy that no other workout app or notebook will compare in recording your workout data. GET SWOLE also has its own social network of users all over the web whom you can share workouts with and download workouts from. User Interface Design: Main Overview When the app is launched the main user interface is displayed. This consists of three simple swipeable tabs from left to right: Workouts, Schedule, and Progress. When the app first launches, the workouts tab comes to focus. This is where users can view, edit, and begin their lifting routines. The schedule tab is where users can view their monthly calendar and see what workout routines they have scheduled for each day. The progress tab is where users can view their progress for each of their custom strength training exercises and get visual graphs and tables of that progress. The main user interface also has a menu bar that consists of three buttons from top to bottom: Profile, Friends, and Settings. The profile button opens a simple activity that allows the user to update their personal information and set which workouts they want to share with those they connect with via the web. The friends button directs the user to an activity that allows them to find other users via the web and share each other’s workouts. Lastly, the settings button directs

GET SWOLE Design Documentation - Weeblygetswoleapp.weebly.com/uploads/2/8/5/8/28583405/getswole-toplevel... · GET SWOLE Design Documentation Dartmouth College, COSC 65 Professor

Embed Size (px)

Citation preview

Page 1: GET SWOLE Design Documentation - Weeblygetswoleapp.weebly.com/uploads/2/8/5/8/28583405/getswole-toplevel... · GET SWOLE Design Documentation Dartmouth College, COSC 65 Professor

 

 

 GET SWOLE ­ Design Documentation Dartmouth College, COSC 65 Professor Andrew Campbell  Designed by Cameron Price, Andrew Pillsbury, & Patricia Neckowicz 

 Description:  Do you like to hit the gym, but always forget what you want to do?  Are you seeking that perfectly ripped body, but don’t know what it takes to get one?  Are you looking to get more organized and serious about your lifting routines? GET SWOLE is here to help.   GET SWOLE is a simple, easy­to­use app that enables users to keep track of their lifting schedules and weights.  It allows you to create your own workout, manage your schedule, and track your progress. GET SWOLE’s user interface is so intuitive and easy that no other workout app or notebook will compare in recording your workout data. GET SWOLE also has its own social network of users all over the web whom you can share workouts with and download workouts from.   User Interface Design:   Main Overview   When the app is launched the main user interface is displayed.  This consists of three simple swipe­able tabs from left to right: Workouts, Schedule, and Progress. When the app first launches, the workouts tab comes to focus. This is where users can view, edit, and begin their lifting routines. The schedule tab is where users can view their monthly calendar and see what workout routines they have scheduled for each day. The progress tab is where users can view their progress for each of their custom strength training exercises and get visual graphs and tables of that progress.   The main user interface also has a menu bar that consists of three buttons from top to bottom: Profile, Friends, and Settings. The profile button opens a simple activity that allows the user to update their personal information and set which workouts they want to share with those they connect with via the web. The friends button directs the user to an activity that allows them to find other users via the web and share each other’s workouts. Lastly, the settings button directs 

Page 2: GET SWOLE Design Documentation - Weeblygetswoleapp.weebly.com/uploads/2/8/5/8/28583405/getswole-toplevel... · GET SWOLE Design Documentation Dartmouth College, COSC 65 Professor

the user to a preference activity that allows the user to modify units, data, and privacy settings. See the sketched outline of the full user interface below: 

   Workouts  The workouts portion of our application consists of three main pieces. Upon starting the app, the user is directed to the Workouts tab ­ this is a listview fragment that displays all workouts and lifts that the user has created and downloaded (see Friends section to learn about downloaded workouts). From this screen, the user can either click the “+” button to add a workout, or click on a listed workout to bring them to the WorkoutEditActivity, which allows them to customize their workout. 

 Each workout is composed of a sequence of exercises. In the WorkoutEditActivity, the user can add exercises to their workout (either choosing to select an already existing exercise or create a new one). Either of these choices opens a dialog with empty fields: exercise, weight, reps, rest time, goal, notes. These can be left blank to be entered by the user when doing the workout, or filled in at the creation of the workout. At the bottom of the view, the user can start the workout. This opens the WorkoutDoActivity, which looks very similar to the WorkoutEditActivity. The user 

Page 3: GET SWOLE Design Documentation - Weeblygetswoleapp.weebly.com/uploads/2/8/5/8/28583405/getswole-toplevel... · GET SWOLE Design Documentation Dartmouth College, COSC 65 Professor

can fill in the left­out information about each exercise via the dialog, and then save their workout to the workout instance database.  Schedule  The schedule portion of the application enables a user to schedule workouts, see a calendar of already scheduled workouts, and start scheduled workouts directly from the calendar.  It displays a calendar view of the current month, with options to view the next or previous month.  Days that have workouts scheduled are displayed in one color, days that have no workouts scheduled are displayed in a different color, and the current day is highlighted.  When the user clicks on a day, a list of workouts scheduled for that day appears at the bottom of the screen.  The user can click on a workout, and then choose either to change the scheduling on that workout or to do that workout on the spot.  In addition, the user can choose to add another workout, in which case a dialogue box appears into which the user enters the workout to be added and the frequency with which the workout should repeat, if any. All scheduled workouts will send a notification to the user once its schedule day has arrived.   Progress   The progress tab displays all of the user’s workouts.  When the user clicks on a workout, a summary list of the exercises for that workout appears.  When the user clicks on an exercise, a graph of the user’s progress for that exercise is shown along with a graph of the user’s goal for that exercise.  The graph can be displayed either by weight (weight on the y­axis, time on the x­axis) or by reps (reps on the y­axis, time on the x­axis). All data is plotted according to the completion date of each exercise.  Profile  The profile activity allows the user to enter their personal information, including name, hometown, sport, weight, height, gender and general biographical information. The user can choose a profile picture using either the phone’s gallery or the camera. The user may also choose from a listview of workouts they have saved and check all that they wish to be public on the social network.   Friends  The friends section of the main menu bar brings the user to an interface that allows users from all over the web find one another and share workouts with each other. For more detailed breakdown on how that works from the Google App Engine side see the “Social Network with App Engine” section below.   When first brought to the activity, the user has the option to either search for prospective friends or scroll through existing friends. When searching for prospective friends, users can query by 

Page 4: GET SWOLE Design Documentation - Weeblygetswoleapp.weebly.com/uploads/2/8/5/8/28583405/getswole-toplevel... · GET SWOLE Design Documentation Dartmouth College, COSC 65 Professor

name, hometown, and sport. Once a prospective friend is identified, the user is brought to a profile activity similar to the main profile user interface.  From here the user can search through the prospective friend’s information and public workout routines, download routines, and request a friendship connection. If the user is not interested in looking for new friends, they may periodically check their current friends’ profiles and stay updated on their bios and workouts.  Settings  The settings section brings the user to a preference activity that allows the user to modify a multitude of settings. The user can set the unit system used for weights and height to either Imperial or Metric System (Imperial as the default). The user also can set his or her overall user profile as completely private or not. In addition, the user has options to manage saved data such as deleting workout history, deleting the custom workout library, or clearing all data and resetting the app data.  Database Implementation:   Data Structure (classes)  Workout.java A class for workout skeletons, containing information about exercises and scheduling.  Contains Name, Exercise List, Creation Date, Scheduled Dates, Frequency List, and Notes.  WorkoutInstance.java  A specific completed workout, with the exercise information completely filled out (including weights and reps).  Contains a reference to the Workout that was completed, Exercise List, and Date.  Exercise.java  An exercise with some or all of the information filled out.  Contains Name, Reps, Weight, Reps Goal, Weight Goal, Notes, and Rest.  Frequency.java  A class for holding the frequency with which a workout should be scheduled.  Contains Day, Start Date, and End Date.  Database Table Schema  There is one table for each class (workout, workout instance, exercise, and frequency), each of which has an ID column and a column for each object instance variable.    

Page 5: GET SWOLE Design Documentation - Weeblygetswoleapp.weebly.com/uploads/2/8/5/8/28583405/getswole-toplevel... · GET SWOLE Design Documentation Dartmouth College, COSC 65 Professor

 General Database Operations  The database wrapper has methods to add, remove, and update rows for each of the tables.  In addition, it can convert a row of a table into an object of the corresponding class, and can search for rows in a table.  Service Implementation:   Scheduled Workout Service  The scheduled workout service displays a notification on the morning of every day that the user has a workout scheduled.  If the user clicks on the notification, it brings the user to the WorkoutDoActivity page.  Social Network with App Engine  See the following flowchart for the social networking component of the app: 

 When the app starts, the MainActivity registers the device with the App Engine’s Datastore. After the device is registered, the user can upload their profile information and their public workouts to the cloud. The ProfileActivity uploads information once all profile information and public workouts 

Page 6: GET SWOLE Design Documentation - Weeblygetswoleapp.weebly.com/uploads/2/8/5/8/28583405/getswole-toplevel... · GET SWOLE Design Documentation Dartmouth College, COSC 65 Professor

are saved. To do this, it has ServerUtilities post a message to the PostDataServlet, which then saves the data to the Datastore.   In the FriendActivity, users have the option to view other user profiles and send “friend requests”. In order to send a friend request, the FriendActivity uses ServerUtilities to access the FriendServlet. The FriendServlet then saves a friend request message in the Datastore. When the prospective friend next goes online, they are notified of a request by their GCMIntentService, and can choose to accept or decline the message. Once a request is accepted, another post is sent and a mapped connection between user devices is made (profiles are linked).   The user can search through other user profiles in two ways: (1) Search for other users, or (2) Visit current friends. When users search in the search bar of the FriendActivity, a post message is sent to the ViewPeopleServlet which passes the search request to the Datastore. In return, the Datastore sends the list of searched user profiles back to the FriendActivity. By default, the FriendActivity shows a listview of current friends, which uses the same server communications that the FriendActivity uses to search for other users, the only difference being that the list of friends are currently already saved in the Datastore.  When the user clicks on another user’s profile, the profile activity is launched and populated with the other user’s profile information. In this view the user can send a friend request, and can choose to download publicly shared workouts. Once a workout is selected to be downloaded, the profile activity sends a post request for the rest of the detailed information for that corresponding workout, downloads the workout, and saves the workout to the database.