Challenge Overview
Challenge Objectives
-
Update tc-preferences-service backend to properly handle the email preferences updates.
Project Background
tc-preferences-service implemented in NodeJS provides backend endpoints for user preferences management.
It is used by the community-app for user preferences management https://www.topcoder.com/settings/preferences , the community-app interacts with tc-preferences-service via topcoder-react-lib library.
Technology Stack
-
NodeJS 6.9.4
-
DynamoDB
Code Access
Existing Code: https://github.com/appirio-tech/tc-preferences-service
Branch: dev
You will find a self registration link attached on the forum in case you don’t have access to the repo.
If the self registration link does not work for you, please request access by posting your Github username on the challenge forum.
Mailchimp account setup
To setup a Mailchimp account please follow the procedure at https://drive.google.com/open?id=1KpZB5wH0B_P9if2EHnfVcnMe6ZMAOayuBvNkJ0o_UBY
Individual requirements
Recently, we moved the email preferences management to the community-app ( https://github.com/topcoder-platform/community-app ), but the preferences updates does not work well, it consistently shows an error message :
Requirement #1 :
When updating the user preferences (endpoint PUT /users/:userId/preferences/email), the tc-preferences-service updates the DynamoDB first and invokes mailchimp service. We would like to change that behavior and invoke mailchimp service first and after that update DynamoDB.
Requirement #2 :
The source code logic does not properly handle exceptions, we would like to enhance the logic to properly handle the exceptions to identify the root cause and fix the update email preferences error.
The error messages should be properly propagated.
Requirement #3 :
Make sure that unit tests are working fine and provide Postman collection and environment for testing the updated endpoint.
What to Submit
-
A git patch against the latest commit in the dev branch.
-
A verification document with detailed instructions on how to test your changes
The winner must create a pull request against the dev branch in our repo.