Challenge Overview
Context:
Project Context
- Topcoder-X is a node web application used by copilots to manage direct tasks.
- This challenge will implement support for new Topcoder v5 APIs in the Topcoder-X processor, in a proof of concept fashion
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 integrate with 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.
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-uiExpected Outcome:
The outcome of this challenge will be updates to the processor that can use v5 APIs exclusively, without any more dependencies on Topcoder v3/v4 APIsChallenge Details
Individual requirements
For this challenge we are going to remove the v3/v4 API integrations from the processorThis includes:
- Removing the topcoder-api-challenges-v4-wrapper and wrapper-dev dependencies from the package.json
- Completely rewriting the topcoder-api-helper.js class to target the v5 APIs linked above, instead of the v4 APIs
- Information about how the mapping should work can be found here: https://github.com/topcoder-platform/topcoder-x-ui/wiki/V5-mapping
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.LegacyId
Note that links added to Github tickets to link to the challenge in the challenge listing on the Topcoder site won't work with the new UUIDs used for challenge IDs. We have to wait until a "legacyId" value is added to the challenge object until we can link back to the challenge listing page. For now, let's remove the link from the messages posted to Git. I prefer to have the messages be instantaneous instead of waiting for things to be added by asynchronous processors.
So:
- Change "Contest https://www.topcoder.com/challenges/30123237 has been created for this ticket." to "Challenge {challenge ID} has been created for this ticket"
- Change "Contest https://www.topcoder.com/challenges/30123237 has been updated - it has been assigned to afrisalyp." to "Challenge {challenge ID} has been assigned to {member handle}"
- Change "Payment task has been updated: https://software.topcoder.com/review/actions/ViewProjectDetails?pid=30123237" to "Challenge {challenge ID} has been paid and closed"
UI changes
In the Topcoder-X UI, we don't really use any of the APIs directly (to my knowledge), but we should be expected to now put in "new" project IDs, from the v5 projects API, instead of the older v4 project IDs, when adding / editing new projects.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.For now, we likely won't see payment actually work in dev. I don't think the billing flow all the way to PACTs is fully implemented and I'm still looking for exact details, so we can close the challenge, as described in the mapping document in the wiki, but it likely won't reflect properly in OR / Direct on dev.
Code access
There are currently three pieces to this app:- Topcoder-X Receiver (https://github.com/topcoder-platform/topcoder-x-receiver)
- Topcoder-X Processor (https://github.com/topcoder-platform/topcoder-x-processor)
- Topcoder-X UI (https://github.com/topcoder-platform/topcoder-x-ui)
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 KafkaScorecard Aid:
Judging Criteria
- Major requirements are that we have removed dependencies on v4 project and challenge 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
- 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
- Ensure your patch file updates the deployment documentation in the README, if necessary
- A Validation.md that covers the details above