Challenge Overview
Challenge Objectives
-
To write a kafka listener in Nodejs to listen to events that occur on the Topcoder platform
-
To process the messages received from Kafka and carry out additional actions based on the message
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 first in a series of contests that aims to set the project up.
Technology Stack
-
Nodejs (version 10 latest)
-
Kafka (version 2 latest)
Code access
-
This is the first contest and thus there is no code base to share
Individual requirements
Setup Kafka Listener (Major Requirement)
-
Use no-kafka module and setup a Kafka listener to listen to multiple topics in a Kafka stream. Note that the number of topics that we will listen to will be large. Thus, please follow best practices here.
-
The listener should be flexible. New topics could be added and removed in the kafka stream and the listener should be able to pick up new topics automatically without the need to restart the app
-
Once a message arrives, call a mock service and pass the message to it. The service can do something as simple as logging the message to the console
Setup an Expressjs server (Minor Requirement)
-
Setup a simple server using Expressjs.
-
Let it have a single endpoint for now, which will be the root endpoint `/`. Let the endpoint respond with “Hello World” for a GET request.
-
There should be no separate npm script to start the kafka listener. When we run the npm start script, it should start the Expressjs server as well as the Kafka Listener
Provide Unit Tests (Major Requirement)
-
Use mocha and chai and submit unit tests for the kafka listener. No tests needed for the expressjs server for now.
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
-
Only a Deployment guide is needed. You are not required to provide a validation document separately.
-
Use markdown and provide a README.md file in the source code
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.