Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Challenge Objectives

  • Node.js app, deployment on Heroku

  • We have an existing Swagger file, and generated stubs for a client and server.  This challenge will expand the stubs into working code, backed by Neo4j for data storage.

 

Project Background

  • The current groups API appears to be a root cause of performance issues on the Topcoder platform.  This challenge will be the start of the next version that will hopefully fix a lot of the performance problems.

  • Future challenges will integrate this new API into existing services and will flesh out the unit tests.

 

Technology Stack

  • Node.js will be used as the development language

  • The final deployment of this service will be on the EC2 platform using Elastic Beanstalk

  • Neo4j (https://neo4j.com/download/) will be used for data storage

 

Code access

The existing Swagger file and code stubs can be found here:  https://github.com/topcoder-platform/groups-api  

A link will be provided in the forum that can be used to grant yourself access.

 

Individual requirements

 

Server implementation (major requirement)

We have the swagger and stubs currently built.  This challenge will fill out the stubs to be actual code that persists the groups information needed to Neo4j.

In the server folder, look at src/services/groups.js.  All methods should be implemented properly, and documentation should be added, instead of just having the defaults.  Documentation should be clear and concise.

 

Performance (major requirement)

Performance of this API is a primary goal of the API.  All requests should take as few resources and return as quickly as possible.  This API will eventually have to handle thousands of requests an hour, and any little inefficiency will be magnified greatly.

Please ensure that your Neo4j schema is well designed and relatively “flat”, ensuring that the complex queries complete quickly.

Performance in this challenge is a MAJOR requirement!

 

Neo4j

An example will be provided in the forum.  Please use that to help guide you a bit to see how data can be persisted and queried from Neo4j.  Ensure you use Neo4j best practices.

 

Unit tests (minor requirement)

Unit tests are required for this challenge.  The unit tests should use the generated client code to test the new server code to ensure that it works as expected.  Please ensure to add unit tests for both positive and negative cases (missing fields, bad requests, etc…)

 

Configuration (minor requirement)

Ensure that all relevant configuration parameters are exposed properly as environmental variables and that they are documented in the README.md.  This would include things like the Neo4j server endpoint and authentication details. Do not hardcode this.

 
Heroku deployment (minor requirement)
For this challenge, we will target server deployment to Heroku.    You can use the GrapheneDB Heroku addon:  https://elements.heroku.com/addons/graphenedb
 

Deployment guide and validation document

 

You must include:

 

A README.md that covers:

  • Deployment to Heroku - Ensure that this covers all necessary dependencies, including Neo4j

  • Configuration - Make sure that all relevant configuration values are documented, including the defaults.
     

A Validation.md that covers:

  • How to validate the submission

  • How to run the required unit tests and validate the results, targeting the deployed environment on Heroku

Validation video / screencast

  • No video is required for this challenge

 

What To Submit

 
  • A patch file with the source updates and new unit tests against git commit hash eab8d283f07a026f8f43c63ccbf1bebe91668f46

    • Make sure to test your patch file!

    • If you are unsure of your patch file, please also include the full project

  • README.md

  • Validation.md



Final Submission Guidelines

Please see above

ELIGIBLE EVENTS:

Topcoder Open 2019

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30078609