[$200] Allow for tags in project setup #453
Description
When setting up a Topcoder-X project, we need to allow copilots to select the technology tags for challenges created for that project, for tracking purposes.
A Topcoder-X project will have "general" tags, like [React, Javascript, HTML]
, or [C#, SQL Server]
, etc...
Currently, we don't apply any technologies to challenges created by Topcoder-X, but this change will allow copilots to set the technologies used by that individual project, when creating challenges for that project. This is important for proper tracking on the Topcoder platform and for reporting internally.
UI Change
In the UI on the add / edit project screen, we want to have a dropdown / selection for Tags
, exactly the same as we do now in work manager (screenshot below). You should be able to take the code right from Work Manager (https://github.com/topcoder-platform/work-manager) that uses the API call to https://api.topcoder-dev.com/v4/technologies
to populate the list
Note that we need to differentiate between dev and prod, so don't just hard code in the API call - make sure it uses the correct environment path, either Topcoder.com or Topcoder-dev.com.
DynamoDB change
In the DynamoDB, we need to have a new field added to store the selected technologies along with the project record. Please ensure that:
- We can support existing projects that haven't selected a technology. An empty list should be allowed and will be the default for all existing projects
- The change needed to the schema is properly built and can be easily applied to the existing schema, since we're going to apply this over current data in the database and can't lose any data or expect to reset the database.
Topcoder-x-processor change
The Topcoder-X processor will need to change to use the list of tags when building the challenge object and POSTing that to the challenge API. You can see how Work Manager sends the tags list and do the exact same thing in the Topcoder-X processor. Make sure the processor uses the list pulled from DynamoDB for the project.