Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

  • As part of this challenge, you will build the base code for our new V5 Member API.

  • You need to build the first set of endpoints from the provided Swagger definition.

Tech Stack

  • NodeJS

  • DynamoDB

  • ElasticSearch

  • Docker

  • Swagger

Code Access

This is a new project.

Project Background

In this series of challenges, we’re building the new Member V5 API that will replace our existing Member V4 API.

Detailed Requirements

Endpoints in scope

You need to implement all endpoints that have the Basic tag. The endpoints are:

The member objects are being created by another service, thus you need to create a script that will insert some test data into the DB (both dynamo and ES) for testing purposes.

Post events on Kafka

After each operation, you need to post an event to our Kafka using the following module: https://www.npmjs.com/package/@topcoder-platform/topcoder-bus-api-wrapper

 

When updating a member profile, you need to post to the member.action.profile.update topic.

The event payload must have the object that was updated.

 

If the email has changed, you also need to post an event on the member.action.email.profile.emailchange.verification topic.

The payload should have the following format:

{

  "data": {

  "subject": "Topcoder - Email Change Verification",

  "userHandle": "thomaskranitsas",

  "verificationAgreeUrl": "http://www.topcoder-dev.com/settings/account/changeEmail?action=verify&token=<emailVerifyToken>",

  "verificationDisagreeUrl": "http://www.topcoder-dev.com/settings/account/changeEmail?action=cancel"

  },

  "recipients": [

    "thememberemail@domain.com"

  ]

}

The above URLs must be constructed using configurable variables and should not be hardcoded.

 

Documentation

You need to create a detailed README.md file that will describe the following:

  • Prerequisites.

  • Instructions on how to configure the API.

  • Instructions on how to run the API locally.

  • Instructions on how to run the API using Docker.

  • Any other information that will be useful in future development.

Unit/E2E Testing

You need to cover all code with unit and E2E testing. You need to create both positive and negative test scenarios.

Important notes

  • Follow the best practices for creating Node.js APIs.

  • Use Standard.js for linting.

  • Update the provided Swagger file to reflect any changes made during development if needed.

  • Both the Swagger file and your code should comply to our V5 API Standards (PDF attached on the challenge forum).

  • Entity IDs should be omitted in the bodies of POST/PUT/PATCH calls unless they’re referring to a child entity.

  • Performance and stability are very critical.

Submission Deliverables

Submit a zip file containing your whole solution.

 


Final Submission Guidelines

Please read above

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30114543