Challenge Overview
Welcome to the Hercules CodeBig Einstein - Multiple Enhancements. As part of this contest, we will be carrying out multiple interdependent changes to an existing application.
This contest submission phase is 48 hours. The effort isn’t much but it isn’t too small either to be run in the F2F track.
Contest Details
Requirement 1
Deploy the app. Note that you need to use your keyboard and not mouse since the app is intended for use in television sets and the app is navigated using the television remote. Use the left, right, up and down arrow keys to navigate and Enter key to select. Visit http://localhost:3000. Go to “Simple Page”. Here, go to “Schedule a Test Drive”. In the window that pops up, go to Email.
Provide the Submit and Cancel buttons for Email similar to how they exist for the Phone section. You also need to provide this in the Thumbnail page. The navigation for this page is similar.
Requirement 2
In the window that pops up when you select “Schedule a Test Drive” on both Simple and Thumbnail pages, initially, the control is over the radio buttons. The user can use left and right arrows to select between Phone or Email. When the user hits the down arrow in the keyboard, the control switches to the Submit and Cancel buttons.
However, the phone and email shown need to be actually “chosen” by the user. Although the app will show only one mobile number / email, the actual app in production environment can have multiple phone numbers / emails among which the user chooses one.
Thus, when the control is over the radio buttons where the user can select the Phone or Email section, if the user presses the down arrow here, move the control over the phone number (or email, depending on which section is active) and update the style to indicate that the use is currently selecting the phone number / email. This will be similar to the hover feature, where, if the user were to hover over an element in a menu, that element will change its background and text color to indicate to the user that that element can be chosen. (Note - you don’t have to provide hover feature but instead, update the style to indicate that the control is currently over that phone number). If there were multiple phone numbers or emails, pressing the down arrow / up arrow will highlight the currently selectable phone number / email. The user will then hit the enter key to indicate that they would like to “chose” the phone number / email, in which case, change the style of the chosen phone number / email to indicate that it is chosen.
Subsequently, when the user presses the down arrow on the last phone number / email, let the control move over to the Submit button.
This feature should work across the Simple and Thumbnail pages for both Phone and Email sections.
Requirement 3
Create a new endpoint. This endpoint will in turn call a service named “Tentillum”. The details of the Tentillum endpoint will be shared in the contest forum. This service accepts either the phone number or email address of the user.
Thus, after implementing Requirement 2, when the user “chooses” a phone number / email and hits the Enter key, pass the phone number / email to the newly created endpoint, which in turn will pass it on to the Tentillum service. Once the Tentillum service responds with http status code 200 OK, you can then display the “Thank you for submitting! We’ll text you the link to your phone / email” should be shown.
Hide the earlier window before showing the “Thank you for…” window. Also, reset the “chosen” phone number / email when the window is opened again.
This feature should work across the Simple and Thumbnail pages for both Phone and Email sections.
Requirement 4
Provide unit test for the newly created endpoint. Just the success scenario needs to be handled.
Requirement 5
Our current README file for the project is not good. We would like you clean it up and update this with the following information:
1. Specify the Local Deployment instructions
2. Specify the Heroku Deployment instructions
3. Specify how to run the tests.
You need to provide the README as a markdown file only. No Word Docs required and you are not expected to follow the Topcoder Deployment Guide template.
Final Submission Guidelines
1. Zip your submission and upload it
2. The winner will be asked to create a Pull Request once the contest ends.
3. Provide access to your forked repo to Lazybaer & callmekatootie (after winning)
4. Provide an unlisted video of your updates.
5. Please make sure that you follow the AngularJS and Nodejs best practices and conventions currently used in the existing application