Challenge Overview
NOTE: The prize for the contest has been increased to $800 / $400. We also have extended submission phase by 1 day
Challenge Objectives
-
To set up a websocket and web page server
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
-
We currently have built a kafka listener to listen for messages arriving in the kafka stream and a saturator that processes these message and makes api calls to get additional data as needed
Technology Stack
-
Nodejs (version 10)
-
Kafka (version 2)
Code access
-
The existing code base will be shared in the contest forum. You are expected to update the existing code base itself
Individual requirements
Set up a Websocket server (Major Requirement)
-
Currently, the saturator processes each message received from kafka and makes api calls to get additional data.
-
It logs the data to the console
-
Instead, set up a websocket server. Pass the data logged by the saturator to the websocket server and dont log it to the console anymore. Emit an event each time the saturator sends some data. All data will be part of the same event. You need to pass the data that is currently being logged to the console along with the kafka message topic, to identify the data origin.
Setup a web page server (Major Requirement)
-
The web page itself will be written using Angular or React, but eventually we intend to build the pages. So you will be deploying static assets.
-
Prepare a dummy web page demonstrating that web pages can be hosted by the same app that has the websocket server
-
The page will also establish a socket connection with the websocket server and print out the messages received.
Provide unit tests (Minor Requirement)
-
Update existing unit tests and add new ones relevant to this contest.
Deployment guide
-
Update the existing deployment guide with instructions relevant to this contest
Important Notes
-
The deployment of the app needs to be a single command. It should start the kafka listener, websocket server and webpage server. They are all part of the same code base
-
Your app needs to be deployed to heroku. You are not expected to share the heroku url of your deployment, only that you need to ensure that the app can be deployed to heroku without any additional modifications.