Challenge Overview
1. Project Overview
1.1 System Description
The customer is a company that does crowdsourcing challenges similar to topcoder, but has their own ways of doing things. They want to create a web application that will allow their customers to define and publish their own challenges.
This architecture designs the REST API and the database table schema for the web application.
This assembly implements the basic get and update API of the challenges. It also provides creates all the tables and provide all the OR mappings.
1.2 Competition Task Overview
A complete list of deliverables can be found in the TopCoder Assembly competition Tutorial at:
http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials
Note: Please read the whole Application Design Specification first. All the details not mentioned in this specification are provided in that document.
1.2.1 API in Scope
API is defined in the Swagger Spec.
The following 10 APIs are in scope:
- Get Challenge Detail
- Get Draft Challenge Detail
- Create New Challenges
- Create New Draft Challenge
- Save Draft Challenge
- Upload Challenge Image
- Upload Challenge Attachment
- Publish Challenge
- Add Supporting File
- Download File
1.2.2 API Implementation
The business logic of the APIs is briefly described ADS 1.1.
Assemblers should follow the description in ADS, and use their best discretion to implement the API.
1.2.3 Persistence
Persistence should be done via Spring JDBC Template.
1.2.4 Depended Tables and Functions
There are some existing tables and functions depended by this module, but not covered in the architecture.
During the assembly phase, they should be available.
1.3 Submission
- Source code
- Deployment guide to configure and verify the application.
1.4 Deployment
This architecture is responsible for API design and doesn’t cover the implementation. Generally the application will be packaged in WAR file and deployed in a JEE web server.
The application accesses the MySQL database to store the data.
The application accesses the existing encryption file system to fetch the files.
The application use external OAuth2.0 endpoints for authentication.
The application use normal file system to store the HELP artifacts.
1.4.1 Technology overview
- Java 1.7
- Spring Framework 4 http://www.springsource.org/
- Swagger 2 http://swagger.io/
- MySQL database http://dev.mysql.com/downloads/
1.5 Existing Documents
- Application Design Specification
- Assembly Specifications
- ERD
- Swagger Specs
Final Submission Guidelines
N/A