Challenge Overview
Project Context
- Topcoder-X is a node web application used by copilots to manage direct tasks.
- This challenge will implement a new "Topcoder-X" Azure Devops extension with some new features we want to support for clients that use Azure Devops.
- This will be separate, new code from the current Topcoder-X UI, Processor, and Receiver. You will not extend any existing code - this is a new proof of concept
Technology Stack
- NodeJS is used as the main language for Topcoder-X.
Challenge Context
This challenge will target the new Topcoder v5 APIs for:
- Projects (https://github.com/topcoder-platform/projects-api)
- Challenges (https://github.com/topcoder-platform/challenge-api)
- Members (https://github.com/topcoder-platform/member-api)
- Resources (https://github.com/topcoder-platform/resources-api)
You can use https://api.topcoder-dev.com/v5 as the base for the API calls required, for development
Service Endpoints
Please see this as you may need to do special configuration to call external services from a Devops extension:
https://docs.microsoft.com/en-us/azure/devops/extend/develop/service-endpoints?view=azure-devops
Requirements:
We will create a shell Azure devops extension with the features below:Hub
Create a "Topcoder" Hub that displays on an Azure Devops projectInside the hub, list all projects and challenges for a given Topcoder member, read from the Topcoder v5 API. The UI should show a projects "section" and a challenges "section", each with a different table of elements (projects and challenges)
The projects should be listed as a table with the following columns:
- Title (should link to the project page on Topcoder Connect)
- Status
- Last updated
- Topcoder Direct (Should link to the project page on Topcoder Direct, using the directProjectId)
The challenges should be listed as a table with the following columns:
- Type (Code, Bug Hunt, Design, etc...)
- Title (should link to the challenge page on the Topcoder site)
- Start Date
- End Date
- State / Current Phase
The user should be able to sort the table by each of the columns
There should also be 4 tabs for the challenge listing, similar to the Challenge Engine UI (see below):
- Active
- New
- Draft
- Completed
Link to understand how to add a hub:
https://docs.microsoft.com/en-us/azure/devops/extend/develop/add-hub?view=azure-devops
The Topcoder Challenge Engine UI has current implementations of pulling projects for a given user as well as challenges for a project and user. The code there may help with the implmentation:
- Deployed app: https://challenges.topcoder-dev.com/
- Source code: https://github.com/topcoder-platform/challenge-engine-ui
Widget
Similar to the "hub" above, we want a dashboard widget that shows the same tabular list of active challenges for *all* Topcoder projects the logged in user has access tohttps://docs.microsoft.com/en-us/azure/devops/extend/develop/add-dashboard-widget?view=azure-devops
Menu item
For work items, we'll add a new menu action called "Send work item to Topcoder". The action won't actually do anything just yet, but we want to see it in Azure Devops.
https://docs.microsoft.com/en-us/azure/devops/extend/develop/add-action?view=azure-devops
Configuration and user
All configuration will be done through the Azure API and data storage:https://docs.microsoft.com/en-us/azure/devops/extend/develop/data-storage?view=azure-devops
The API endpoint should also be configurable so we can switch between Topcoder API dev and prod.
Login
We will need a way to map from an Azure logged in user *back* to a Topcoder member ID, for used when pulling projects and challenges associated with a user. For the purposes of this challenge, we can expect the user to somehow set a JWT token to use for authentication with the Topcoder APIs. This JWT can be just pulled after logging in to a site like https://challenges.topcoder-dev.com/, or generated via a curl command to Auth0, and then applied manually to the extension. Further challenge work will be done to actually integrate a login flow into the extension itself, but that is outside the scope of this initial challenge.Scorecard Aid:
Judging Criteria
- Major requirements are a working hub, widget, and menu item
- Minor requirements are that the code is clean and easily deployable and that configuration is done using data storage
Deployment guide and validation document
You must provide a README.md that covers:- How to configure the Azure Devops extension and install it on a project
- How to apply the JWT to the extension so that the API calls work
A comprehensive Validation.md that covers:
- How to validate the individual requirements. Please ensure that you address each major requirement clearly and directly.
What to submit
- The source code for the extension
- A README.md that covers deployment of the extension
- A Validation.md that covers the details above