Challenge Overview
1. Project Overview
1.1 System Description
The client for this project has decided to build a platform that will support the sale, exchange, and redemption of gift cards between businesses and individuals. The goal of this platform is to help small businesses expand, using both web and mobile layouts, by giving them a simple way to raise capital and acquire new customers using gift cards.
The client needs to create a high quality platform that is easy-to-use even for business owners that don’t have a lot of technical expertise. Many business owners are not technologically sophisticated, so creating a platform that is simple to understand and navigate is also a top priority.
The main function of the platform will be to allow business to post virtual gift cards for sale on the platform. Individual users will be able to browse and buy these gift cards, as well as resell or trade gift cards they own. Using the mobile layout, users will be able to redeem their gift cards at the business, and the business will be able to process gift card redemption at their point of sale.
This assembly is responsible for implementing foudner shares management related functionalities of the front end, related angularJS service and integrate the REST APIs, including HTML5 pages, AngularJS Service and AngularJS controllers.
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.
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 Scope
This challenge should merge the two desktop and api codebase first and then implement following features:
For business owner:
- My Profile->My Founder$hares All features
- Founder$hare Posting All features (can be verified by open the home page and search the posted founder$hare)
- The share feature needs to be implemented too.
Controller:
- GiftCardOffersCtrl
- GiftCardOfferCtrl
Services:
- giftCardOfferService
- giftCardService
- userService
- businessService
1.2.2 General AngularJS Implementation Guide
The services are AngularJS services, they use $http service to communicate with the back end REST services.
During this assembly, a simple basic app.js may be implemented to run and test the services.
Some services require authorization, they expect a session token set in sessionStorage.sessionToken field, if not, they will call callback with error message.
Below we take the UserService.updateMyUserProfile as example, other services are implemented similarly.
angular.module('services').factory('userService',
['$http', '$log',
function ($http, $log) {
var service = {};
service.updateMyUserProfile = function(user, callback) {
$http({
// it may be 'GET', 'DELETE' etc for other REST services
method:'PUT',
// replace this url for other REST services
url: config.REST_SERVICE_BASE_URL + '/users/me',
// request body may be different for other REST services
data: JSON.stringify(user),
// authorization header depends on REST service,
// some needn't it,
// some needs other authorization header, e.g. the Login
headers: {
'Authorization': 'Bearer' + sessionStorage.sessionToken
}
}).success(function(data){
callback(null, data);
}).error(function(data, status, headers, config) {
callback(data);
});
}
... // other functions
return service;
}]);
1.2.3 Services Mapping
When implementing an AngularJS service method, see its TCUML method documentation, it provides the corresponding REST service.
Then open the REST_API_Specification.docx, locate the referred REST service. In the "Request Syntax" section, there is HTTP method and URL for the REST service. The "Request Headers" item contains authorization header details. And the Response section contains response details.
For the red methods in TCUML, these indicate new REST services, the details are just in the TCUML method documentation.
Assemblers should follow these REST contract, and follow above sample code to make the REST calls.
1.2.4 Business Owner - My Founder$hares
Controller: GiftCardOffersCtrl
This page manages gift card offers.
The Cancel button will trigger cancel function to cancel the offer.
The See Champions button will trigger the showChampions function.
1.2.5 Founder$hare Posting
Controller: GiftCardOfferCtrl
This page manages gift card offer.
When the "Save" or "Post Now" is clicked, it will call the save function to save the gift card offer.
Gift card offer has additional business telephone field, this should be shown.
The business data in this page are read-only. Business data are managed in founder profile page, not in this page.
1.2.6 Testing
Manual verification steps should be provided in deployment guide.
1.3 Technology overview
- HTML5
- JavaScript
- jQuery 1.11.0 http://jquery.com/
- AngularJS 1.2.28 https://angularjs.org/
- jsqrcode https://github.com/LazarSoft/jsqrcode
- ShareThis http://www.sharethis.com/
- NVD3 http://nvd3.org/
- Wordpress 4.1 https://wordpress.org/
- Google Maps JavaScript API v3 https://developers.google.com/maps/documentation/javascript
1.4 Existing Documents
- Class Diagrams
- Sequence Diagrams
- Application Design Specification
- Assembly Specification
Final Submission Guidelines
- Source code and configuration files.
- Deployment guide to configure and verify the application