Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Project Overview

TopCoder and the TopCoder community have worked hard to get the platform to its currently level of maturity, but we're far from done. It's time to take the platform to the next level. TopCoder is going to start taking some steps to open up the platform API to the outside and community developers so they could incorporate it in their websites, applications or build their own applications (web, mobile or desktop).

The ultimate goal is to open up and build an "API" that is targeting all different type of audiences - Software and Studio Competitors, SRM/MM competitors, Copilots, Admins and TopCoder partners - each audience will have different interests and usages of the API, so it will be a huge project and we need to make sure that we are in the right direction from the beginning.

Currently, we have built the first batch of APIs with functional tests.

When testing and reviewing the contest Details APIs, we found many parts can be improved.

We have done some initial research and coding, this contest is going to follow that to get contest details APIs improved.

Competition Task Overview

Please raise questions as quick as you can, I am familiar with related database and code base, I can provide as much support as I can.

The updated code must still deploy and work on heroku - any submission which can't be deployed on heroku successfully will be failed in screening phase - primary reviewer must check this.

The implementation will base on the node.js version of TC platform API - https://github.com/cloudspokes/tc-api. Please follow the existing actionhero pattern for your development.

For this contest, you are expected to start your work based on fixsearching branch.

Improve Contest Details APIs

You can see the relative changes we currently made by https://github.com/cloudspokes/tc-api/compare/fixsearching.

  • for software contest details API, we add new fields, like currentPhaseRemainingTime and challengeCommunity.
  • for studio contest detail API, we changed some field names and added more fields.
  • the related queries are updated corresponding to return the needed data.

We will continue the current changes and finish it up.

Basically,

  1. abstract the logic inside exports.getStudioContest to a function similar as others.
  2. clean up all code. consolidate into small actions, as already partly done in contests.js
  3. fix and update tests, we need to follow the standard - Tests Creation Guide.docx
  4. work in "fixsearching" branch. merge in master before submitting.
  5. update the apiary.apib file to reflect the changes.

Consolidate Contest Types APIs

Currently, we have diffrenent APIs for develop contest types and design contest types.

If you check the implementation

We can consilidate them into one QUERY and one backend function by taking different parameter.

By applying above refactor, nothing is changed except the backend implementation. But please make sure all tests is still working and the apiary.apib file is document the APIs properly.

Standarize Query Naming Convension

Currently, due to the limitation of nodejs-db-informix module (the camelcasing is ignored by the driver, and it comes through all lower case), even we are using challengeType in query, we have to use challengetype in code.  This makes the code hard to understand.

we like to use the underscore approach in all SQL queries under the queries directory and update the the corresponding code reference in code.

Notes, for the JSON data returned, we will still use camelCase approach (no changes needed).

Testing

The API Framework supports tests. Use supertest with mocha. Don't install mocha globally.

you must use mocha BDD style (which is the default), within that, you can optionally use chai.

Code Format

All code must pass jslint. You may use "nomen: true".

Winner Only

Winner will create pull request against the main github repo in final fix phase and help merge with master. The changed files should be unix style, you can use dos2unix command to convert it before commiting.

Reviewer Responsiblities

Reviewers need to write/update Supertest tests for the these APIs.

Note: Tests must follow this standard - Tests Creation Guide.docx

There are three roles:

  • Accuracy - Tests the implementation on the accuracy of the results when using the component.
  • Failure - Tests the implementation's ability to handle bad data and incorrect usage.
  • Security - Tests the oauth, sql inject and other security related requirements.

Reviewer could send preferred role by Contact Manager after system selected the reviwer.

Copilot will assign the role to reviewers if reviewer didn't send the preferred role information.

Reviewer must create pull request from GitHub for the tests.

Virutal Machines (VMs)

VM specific information is found here: http://www.topcoder.com/wiki/display/docs/VM+Image+2.5

Upon registration as a submitter or reviewer you will need to request a VM based on the TopCoder systems image. The VM will be active through aggregation review, after which it will be terminated except for the winner's and the reviewers'. To request your image, please post in contest forum.

Before requesting your VM, you need to ensure that you have an SSH key created and in your member profile. Instructions to do so are here: http://www.topcoder.com/wiki/display/projects/Generate+SSH+Key, and instructions to connect afterwards are here: http://www.topcoder.com/wiki/display/projects/Connect+Using+SSH+Key.

Please realize that VMs are currently issued manually. We make every attempt to issue the VM as soon as it is requested, however, there may be delays of up to 12 hours depending on time of day when you request. We encourage everyone to request a VM as soon as possible to minimize any such delays.

Technology Overview

Documentation Provided

Please check the deployment guide in codebase for reference.



Final Submission Guidelines

 

Submission Deliverables

A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials

Below is an overview of the deliverables:

  • Source Code.
  • Deployment guide to configure and verify the application.

Final Submission

For each member, the final submission should be uploaded to the Online Review Tool.

ELIGIBLE EVENTS:

2014 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30038818