Register
Submit a solution
The challenge is finished.

Challenge Overview

  • Create a Kafka processor to CUD (Create / Update / Delete) data in legacy Informix database based on the events received in Kafka bus.

Project background

  • Topcoder is streamlining its APIs and in this project we will be upgrading the existing Project API to V5 standards

  • Project API powers Topcoder connect, Topcoder Challenge V5 API and supplies data for Direct as well

Technology Stack

  • Node.js 8.11.x

  • Kafka

  • Informix

  • Postgres

  • Docker & Docker-compose

Challenge Assets

  • Source code of legacy project processor developed in Part 1 challenge can be found here. Please refer to the `develop` branch.

  • Source code of Project API can be found here

  • Source code of Direct Project API (which is currently handling backfilling data in Informix) is provided in the challenge forum which will be accessible after registration.

  • SQLs for each action carried out by Direct Project API is provided in the forum as well.

Individual Requirements

Update Kafka Consumer

  • Update kafka consumer to listen to all 3 configurable topics listed below

    • project.notification.create

    • project.notification.update

    • project.notifcation.delete

  • Please refer this thread to learn more about the structure of Kafka message that will be used by this processor

  • Only following messages are in scope, remaining messages need to be ignored

    • Message 1 - Topic - ‘project.notification.create’, Resource - ‘project’

    • Message 2 - Topic - ‘project.notification.create’, Resource - ‘project.member’ 

    • Message 3 - Topic - ‘project.notification.update, Resource - ‘project’

    • Message 4 - Topic - ‘project.notification.delete, Resource - ‘project.member’

Informix Processing logic

  • Please refer the existing Direct Project API calls from Project API and source code of Direct Project API and SQLs for each action in Direct Project API

  • Implement code for below scenarios based on the Kafka messages listed above

    • Create new project (Message 1 - Partially implemented in Part 1)

    • Add Copilot to the project (Message 2)

    • Add Manager to the project (Message 2)

    • Update billing account of the existing project (Message 3 - Partially implemented in Part 1)

    • Remove Copilot from the project (Message 4)

    • Remove Manager from the project (Message 4)

Bug fixes

  • Please fix the bugs listed here

  • Before associating a billing account with the project, we need to validate whether the user has access to billing account or not, it was not implemented in the Part 1 challenge. It needs to be taken care in this challenge. SQLs for validating billing account access is provided in the challenge forum as well.

Tests with coverage report

  • Please add E2E tests for the changes done as part of this challenge. If there is a piece of code which can’t be tested by E2E tests, you could create unit tests for those pieces of code and execute it as part of E2E tests itself.

  • Ideally the code coverage is expected to be 100% for all service files and helper functions.

  • We expect that the tests should be robust enough to capture bugs in future development

  • Use Sinon for mocking if there is a need to mock any scenario

Deployment document

  • Update deployment document based on the changes carried out as part of this challenge.

Validation document

  • Please create a brief validation document to verify the changes carried out as part of this challenge.

Important Notes:

  • Please try to reuse the code as much as you can instead of creating redundant code for processing similar messages.

  • Ensure that there are no lint errors and every test pass.

  • Clean up the unnecessary code before submitting

  • If you have any doubts, Please feel free to post it in the forum. We will be happy to resolve your queries as soon as possible.



Final Submission Guidelines

  • Zip your codebase with validation document and submit the zip file using the submit link in the challenge.

  • After submitting, please ensure that you are able to download your submission from Online Review

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30098153