Challenge Overview
Challenge Objectives
-
Create an API using Nodejs by following the swagger based specification
-
Write tests for this api
Project Background
-
This project aims to create a scheduler, that allows us to create an event that should happen at a specific time
-
Think of it as a cron job, but instead of running a script at a specified time (and executing recurrently), you are specifying an endpoint that needs to be called at a specific time and with specific data. And this is happens just once
Technology Stack
-
Swagger Specification (version 2)
-
Nodejs (version 10)
Code access
No code involved here. We will share the swagger specification in the contest forum
Individual requirements
Create an API using Nodejs by following the swagger based specification (Major Requirement)
-
We will share a swagger specification in the contest forum
-
Your task is to create an API in nodejs and follow the provided specification for this api implementation
-
You will use Dynamodb as your database.
-
Sorting or ordering of data is not in scope. Pagination is in scope.
-
You don’t have to provide a local instance of Dynamodb. Reviewers are requested to test with the dynamodb instance hosted on AWS
-
You need to provide POSTMAN collection for the endpoints
-
You need to use Expressjs for your API server
-
Your API needs to adhere to the Topcoder v5 Standards, a document which will be shared in the contest forum
-
For reference, you can go through the Topcoder Lookup API or the Topcoder Submission API. But do go through the Topcoder v5 Standards document too.
Write tests for this api
-
You need to use mocha, chai and nock for your testing.
-
Provide both unit and end to end tests. You need to ensure that you have a code coverage of more than 80%
-
Reviewers will use the dedicated section for Testing in the scorecard and not Major Requirement section for any issues in this implementation
Provide Docker based deployment (Minor Requirement)
-
In addition to deploying it normally using npm scripts and nodejs, you need to also provide a docker based deployment
-
The deployment will also need to allow running tests, in addition to running the API itself.
Deployment guide and validation document
You need to submit a deployment guide with instructions on how to deploy your app, both with and without docker. Preferably in Markdown. No verification document needed.
Important Points
-
Kindly use standard as your linter
-
You need to use async await pattern
-
You don’t have to provide scripts to create the dynamodb tables or scripts to fill them with mock data
- For role based authorization, only Topcoder administrators will be able to use this API. You would need to support m2m tokens too
Final Submission Guidelines
Kindly upload the codebase as a zip file