Challenge Overview
Challenge Objectives
-
Create a package in Atom.
-
The package will have a command to allow the user to log in to Topcoder
-
User can invoke another command to view open challenges on the Topcoder platform
-
User can also use Menu items to view challenges
Project Background
-
Topcoder is aiming to create an extension in Visual Studio Code and package in Atom
-
The extension / package is meant to closely integrate the Topcoder platform with the text editors, to allow the user to perform actions from within the editor, without having to open a browser.
Technology Stack
-
Javascript / Nodejs
Code access
This is the first content in the series. There is no source code to share
Individual requirements
Create a package in Atom that will automatically log the user in to Topcoder when the editor is launched (Major Requirement)
-
Create a package in Atom.
-
The package should provide a command and a menu item (in the menu bar under Packages) to allow the user to Login to Topcoder.
-
Expose configurations that the user can set, namely their username and password, which will be read and used to log the user in.
-
Use the topcoder-api-utils module as reference for authorization and store the received token in the global state. You don’t have to use the module and can instead reuse the logic to connect directly.
Use Command based Event to view open challenges in the Topcoder Platform (Major Requirement)
-
The same package must support a command that allows the user to view open challenges on the Topcoder Platform. If the user is not logged in, automatically log the user in based on the configuration set. Make sure that you give informative messages to the user during loading, so that they don’t feel that the action is stuck.
-
Only display contests that are active.
-
You will use the challenge api to retrieve the challenges. The API endpoint is available here and you can see that the correct filter is also used to view active contests. While the API responds without authorization, you need to pass the token used during login and use Bearer Authorization.
-
Provide a tabular layout when displaying the contests. Display the challenge name, challenge type, number of registrants, prizes and current phase. You can display them in markdown too.
Deployment guide and validation document
Provide a deployment guide with instructions on how to deploy / work with the package locally. Also provide information on the configuration exposed by the package and the commands supported.
Important Notes
-
You don’t have to show details other than the title and the challenge prizes when displaying the list of open challenges.
-
Prefix all commands supported by the package with “Topcoder : ”.
-
Provide a good user experience, especially if there is an error. Display messages to the user letting them know the cause of the error. For example, if the login failed, notify the user by displaying a message. If the challenge api call fails, let the user know. Handle error scenarios well.
-
You need to provide the invocation commands through the menu as well. No context menu is expected, only the one under Packages in the menu bar.
-
Tests are in scope for this contest. Reviewers will use the dedicated Testing section in the review scorecard to list issues related to testing. Reviewers will not consider this under Major or Minor requirements in the scorecard.
Final Submission Guidelines
Zip your solution and upload it to Topcoder.