Challenge Overview

Project Context

  • Topcoder-X is a node web application used by copilots to manage direct tasks.
  • This challenge will improve support for new Topcoder v5 APIs in the Topcoder-X processor, based on work completed a couple months ago
  • The v5 APIs have matured and are now available in both prod and dev, so we want to transition Topcoder-X over to them soon.

Topcoder-X is a framework we are building to allow for easy, transparent integration with Gitlab and Github for managing tasks on Topcoder through Gitlab and Github issues.  After this challenge, we will also support Azure DevOps. Each issue on Gitlab or Github will be automatically associated with a specific challenge on Topcoder and this challenge will be updated automatically for assignee, prize, etc... and it will be opened and closed for payment as the Gitlab or Github ticket is opened, modified, and closed.

This challenge is part of a long-term series that will tweak the existing functionality based on feedback from copilots, fix bugs, and will implement new functionality.

Technology Stack

  • NodeJS is used as the main language for Topcoder-X.  
  • DynamoDB is used for data storage, and Kafka is used for message queueing.
Note that this environment takes a fair bit of configuration to get all the pieces set up and working together.  Please ensure you budget a proper amount of time to work through deployment issues.

Challenge Context

This challenge will help us improve integration with the new Topcoder v5 APIs for:
The overall functionality of Topcoder-X will *not* change at all, but the new APIs will be used.

You can use https://api.topcoder-dev.com/v5 as the base for the API calls required.

Reference

The challenge engine UI uses the v5 APIs, so you can look at that codebase for reference, if it helps:  https://github.com/topcoder-platform/challenge-engine-ui

Expected Outcome:

The outcome of this challenge will be updates to the processor that can use v5 APIs exclusively, compatible with the latest code for Topcoder-X in the 3 repos, without any more dependencies on Topcoder v3/v4 APIs

Challenge Details

Individual requirements

For this challenge we are going to complete the removal of the v3/v4 API integrations from the processor and UI, replacing them with v5 API integrations.

This includes:
  • Removing the topcoder-api-challenges-v4-wrapper and wrapper-dev dependencies from the package.json
  • Finish rewriting the topcoder-api-helper.js class to target the v5 APIs linked above, instead of the v4 APIs, and validating with the latest Topcoder-X changes.
  • Information about how the mapping should work can be found here:  https://github.com/topcoder-platform/topcoder-x-ui/wiki/V5-mapping  Note that this may be outdated.  If you have questions on specifics, please look at the challenge-engine-ui project above and ask in the forum.

npm package

Note we won't be using the npm packages anymore, so it may be useful to take some of the code from the challenge-engine-ui above for basic service implementations and expand on that to help give a jump start to the migration.

Issues and bugs

It's expected that there will be issues with mapping to the new UIs where things just don't work right or don't map 100%.  That's fine, but please bring any issues you find up in the forum so we can investigate and either offer suggestions or confirm that certain things can be left out of scope.

Code access

There are currently three pieces to this app:
For the processor and UI, see the v5_api_integration branch, which includes the code changes for the initial v5 integration proof of concept,.

Code merge


You are required to bring the v5_api_integration branches up to date with the latest HEAD of the develop branch of both the processor and receiver.  We'll merge in the changes from this challenge to the branch, and then from the branch into develop for dev deployment and validation.  

Clarifications:

1.  There is no "task" flag in the v5 API, so that can be left out
2.  In the previous challenge, the member API wasn't working in v5.  It is now working, so we can remove the v3/v4 member API dependency
3.  In the previous challenge, we left copilot payments out of scope.  Those are now in scope.
4.  Previously, we were relying on the "legacyID" challenge ID for links.  We don't need to do that anymore since the community app supports the new GUID challenge IDs
5.  The expectation for the outcome of this challenge is that the full flow, from challenge creation, to assigning, to payment, should now work in Topcoder-X, in the dev environment.

The receiver handles incoming messages on activity from both Gitlab and Github.  These messages are passed as part of webhook callbacks that are supported on each platform.  The receiver parses these messages from the Gitlab or Github specific format, creating new, consolidated messages that get pushed into Kafka and then "processed" by the processor.

The UI is going to be used by copilots and others to set up the necessary settings for individual projects in Topcoder-X, including all the repo and Topcoder project information.  It will also be used by copilots to have a centralized view of all their projects at once.

You can find detailed information on deployment and configuration here.  You can use DynamoDB locally if you want:  https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html

https://github.com/topcoder-platform/topcoder-x-ui/blob/develop/TopcoderXDeploy.md

A general user guide can be found here:

https://github.com/topcoder-platform/topcoder-x-ui/wiki


NOTE - DO NOT include any changes to README or config files that include any keys or secrets.  THIS IS A MAJOR REQUIREMENT.  A patch was inadvertantly applied last time that included a key and secret in the config file, which caused problems because the Topcoder-X repos are public.

Technology Stack

Topcoder-X runs in production on AWS, using DynamoDB and Kafka

Scorecard Aid:

Judging Criteria

  • Major requirements are that we have removed dependencies on v4 project and challenge APIs
  • Major requirement is that the full ticket flow, from creation, to assigning, to updating, to payment, all works properly with the v5 APIs
  • Minor requirements is that we have removed the dependency on v4 member API

Deployment guide and validation document

You must provide a README.md that covers:
  • Local deployment
  • Heroku deployment
  • Configuration for the receiver, processor, and UI
A comprehensive Validation.md that covers:
  • How to validate the individual fixes.  Please ensure that you address each individual bug ticket directly.  This needs to be comprehensive - a one-sentence description likely won't be enough.  Please provide screenshots as well.

What to submit

  • A patch file that targets the “develop” branch of https://github.com/topcoder-platform/topcoder-x-processor
  • A patch file that targets the “develop” branch of https://github.com/topcoder-platform/topcoder-x-ui
  • Ensure your patch file updates the deployment documentation in the README, if necessary
  • 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: 30141037