Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Project Overview

The goal of this project is to design and build an iPad application that will allow the USA Diving team to track the performance of divers as they prepare for official diving events and Olympic trials. Closely monitoring the day-to-day well-being and performance of divers in training will allow coaches and physicians to adjust individual training programs, for improved results.

Competition Task Overview

We already have a working app but in this challenge, we'd like to implement a few enhancements. Some of these will require changes to both frontend and backend.

General Updates
1. Forgot password/password reset: on the login screen, implement a "forgot password" button, which allows the user to enter their email address and their password is then emailed to that address. This would only work when the iPad is online. We don't have separate design for this, please just make the look & feel consistent with the current app. The "Forgot Password" button will look like a link and it can be added to the right of the Register button, and when pressed it will show a popup dialog that asks the user to enter email address, with an "OK" and a "Cancel" button.

2. Data syncing: in the side menu, there would be an option to "Clear all data" (actually this is already there if you enable it). We would update that so if the user chooses it, all stored / cached data on the iPad would be deleted and the user logged out (on the iPad). Then - when an existing user tries to log in (which must be done when they have internet access), the server would see that an account with that username already exists. The app would then offer them an option to download all the data from the server. There’s no need to sync down the videos though.

Trainning Sessions

1. Need to be able to edit the date of a training session

2. Balks (we’ll add this, just don’t show in graph):
2.1. Add a toggle button labeled "Balk" near the score meter when the user goes to log a dive. When the button is depressed, the score slider is disabled. When the button is not depressed the score meter is enabled. If the button labeled "Balk" is depressed when the user saves the dive, it's recorded with a score of "-1".
2.2. During score averaging (graphing) these scores (with "-1") should not be included in the math.
2.3. When reviewing dives from a past session (the text tables the user can see), any dives with a score of "-1" should show "Balk" instead of "-1" where the score would display."
2.4. The email template should also be updated to show "Balk" instead of "-1" in the table that is included in the email.

3. Add video after the dive was logged: This is the currently unimplemented Video button shown when the user is reviewing past sessions and dives. Just needs to allow the user to choose a video to associate (it should then be associated the same way it would be, had the user associated it when logging the dive).

General Guidelines
The app must be built using Swift
The app must work on iOS 8+ and all ipad models
The app is ipad only and only needs to support the landscape orientation
The code must be properly documented
The iPad is the primary authority on the data. The server side keeps the data as a backup and for sending reports, please keep this in mind.

Technology Overview
iOS 8+
iPad
Swift
Xcode
Node.js
Postgres

Documentation Provided

Register to see documents in the forum.



Final Submission Guidelines

Submission Deliverables

Below is an overview of the deliverables:
1. Xcode project that covers all mentioned requirements
2. A complete and detailed deployment documented explaining how to deploy the application including configuration information.

Final Submission

For each member, the final submission should be uploaded via the challenge detail page on topcoder.com.

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30054977