Challenge Overview
Challenge Objectives
-
To fix the behaviour of the slider “playing” the events
-
To implement statistics endpoints
Project Background
-
Project Corona consists of two apps. One is called the listener, which listens for events in Topcoder’s kafka event stream, processes the event and creates a new event with additional details. The second app is called viewer, which listens for events produced by the listener for display on the UI.
Technology Stack
-
Nodejs version 10
-
Kafka version 2
Code access
You can access the LISTENER app here and the VIEWER app here. Use the develop branch in both repositories for this contest as your base branch. You need both the apps for this contest, but your changes will only be in the VIEWER app.
Individual requirements
Change the behaviour of the slider playing the events (Major Requirement)
-
In the VIEWER app, while displaying events, the slider can be moved around. Moving it to the left plays older events.
-
However, after placing the slider at a time and date in the past, if there is no event at this time, the slider “jumps” to the nearest event - it skips all the time in between and goes to the next date and time where an event exists.
-
We would like to change this behaviour. The slider should instead play like a movie, with the step size of 1 minute. Each minute, the slider should display the events at that time and date. If no event exists, then no event card is shown (the event dots of the past are still visible) and the slider continues to move to the next minute every second.
-
ALL events at that minute (position where the slider is) will be displayed, just as they do currently.
-
This also means that as the slider reaches the end and starts showing the current date and time, if there is no event that has occured right now, then no event card is to be shown (event dots of the past are still visible and user can still click on the dots to view the details of the event). Right now, the last event’s card is displayed, even if it does not fall at the current time.
Implement Statistic endpoints (Major Requirement)
-
In the VIEWER app, in the sidebar, we have a section where we display the stats for the platform (Members, challenges, prizes)
-
In the contest forum, we share the details of the APIs that you need to call to get this data.
-
Implement a single endpoint in VIEWER app’s server, which calls the api to get the stats. The UI makes a single api call to get all the stats and displays them on the UI.
-
You will have to create controllers and routes and services (even if just one for now) since we will be having more endpoints in the VIEWER app in the future to support.
Deployment guide and validation document
No updates to the deployment guide are expected.
Important Notes
-
Follow existing conventions used in the app
-
Ensure there are no lint errors.
Final Submission Guidelines
You can upload a git patch of the changes made in VIEWER app only. Alternatively, you can zip your VIEWER app code base and upload it to topcoder. LISTENER app code base need not be uploaded.