Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

  • To process messages that arrive in Kafka stream and make api calls to get additional details based on these messages. We call this the “Saturator”.

 

Project Background

  • Corona project is about creating an interactive dashboard for public use that showcases the footprint of Topcoder and activities that take place on the platform across the globe

  • This contest is the second in a series of contests that aims to set the project up.

 

Technology Stack

  • Nodejs (version 10 latest)

  • Kafka (version 2 latest)

 

Code access

  • We will provide the code base in the contest forum. This code base contains a kafka processor that listens to multiple topics in kafka and make a dummy service call to process these messages. You will be picking up from here when working on this contest.

  • We will also share a document in the contest forum detailing the additional processing of the messages that the Saturator is expected to carry out.

 

Individual requirements

Create the Saturator (Major Requirement)

  • The Saturator is a service that takes as input messages across topics in a kafka stream and makes api calls to fetch additional data based on the existing data in these messages.

  • For your understanding, we will take an example - a message could arrive about a new contest being launched. However, this message might only contain the id of the contest being launched. The Saturator will thus make an api call to the Challenge API of the topcoder platform to get details about the contest’s title, timelines and prizes. This is just an example and not the actual tasks that the Saturator will carry out.

  • The list of tasks that the Saturator will carry out will be shared in the contest forum.

  • Note that current code base has a kafka listener that listens to multiple topics (that need to be configured) and calls a sample service. You will remove / update the same service to implement the Saturator.

Update Unit Tests (Major Requirement)

  • Updating existing unit tests. There is not much functionality in the existing code base and thus the tests are not much. With this contest, you will add more tests and update the existing tests as needed.

  • End to end tests are not required.

Deploy to heroku (Minor Requirement)

  • You need to write your code in a manner that allows us to deploy the app to heroku without making any additional changes (besides setting up the environment variables)

  • You don’t have to actually deploy to heroku and share the heroku url. What this requirement asks is that you submit code that we can deploy to heroku. So, you can test it locally before you submit. You are not required to share the heroku url where you have deployed the app.

 

Deployment guide and validation document

  • Update the existing deployment guide as needed. You are not required to provide a validation document separately.

 

Important Notes

  • Use async and await pattern in your code base. Please don’t use yields and generators. Use promises.

  • Lint your code base using the standard module.

  • Note that you will be using Nodejs version 10 (soon to be LTS release) for this project.

  • Follow existing conventions used in the app.



Final Submission Guidelines

Zip your code base and upload it to Topcoder.

 

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30072543