Challenge Overview

In this challenge series we’ll be building a platform for Topcoder notifications that will be integrated into many products - challenge pages, Topcoder Connect, etc. The overall architecture is based on a message bus (Kafka). Each of the Topcoder services (ex project & challenge services, message service,..) will post events to the message bus (ex a challenge has been posted, challenge received a submission, user has joined a project, etc). We have built a simple REST service that will serve as a proxy to Kafka. Each of the client apps (community pages, Topcoder Connect, etc) will then have a separate notification server that will subscribe to Kafka topics, filter messages, store the notifications for each user and track notifications as new or seen (also implemented in a previous challenge).


Scoe of this challenge is integrating the new connect pages with the backend API and making a few changes to the notifications server. Design for the new pages is available here and the pages have been implemented in this challenge.
We'll only be integrating notification pages with backend api. Account settings and change password pages are out of scope. Mapping between page features and API endpoints should be quite obvious, but if there are anything not clear, please raise the issue in the forums.

Rendering individual notifications
The notifications returned by the API have two important fields: 'type' and 'contents' . Contents is a JSON structure that will be different for different notification types so we have to implement notification rendering logic for each notification type. Notification contents are not yet fixed, so you can add any fields you need to populate the data in the UI. For example for notification type 'notifications.connect.project.created' we need to render text like 'A new project was created: PROJECT_NAME', so you can add PROJECT_NAME to the notification content.

Notification delivery settings
Our backend does not support delivery settings for now (bundle emails section on the notification settings screen) so please hide that section in frontend for now.

Backend server changes
Backend server has a custom logic for handling authentication using JWTs. We need to remove that and use tc-core-library-js as middleware. Sample project that is using this library is available here

Backend api repository is available here, develop branch.
Frontend repository is available here, notifications branch.

Your verification document should cover the end to end flow of posting new events to the BUS api (deployed at https://gruesome-dracula-17495.herokuapp.com/) , and viewing those notifications in connect.

Final Submission Guidelines

Submit a git patch for notifications server
Submit a git patch for connect-app

Submit updated Deployment guide, postman collection and swagger spec
Submit a verification guide

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30060448