Challenge Overview
Challenge Objectives
-
To create a processor that calculates the score of a submission based on the elapsed time
Project Background
-
This project is about creating and managing leaderboards
-
The project is specifically aimed at Topcoder events, such as TCO 2018.
Technology Stack
-
Nodejs (version 10 latest)
-
Kafka (version 2 latest)
Code access
-
This is the first contest and thus there is no existing source code. You will be writing the app from scratch. However, you will find that the code base and functionality is very similar to the existing submission scoring processor code. You can certainly use this as reference and write a new aggregate score processor.
Individual requirements
Create a Kafka Listener (Major Requirement)
-
Create a nodejs based Kafka listener that will listen to multiple topics on Kafka.
-
The topics of concern are related to the event where a submission is created or updated, for the “review” resource
-
Use no-kafka module
Create an Aggregate Score Processor
-
After receiving the message from kafka, you will proceed to filter out relevant messages and proceed to determine an “aggregate score”. The details of this are shared in the contest forum.
Create Unit Tests (Minor Requirement)
-
Write unit tests in mocha and chai.
-
Only Unit tests are needed. End to end tests are not needed
Deployment guide and validation document
-
Provide a README.md that contains instructions on how to config, build, deploy the app locally
-
You are not required to deploy to heroku. However, you need to ensure that your submission can be deployed without any changes to heroku.
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 for this project.
- ���Both the kafka listener and the processor are part of the same code base. The processor is just a service that makes use of the kafka listener. See the reference code base for implementation details.
Final Submission Guidelines
Zip your code base and upload it to Topcoder.