Skip to content
evhill edited this page Nov 30, 2015 · 53 revisions

Table of Contents

Login

1. CreateAccount
Participating Actors: User
Goal: User creates an account on the app.
Trigger: Opens up an unconfigured app
Precondition: User does not have an account
Postcondition: User has an account
Basic Flow:
 1. User opens app.
 2. System prompts user to input a username and email.
 3. User inputs string for username.
 4. User inputs string for email.
 5. System creates account.
Exceptions:
 3. Username is already taken or contains profanity
 3.1 System prompts user for new username 
4. Email is invalid 4.1 System prompts user for new email
Qualities: The account is created quickly with all relevant information.
Constraints: None

Inventory

1. AddSkillz
Participating Actors: User, System
Goal: User can add skillz to their inventory from the system database.
Trigger: Select ‘Add Skill’ on the inventory.
Precondition: The User must have connected online to the database at least once.
Postcondition: The User’s inventory of skills is modified to reflect desired changes.
Basic Flow:
 1. User selects “Skills” from the main menu. 
 2. System returns scrollable list of all skillz.
 3. User selects skill they would like to add to their inventory.
 4. System returns description of skill
 5. User selects the “Add Skill” button.
 6. Skill is added to the User’s inventory. 
Exceptions: None
Qualities: System should respond within 2 seconds.
Constraints: A User must have accessed the public database with internet connectivity at least once to add a skill.
2. RemoveSkillz
Participating Actors: User, System
Goal: User can remove skills from their inventory.
Trigger: Select ‘Remove Skill’ in the skill description.
Precondition: The User must have connected online to the database at least once and have a skill.
Postcondition: The User’s skill is removed.
Basic Flow:
 1. User selects “Profile” button from the navigation bar. 
 2. System returns the user's profile
 3. User selects "Inventory" button
 4. System returns a scrollable list of all skillz.
 5. User selects undesired skill.
 6. System returns the skill description.
 7. User selects “Remove Skill” button. 
 8. Skill is removed from inventory.
Exceptions: None
Qualities: System should respond within 2 seconds.
Constraints: The User must have at least once skill to remove.
3. ModifySkillDetails
Participating Actors: User, System
Goal: User will be able to modify the details of the skills in their inventory.
Trigger: Select “Edit Skill”
Precondition: User must have at least one skill on their profile.
Postcondition: The skill a User edits has persistent changes.
Basic Flow:
 1. User navigates to “Profile”.
 2. User selects "User Inventory" button
 4. System returns a scrollable list of all skillz.
 5. User selects desired skill to edit.
 6. System returns skill description page.
 7. User presses "Edit" button.
 8. System returns edit skill page. 
 9. User inputs a new skill name.
 10. User inputs a new skill description. 
 11. User selects a new category. 
 12. User takes a new picture. 
 13. User selects a new quality of skill. 
 14. System saves all new fields.
Exceptions: None
Qualities: Text should immediately appear in the editable text boxes. The camera should open within 2 seconds. The radio buttons should show feedback immediately.
Constraints: Length of text for descriptions is at most 250 characters. The skill name is at most 30 characters.
4. ExamineSkills
5. ChangeSkillVisibility
Participating Actors: User, System
Goal: User is able to set the visibility of skills on their profile while maintaining tradability of skill
Trigger: Select “Edit” from viewing the skill in their inventory
Precondition: Has a skill to set the visibility of.
Postcondition: The visibility changes are immediate and the skill is or is not viewable by other Users.
Basic Flow:
 1. User selects “Profile”
 2. User selects “User Inventory”
 3. User selects specific skill they wish to edit
 4. User selects "Edit" button
 5. System returns an editable view of this User’s skill.
 6. User unchecks the “Visible” checkbox.
 7. User selects "Save Changes"
 8. System updates the skill so it is not viewable to other users. 
 7. Skill is now invisible to other Users.
 
Exceptions: None
Qualities: Skills are immediately invisible to other Users, or will update the friend’s ‘view’ of the User’s skills immediately once they navigate away from the User’s skill list.
Constraints: Skills marked as ‘invisible’ may still be used in private trades. Friend may not select a skill to trade that was marked invisible while they were viewing the User’s inventory.
6. SortSkillsByCategory
Participating Actors: User, System
Goal: User skills are organized by category for easy discovery
Trigger: User adds a skill to their inventory
Precondition: User has an account, User adds a skill to their inventory
Postcondition: Inventory is arranged by type
.
Basic Flow:
 1. User begins in the main screen by pressing the "Home" button or by
    opening the app.
 2. User selects "Skillz" button
 3. System returns a scrollable list of skills
 4. User selects the "Name" drop-down menu and chooses "Category".
 5. System sorts the skills by alphabetical category. 
Exceptions: None
Qualities: System sorts the list of skills by alphabetical category.
Constraints: User must have at least one skill in their inventory to organize. Or there must be at least one skill in the database to sort.
7. SearchSkillsByCategoryOrText
Participating Actors: User, System
Goal: User is able to easily search for relevant skills either by sorting by category or textual query.
Trigger: Select “Category” or “Enter Text” in either “Browse Skills” or “Inventory”
Precondition: Has a skill on their profile
Postcondition: List of skills is ordered by desired category
Basic Flow:
 1. Selects “Browse Skills” or “Profile" and "Inventory”
 2. User selects a “Category” from the drop-down menu. 
 3. System removes all but the skills related to the desired category.
 4. List of skills is now presented by relevancy to User.
 5. User highlights the "Search Query" text box available in “Browse Skills”
    or “Inventory”
 6. User inputs string of desired skill
 7. System returns list of skills relevant to the input string. 
Exceptions: None
Qualities: System should respond within two seconds to User constraints.
Constraints: User must have at least one skill in profile to sort their inventory, either by category or text query. User must have accessed the database with internet connectivity at least once.
8. CloneSkills
Participating Actors: User A, User B, System
Goal: User A is able clone User B's skills if they have them. They may make modifications.
Trigger: Select “Add Skill” while viewing another user's inventory
Precondition: User B a skill on their profile
Postcondition: Skill is clones to inventory
Basic Flow:
 1. User A selects "Users"
 2. System returns a list of users.
 3. User A selects User B.
 4. User A selects User B's "Inventory."
 5. User A selects a skill in User B's inventory
 6. User A selects "Add skill" 
 7. System adds the skills to User A's inventory.
 8. User A may now edit the skill following the "3. ModifySkillDetails" use 
    case.
Exceptions: None
Qualities: System should respond within two seconds to User constraints.
Constraints: User B must have at least one skill in inventory for User A to clone. User must have accessed the database with internet connectivity at least once.

Friends

1. AddFriend
Participating Actors: User A, User B, System
Goal: Able to add friends
Trigger: Select “Add Friend” selected
Precondition: Connection to internet and currently viewing a profile of a non-friend
Postcondition: New Friend is added and list of User’s friends is updated
Basic Flow:
 1. User A selects "Users" button from main page
 2. System returns list of users. 
 3. User A selects user B from the list
 4. System returns user B's profile. 
 5. User A selects “add friend”
 6. System updates Users A’s list of “My Friends”
 7. User A can make a trade request to User B now
 8. System updates "add friend" button to be "remove friend"
Exceptions: None
Qualities: System should respond within two seconds to User constraints.
Constraints: None
2. RemoveFriend
Participating Actors: User A, User B, System
Goal: Able to remove friends
Trigger: Select “Remove Friend” in Profile of friend selected
Precondition: Connection to internet and currently viewing a profile of a friend
Postcondition: Friend is removed from User's friend list and User can no longer make trade requests to them
Basic Flow:
 1. User A is viewing profile of User B
 2. User A selects “remove friend”
 3. System updates Users A’s list of “My Friends”
 4. User A can no longer initiate a trade request with User B
Exceptions: None
Qualities: System should respond within two seconds to User constraints.
Constraints: User must have at least one skill in profile to sort their inventory, either by category or text query. User must have accessed the database with internet connectivity at least once.
3. SetLocationContactInfo
Participating Actors: User
Goal: User is able to change their contact information
Trigger: User selects “Settings” from the menu bar
Precondition: User must have an internet connection
Postcondition: On success, the User has changed location and contact details.
Basic Flow:
 1. User selects “Settings” from the menu bar.
 2. System returns the settings screen.
 3. User inputs a new string into the "City" field
 4. User inputs a new string into the "Email" field
 5. User selects "Save Changes"
 4. Contact information is updated
Exceptions:
 none
Qualities: Changes should be made within 2 seconds.
Constraints: Users must have internet connectivity and be logged in. Location verification for valid entries that exist only are allowed.
4. BrowseUsersOrFriendsProfile
Participating Actors: User
Goal: Able to browse the profiles of other users including friends
Trigger: User selects “Browse Users”
Precondition: User must have an internet connection
Postcondition: User can scroll through and view all profiles of other Users
Basic Flow:
 1. User selects “Browse Users” 
 2. All User names are now displayed
 3. User selects individual Users to view profile
Exceptions: None
Qualities: System should respond within 2 seconds.
Constraints: Users must have internet connectivity

Browse Friends' Inventories

1. BrowseFriendInventory
Participating Actors: User, Friend(Another User)
Goal: To browse the inventories of friends
Trigger: Press ‘Inventory’ in a friend’s profile
Precondition: Have an account. Have a friend.
Postcondition: See all of a friend’s publicly visible skills
Basic Flow:
 1. User presses "Friends" button on main screen or on "Profile"
 2. System returns a list of friends
 3. User selects a friend.
 4. User presses "Inventory"
 5. System displays that friend’s inventory
 6. A scrollbar allows the User to view all their friend’s skills
 7. A friend’s inventory has been browsed
Exceptions: None. (A friend must have an account, which must have an inventory)
Qualities: System responds within two seconds for an inventory.
Constraints: A User must have a friend. A friend must have publicly available skills for them to be viewed.
2. FilterFriendInventoryByCategory
Participating Actors: User, Friend(Another User)
Goal: To browse/filter Friend’s inventory by category
Trigger: Select ‘category’ in the drop-down menu
Precondition: User is currently viewing Friend’s inventory
Postcondition: Friend’s skills will be filtered by category
Basic Flow:
 1. User selects "Friends" button on main menu.
 2. User selects "Inventory" on the friend's profile.
 2. Select a desired "category" from the "All" drop-down menu
 2. System removes all non-pertinent skills from the viewing area
 3. Friend’s inventory is now filtered by category
Exceptions: None.
Qualities: System filter response should be immediate, as all pertinent skill data was already available
Constraints: Use only Friend’s publicly available skills. .
3. FilterFriendInventoryByText
Participating Actors: User, Friend(Another User)
Goal: To browse/filter Friend’s inventory by text query
Trigger: Enter a String in the search box
Precondition: User is currently viewing Friend’s inventory
Postcondition: Friend’s skills will be filtered by a string
Basic Flow:
 1. User selects "Friends" button on main menu.
 2. Select a friend. 
 3. User selects "Inventory" on the friend's profile.
 4. Enter a String in the search box
 5. System removes all non-matching skills from the viewing area
 6. Friend’s inventory is now filtered by text
Exceptions: None.
Qualities: System filter response should be immediate, as all pertinent skill data was already available
Constraints: Use only Friend’s publicly available skills. .
4. TopTrader
Participating Actors: User
Goal: User can see friends and users who are top-traders. Top traders are users with the most successful (current, in-progress, and complete) trades.
Trigger: Select browse users from main screen
Precondition: none
Postcondition: Users are by default listed by order of Top Traders
Basic Flow:
 1. User presses "Users" from main menu
 2. User selects "Top Traders" from the "Name" drop down menu
Exceptions: None
Qualities: None.
Constraints: Top Traders must have permitted their profiles to be publicly viewable to be displayed if not on the current User’s friend list.

Trade With Friends

1. InitiateTradeWithFriend
Participating Actors: User, Friend of user
Goal: User initiates a trade with one of their friends, consisting of zero to many of their own skills and and at least one of their friend's skills.
Trigger: Select “Start trade” from a friend’s profile or inventory.
Precondition: User must have an existing account and be logged in. User must have at least one friend.
Postcondition: On success, a new trade request is initiated with the selected friend and skills.
Basic Flow:
 1. User selects "Friends" button on main menu.
 2. Select a friend.
 2. User selects "Inventory" on the friend's profile.
 1. User clicks the “Start trade” button
 2. System prompts the user to select 0 or more of their skills to trade
 3. User does or does not select a skill
 4. System prompts the user to select at least one of the friend’s skills 
    to trade for.
 5. User selects 1 or more skills
 6. System creates trade request
Exceptions:
 2. Friend has no skills
 2.1 System notifies the user that their friend has no skills and cannot trade
 2.2 System leaves trading mode
Qualities: Interface for selecting multiple skills should be intuitive. System should respond immediately since it will send the information to the server in the background once possible.
Constraints: User must have skills in order to initiate a trade
2. NotifiedOfTradeRequest
Participating Actors: User, Friend of user
Goal: User is notified of any trade initiated with them by a friend
Trigger: A friend initiates a trade with a user
Precondition: User must have an existing account and be logged in. User must have a friend.
Postcondition: The user has been notified of the trade request.
Basic Flow:
 1. Friend of user initiates a trade with user
 2. System notifies user of trade request
 3. User feels notified
Exceptions: None
Qualities: Notifications should be sent the next time the user is online if they currently are not.
Constraints: None
3. AcceptTradeRequest
Participating Actors: User, Friend of user
Goal: User accepts a trade request.
Trigger: A user clicks the “Accept” button while viewing a trade.
Precondition: User must have an existing account and be logged in. User must have a friend. User must have had a trade initiated with them. User must be online.
Postcondition: The user has accepted a trade request.
Basic Flow:
 1. User selects "Trades" Button on main menu
 2. System returns a list of trades that are active or inactive.
 3. User selects a trade.
 4. User clicks “Accept” button.
 5. System confirms that trade has been accepted by the user.
 6. System returns to previous screen.
Exceptions: None
Qualities: Notification should be dismissable, but remain persistent in the background until deleted.
Constraints: None
4. DeclineTradeRequest
Participating Actors: User, Friend of user
Goal: User declines a trade request.
Trigger: A user clicks the “Decline” button while viewing a trade.
Precondition: User must have an existing account and be logged in. User must have a friend. User must have had a trade initiated with them. User must be online.
Postcondition: The user has declined a trade request.
Basic Flow:
 1. Follow the steps of "3. AcceptTradeRequest" use case until
    step 3.
 1. User clicks “Decline” button.
 2. System confirms that trade has been declined by the user.
 3. System returns to previous screen.
Exceptions: None
Qualities: None
Constraints: None
5. CounterTradeRequest
Participating Actors: User, Friend of user
Goal: User creates a counter offer for a trade request.
Trigger: A user clicks the “Counter offer” button while viewing a trade.
Precondition: User must have an existing account and be logged in. User must have a friend. User must have had a trade initiated with them. User must be online.
Postcondition: The user has created a counter offer for a trade request.
Basic Flow:
 1. Follow the steps of "3. AcceptTradeRequest" use case until
    step 3.
 4. User clicks “Counter offer” button.
 5. Systems shows the user the Edit Skill page.
 5. System allows the user to select zero or more of their skills to 
    use as a counter trade
 6. User picks zero or more of their skills, and at least one of Friend's
    skills.
 7. User selects "Send Trade" button.
 7. System confirms that counter offer has been created.
Exceptions: None
Qualities: None
Constraints: None
6. DeleteActiveTradeRequest
Participating Actors: User, friend of user
Goal: User deletes a trade they initiated with a friend
Trigger: A user clicks the “Delete” button while viewing a trade which is currently in progress.
Precondition: User must have an existing account and be logged in. User must have a friend. User must have had a trade initiated with them. User must be online.
Postcondition: The trade offer is deleted from the user’s account, as well as from the friend’s account.
Basic Flow:
 1. User clicks "Trades" button from main screen.
 2. User selects a trade they have made
 3. User clicks “Delete” button
 4. System deletes trade
 5. System informs user that trade was deleted.
Exceptions: None
Qualities: None
Constraints: None
7. EditActiveTradeRequest
Participating Actors: User, friend of user
Goal: User edits a trade they initiated with a friend
Trigger: A user clicks the “Edit” button while viewing a trade which is currently in progress.
Precondition: User must have an existing account and be logged in. User must have a friend. User must have had a trade initiated with them. User must be online.
Postcondition: The trade offer is edited in the user’s account, as well as updated in the database and the friend’s account.
Basic Flow:
 1. User clicks "Trades" button from main screen.
 2. User selects a trade they have made
 3. User clicks “Counter Offer” button while viewing a trade
 4. System opens view where user can change skills proposed for trade
 5. User optionally makes changes to trade
 6. User clicks “Send trade” button
 7. System updates trade, saving the new version in the database and 
    updating the trade on the friend’s profile as well.
Exceptions:
 4. User cancels edits by returning to the home screen
 4.1. System returns to previous screen without modifying trade
Qualities: None
Constraints: None
8. SuccessfulTradeRequest
Participating Actors: User, friend of user
Goal: Both users involved in a trade are notified when they both accept.
Trigger: Both users involved in a trade accept the trade.
Precondition: User must have an existing account and be logged in. User must have a friend. User must have had a trade initiated with them. User must be online.
Postcondition: User has been notified of the accepted trade.
Basic Flow:
 1. System notifies user that a trade has been accepted by both users 
    involved.
 2. Details of the trade are emailed to both users.
Exceptions: None
Qualities: If the user is not online when the friend accepts the trade, they will be notified when they are next online.
Constraints: None
9. BrowseTradeHistory
Participating Actors: User
Goal: User browses all past and current trades involving them
Trigger: User clicks “View trades” button on the main menu.
Precondition: User must have an existing account and be logged in
Postcondition: The user has seen a list of their past and current trades.
Basic Flow:
 1. User selects "Trades" from the main screen
 2. System displays a list of all past and current trades, starting with 
    current trades. Trades are shown as active or inactive. 
 3. User views list
Exceptions:
 1. User has no trades
 1.1 System does not s
Qualities: None.
Constraints: None
10. Borrowing
Participating Actors: User (owner of skill)
Goal: User can set a trade to complete when the borrower has received the skill and the trade is complete
Trigger: Select “complete” in the current trade screen
Precondition: The User must have an existing trade
Postcondition: Trade is now marked as complete
Basic Flow:
 1. User presses ‘Edit Trade’
 2. User presses ‘complete’
 3. System updates trade status
Exceptions:
 2. Trade already complete
Qualities: None.
Constraints: Users must have internet connectivity for this change to be updated for both users to see.

Photographs of Skills

1. DisablePhotoDownloads
Participating Actors: User
Goal: Disable photo downloads and manually choose inventory photos to download.
Trigger: Turn automatic photo downloads “Off” in profile
Precondition: User must have an existing account and be logged in.
Postcondition: On success, inventory photos have individual button options on them to download.
Basic Flow:
 1. User clicks on “Settings” from main screen
 2. User switches automatic photo downloads off
 3. User clicks "Save Changes"
 3. System no longer automatically shows images
Exceptions: None
Qualities: Must be persistent
Constraints: None
2. ActionsForPhotos
Participating Actors: User
Goal: Attach/View/Delete/Retake photo of a skill
Trigger: Click on the photo of a skill
Precondition: User must have an existing account and be logged in. A skill must be visible.
Postcondition: On success, the photo is replaced/enlarged/gone.
Basic Flow:
 1. User navigates to either the "Create a skill" or "Edit Skill" page
 2. User selects the "Take Photo" button
 3. User takes a photo with the photo app and either accepts or declines 
    the photo and retakes the photo.
 4. System shows the photo on the page. 
 5. User clicks on a skill photo
 6. System displays a small photo on the side bar. 
 7. User selects ‘Delete’ icon
 8. System removes photo
 9. User selects ‘Retake’
 10. System opens a photo app
 11. User takes a photo
 12. System displays new photo
Exceptions: None
Qualities: Other User’s photos of skillz must load within 5 seconds. Uploaded photos should be persistent (stored in database)
Constraints: Photo must be under 64KB

Offline Behavior

1. InventoryChangesOffline
Participating Actors: User
Goal: Make inventory changes while offline that will be pushed the next time they are online
Trigger: The internet was just made available to this app
Precondition: Inventory changes were made while offline
Postcondition: The external database is up-to-date with the User’s changes
Basic Flow:
 1. User makes an inventory change following steps of “Add/Remove” use case
 2. The system recognizes an internet connection
 3. The system pushes changes to the database
 4. The external database is up-to-date with the User’s changes
Exceptions: None
Qualities: Should occur as quickly as possible, before any other internet interactions
Constraints: Can only occur when the internet is available
2. TradeRequestsOffline
Participating Actors: User
Goal: Able to make trade requests while offline that will be sent to another User when online
Trigger: User creates a trade request, the internet is made available
Precondition: Has a friend to trade with.
Postcondition: A trade request is stored until internet connectivity
Basic Flow:
 1. User initiates a trade with a friend following steps of “Trade with 
    Friend” use case
 2. The trade request is stored until the system recognizes an internet 
    connection
 3. The system pushes changes to the database
 4. The external database is up-to-date with the User’s changes
Exceptions: None
Qualities: Trade request needs to be submitted to the friend as soon as internet connectivity is reached.
Constraints: The User has viewed a friend’s inventory at least once while connected to the internet.
3. BrowseFriendOffline
Participating Actors: User
Goal: Able to browse the inventories of friends that they previously looked at while offline.
Trigger: User has logged out and enter a friend’s name they have loaded the inventory for previously in the search bar.
Precondition: Inventories of friends were looked as and browsed and stored in memory
Postcondition: No changes or initial trade offers can be made until online again
Basic Flow:
 1. Enter a friend name in the search box
 2. Friend’s profile is now displayed at the same state it was last viewed at
 3. Press the ‘Inventory’ tab in a friend’s profile
 4. Inventory of all of friend’s skills is now displayed
Exceptions:
 1. Friend name not found
 1.1 System displays error
 1.2 System stays at step 1
3. Inventory hasn’t been loaded before for that friend so isn’t available offline 3.1 System displays page not found error 3.2 System stays at step 3
Qualities: Should occur as quickly as possible, before any other interactions
Constraints: Can only occur if the friend’s profile and inventory has previously been viewed and stored in memory

Configuration

1. ConfigureProfileDetails
Participating Actors: Profile(primary), User
Goal: The User can change email contact info
Trigger: Press "Settings" menu button
Precondition: The User must have an existing account
Postcondition: On success, the User has a new email.
Basic Flow:
 1. User selects "Settings" from the menu bar
 2. User inputs a new string for the email. 
 3. User selects "Save Changes"
 4. E-mail is changed
Exceptions: None
Qualities: System responds immediately and all changes are persistent, whether online or not.
Constraints: Must eventually update the main User database. .

Item Geolocation

We've chosen Top Traders and Cloning instead of Geolocation

1. Default Geolocation
Participating Actors: User
Goal: User can have a default geolocation (Lat/Long) that will be assigned to their skills
Trigger: Add a new skill
Precondition: The default location is set up in profile
Postcondition: Any added skills have a default location assigned
Basic Flow:
 1. User presses ‘Edit Profile’
 2. User selects ‘edit geolocation’’
 3. User enters their geolocation in Lat/Lon format that will also be assigned 
    to their skills.
 4. User returns to profile
 5. User selects “inventory” from their profile
 6. User selects “add new skilll” 
 7. User inputs skill details, but no location
 8. User presses “save”
 9. System assigns default location to each new skill
Exceptions:
 3. Geolocation format incorrect
Qualities: None.
Constraints: Users must have internet connectivity for this change to be updated for both users to see.
2. Specific Geolocation
Participating Actors: User
Goal: User can specifically edit the geolocation of each individual skill for trade
Trigger: Select “location” in the screen for the specific skill
Precondition: The Skill must already exist and have a default location
Postcondition: The Skill geolocation is updated
Basic Flow:
 1. User presses ‘Edit Skill’
 2. User selects ‘location’’
 3. User enters new geolocation in Lat/Lon format
 4. System updates the Skill location
Exceptions:
 3. Geolocation format incorrect
Qualities: None.
Constraints: Users must have internet connectivity for this change to be updated for both users to see.
3. GPS Geolocation
Participating Actors: User
Goal: User can use the GPS to determine their geolocation.
Trigger: Select “get my location” in the search screen for skills
Precondition: GPS must be turned on
Postcondition: The User’s current geolocation is returned at the top of the screen
Basic Flow:
 1. User presses ‘Browse Skills’ from main menu
 2. User selects ‘get my location’’
 3. System updates the user location at the top of the screen
Exceptions:
 2. GPS not enabled.
Qualities: None.
Constraints: Users must have allowed GPS to access their location
2. GPS Search
Participating Actors: User
Goal: User can search for items near my current location (GPS or Lat/long)
Trigger: Select location in the drop down refine menu in the search screen for skills
Precondition: GPS must be turned on and airplane mode turned off
Postcondition: The skills closest to User location are listed at the top of the list
Basic Flow:
 1. User presses ‘Browse Skills’ from main menu
 2. User selects ‘refine’ drop down menu
 3. User selects ‘location’ from the options
 4. System displays skills ordered by closest location to user’s location
Exceptions:
 3.  GPS not enabled.
Qualities: None.
Constraints: Users must have allowed GPS to access their location

Clone this wiki locally