Register
Submit a solution
The challenge is finished.

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
This challenge is part of a long-term series that adds integrations into the Topcoder platform for various developer tools and platforms.

Technology Stack

  • NodeJS is used as the main language for Topcoder-X.  

Challenge Context


This challenge will target the new Topcoder v5 APIs for:
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 project

Inside 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
The user should be able to switch through the tabs to see a different challenge list, where the challenges shown have the same status as the tab selected.

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:

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 to

https://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


Final Submission Guidelines

Please see above

ELIGIBLE EVENTS:

2021 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30136454