Challenge Overview
Challenge Objectives
-
Update our SPA application to demonstrate the capability of the stream (https://getstream.io/activity-feeds/) for our new NewsFeed feature
Technology Stack
-
Node.js
-
JavaScript
-
React
Challenge Overview
-
We have implemented some use cases in these two previous challenges.
https://www.topcoder.com/challenges/30121719/?type=develop
https://www.topcoder.com/challenges/30121720/?type=develop
We have some new business to be implemented and some changes required in this challenge.
The existing codebase will be shared in the forum.
Individual requirements
We need to implement below new requirements.
1. Ability to receive the feed when a member won a challenge, you can still mork any item required in the codebase.
The flow should be like this,
-
When A follows B, and B won challenge Z, A should receive a feed that `B won challenge Z`.
-
When A registered challenge Z, and B won challenge Z, A should receive a feed that `B won challenge Z`.
-
And if the above two scenarios happened at the same time, (A follows B and A registered challenge Z), we only display the first feed item received, the second feed item should be ignored. We have this rule because feed items generated by following relationships between members have higher priority, and we want to avoid duplications)
2. Currently, the feed owner is able to delete the feed. Please hide the ‘Delete’ button on the frontend UI for now, but don’t remove the related code. Right now we don’t want to expose the ‘Delete’ feature.
3. Currently any member can follow the other members displayed on the frontend. We want to extend this use case to
-
Allow members to have the ability to block some members from following himself.
-
Allow members to have the ability to not be followed by anyone.
4. Add the ability to disable a member from posting feed, it should be performed using auto-script, verified using frontend app.
5. Right now the auto script can create a user on stream automatically and make several members follow this user.
E.g. the current ones: `tc-announcements`, `tc-bot`, `tc-blockchain`, `tc-challenge-1`, `tc-challenge-2`, etc are created on stream
We want to extend this ability to
-
Create a user ( name is configured. )
-
Make several members follow this user.
-
Push an activity on behalf of this user so the members following this user should receive the corresponding activity on their frontend UIs.
6. Please deploy both backend and frontend onto a 3rd party cloud services and share the deployed urls, also please include the deployment steps in the updated ReadMe.md
(You can create a new section named Cloud Deployment for this).
The purpose is when anyone wants to play around with your solution, he doesn’t have to deploy the solution himself.
We recommend using Heroku platform as it’s free, but we do not restrict you from choosing any other cloud platforms.
Important Notes
-
Please make sure existing functionalities don’t break.
-
The purpose of the challenge is to demonstrate the capability of stream so the designs shared below are just for reference. We don’t need the UI to match the design, just make sure the UI is easy to operate on.
-
Please make sure with your solution, we only need to change some configurations in it in order to deploy on another steam account. (https://getstream.io/activity-feeds/)
-
UI design for reference, https://marvelapp.com/6091272/screen/67412375
-
You don’t need to integrate with any topcoder existing libraries or challenges, you can configure all the types of users or challenges that are needed when you try to achieve above business flows.
-
The feed item structure doesn’t need to be complex, you can add necessary ones as you need. Here is all the supported field type: https://activitystrea.ms/specs/json/1.0/
-
Please use React Context API to manage the state in the application, we want to avoid Redux. Here is an article for your reference: https://medium.com/@chathuranga94/introduction-to-react-context-api-90f5e4d7a7a9
If you have any questions please do not hesitate to ask for clarification in the challenge forum.
Final Submission Guidelines
Submission deliverables
- The updated applications.
- The detailed deployment guide document, including the steps to deploy onto the cloud platform as you choose and the deployed cloud instance urls.
Also the doc should also include the steps to interact with them when necessary in order to demonstrate the business flows.
- A video to demonstrate the above flows are met in your solution.