Challenge Overview
Challenge Objectives
- For this contest, we are looking at creating an application named "Legacy Processor" using Node.Js (version 8.x) that will consume messages related to the uploaded submission from a Kafka server and carries out additional actions based on the message received.
Project Background
- Topcoder is updating its api and one of them being updated is the Submission API. One of the scenarios that we are taking care of here is that when an user uploads a submission to Topcoder for a contest
- An application (not relevant for this contest) creates a message that contains details about this submission and sends it to an Apache Kafka instance.
- This challenge is part of a series of challenge to support the new Submission API service.
- Submission API service documentation can be found in https://tc-submission-api-dev.herokuapp.com/docs/ - just for reference
Technology Stack
- The application being built is a Node.Js application. Latest 8.x version should be use
- Ensure that you support https connections when using Kafka. Please use the no-kafka module.
- Kindly use the standard library as your style guide and to lint your submission
Individual requirements
1. Create a local Kafka server to develop and test your application
2. Listen to "New Submission" Event sent to the Kafka server. You can publish the message manually for testing.
The event to listen will have the following format. Please validate the message payload in the Legacy Processor application.
{ "topic": "<topic-name>", "originator", "<originator>" "timestamp": "2018-02-16T00:00:00", "mime-type": "application/json", "payload": { "submission": { "id":111, "challengeId":1234, "memberId":4321, "url": "http://content.topcoder.com/some/path", "type": "ContestSubmission" } } }
Please make both topic and originator configurable.
2. Create a service (meaning a different folder/file from the main application) - this is a very important feature - to generate random legacySubmissionId. This id should be a positive integer.
3. Make a call to the Submission API to update the submission
At this moment the submission api is not totally functional. Therefore you should provide a minimal http REST server with only one endpoint: PUT /submissions/:id.
The payload to this endpoint should be:
{ "id": 111, "legacySubmissionId": <id generated by mock service> }
���
The simple rest service doesn't need to do any validation and should always return http status code 200.
The submission api url should be made configurable.
Deployment guide and validation document
You will need to provide a deployment guide (README.md) and a validation document (Validation.md).
The README.md should cover:
- Building the code. Please make sure the code is compatible with Heroku. There is no need to show the steps for heroku deployment.
- Configuring the application. Describe all configuration parameters and default values for testing purposes.
The Validation.md should show all the steps necessary to verify the application:
- Deploy of local Kafka server
- Deploy of local minimal submission api rest server.
- All tests to verify the application
Final Submission Guidelines
- Full application in a zip file
- Deployment guide as described in specifications