Challenge Overview
Challenge Objectives
-
As part of this challenge, you need to implement all endpoints related to member traits.
Tech Stack
-
NodeJS
-
DynamoDB
-
ElasticSearch
-
Docker
-
Swagger
Code Access
Repo: https://github.com/topcoder-platform/member-api
Branch: develop
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 Traits tag. The endpoints are:
-
GET /members/{handle}/traits (Read data from ElasticSearch. You need to deploy https://github.com/topcoder-platform/member-processor-es locally so it syncs the data from DynamoDB in ElasticSearch)
-
POST /members/{handle}/traits
-
DELETE /members/{handle}/traits
-
PUT /members/{handle}/photo
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
Sample payloads can be found in the challenge forum.
Unit/E2E Testing
You need to cover all new 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.