Topcoder Connect - New Fields for Project Templates

Register
Submit a solution
The challenge is finished.

Challenge Overview

Add new fields to the ProjectTemplate model in the DB and editing form.

Project Background

Topcode Connect is a client-facing application of Topcoder. The main backend of the Connect App is Topcoder Project Service. In this challenge, we would like to add 2 more properties to one model in Project Service and update form to edit this model with new fields in the Connect App. No new functionality is required to implement, the main work here is to configure existent code.

Technology Stack

  • Node.js

  • React

  • PostgreSQL

Code access

Work for this challenge has to be done in 3 repositories:

- Connect App repo https://github.com/appirio-tech/connect-app branch dev commit f1bdf0fd83eac39d38ba5b8cbb409c2c29d912c4 or later
- Project Service repo https://github.com/topcoder-platform/tc-project-service branch develop commit 89b82e9556c7fdea575ec71920a62c257c6e0464 or later
- Project ES Processor repo https://github.com/topcoder-platform/project-processor-es branch develop commit b0ec1d759671fe18dda3ac4314a4e7bb70d385cf or later

- Quick local setup guide with config, and demo user are provided on the forum.

Individual requirements

Project Service

  • To the model ProjectTemplate add 2 new properties:
    - "metadata" json NOT NULL DEFAULT '{}'::json,
    - "subCategory" character varying(45)

  • Update sequalize model and create a corresponding migration SQL script in “migrations” directory

  • Update endpoints related to ProjectTemplates to validate data according to new changes in the model

  • Update Swagger file accordingly

  • Update Postman file if necessary so requests work successfully after model updates

Project ES Processor

This service is used to index data we manage in Project Service to Elastic Search. Project Service sends Kafka messages and Project ES Processor listens to these Kafka messages and index data to ES.

  • Update validation rules according to model changes for ProjectTemplates

  • Update unit tests so they have some example data in the new fields, to check that objects with new fields are processed correctly

Connect App

Inside Connect App we have UI for admins to edit data in ProjectTemplates https://connect.topcoder-dev.com/metadata/projectTemplates. We should update the form for editing Project Templates so we can edit new properties.

  • Add “subCatefogory” field after “category” field. It should display the same list of ProjectTypes as “category” field and should update “ProjectTemplate.subCategory” property. This field is optional.

  • Add “metadata” field under the “phases” field with JSON editor, same like we have for “phases”, see screenshot. This field is required.

General requirements

In all repositories:

  • Lint should pass

  • Existent unit tests should pass

  • Git patch should be without errors or warnings.

Verification

For demo we provide `pshah_manager` user which doesn’t have admin permissions, thus it cannot edit Project Templates using Connect App. So to test the Project Template editing form you can replace the line https://github.com/topcoder-platform/tc-project-service/blob/develop/src/permissions/index.js#L8 with “const projectAdmin = true”. Update this line only for local testing and don’t include such a change to your submission.

 

[Required] Submit a demo video which shows editing of Project Template. In particular, please, show that after page reloading all the changes persist. The submission would not be reviewed without a demo video.

If any questions or concerns, feel free to raise a question on the forum.



Final Submission Guidelines

Submit a zip file which would include:

  • 3 Git patches with changes for each of the repositories.

  • Text file with a link to the uploaded demo video or a demo video file.

Additionally, the winner would be required to raise pull requests to the repositories after the challenge is completed.

Review style

Final Review

Community Review Board

Approval

User Sign-Off

Challenge links

ID: 30112454