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