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.
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.
Currently, we have provided installation guide for different environments, like CentOS 6.x, Ubuntu, Mac OS and Windows. please check https://github.com/cloudspokes/tc-api/wiki
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.
Tunning ActionHero Self Documenting to Swagger
According to this issue, actionhero (version 7.6.x) has a self-documentation class: https://github.com/evantahler/actionHero/blob/master/initializers/documentation.js
it has a notion of self documenting of the defined actions. We'd like to explore the way to change that self documenting to be in swagger format, then we'd automagically have active docs for every action in actionhero.
For swagger format, please check Swagger RESTful API Documentation Specification.
For current situation, the action defintion may not have all information needed by the swagger format, you'd better investigate and define proper approach to get them defined, properly an additional swagger model file.
Web UI for APIs
with that implemented, we'd like to have a demo application similar as http://petstore.swagger.wordnik.com/, which we can test with all APIs.
For current situation, you just need to demonstrate we can call public APIs properly.
Please check Swagger UI for details. the ui will just be copying swaggers static ui,and serving it inside with a http server, like apache etc. By changing some settings on it, It can look to the right place to pull the json.
Heroku deployment
You can deploy the TC API to heroku, so your swagger UI can properly reference it and test it.
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.
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.
Final Submission Guidelines
Submission Deliverables
Below is an overview of the deliverables:
- Source Code, be sure to include the commit hash, that your submission based on , this should include two repository one for TC API, one for actionhero.
- Deployment guide to configure and verify the application.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.