Challenge Overview

1.1    System Description

The client for this project built a platform that supports 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 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.

A brief desription of the workflow is attached. The platform is already live https://foundershare.com but requires various enhancement to satisfy all user needs. You can also check out the Sandbox at https://qa.foundershare.com/#/ to pass the end-to-end flow without paying with a real credit card (just a fake one number 4111 1111 1111 1111 is enough).

This challenge is responsible for adding some functional improvements and removing some bugs as well as selective refactoring.

 

1.2    Challenge task overview

Existing codebase is provided at the assembly forum.

 

1.2.1   MiscJan16 component

8 issues attached at the forum as "MiscJan16 requirements" document.

 

1.2.2   Statistics component

PMP-289 and PMP-295, attached at the forum as "FS_Statistics" document.

 

1.2.3   Selective refactoring 

  1. remove shopping cart and optimise GiftCardOfferService purchase methods: it makes perfect sense to merge "purchase" and "autoPurchase" methods into one after that; all code and HTML/CSS relevant to the shopping cart (including the code commented out temporarily) in API, front-end and mobile shall be removed.
  2. unify location of assets and 3rd party dependencies, remove duplicates
  3. split champion’s and business owner’s partials (html), e.g. MyInfo or FounderShares
  4. testing data generating script: - dates must be actual, they must be dynamic, not hard-coded

 

1.2.4 API and DB update (if any)

When/if you create new API and/or update DB schema please ensure that:

        -       API is secure and checks ID of the requesting client: no user (Individual or Business) shall have access to another user's data via API unless they are authorized. E.g. Business Owner shall not be able to view gift cards of another business calling API with  another business ID parameter.

         -      new API it is covered with unit tests.

-      updates to the DB schema are documented in a dedicated file

-      a migration script that will update the values of the existing database or fill new fields of the existing records with empty valid value. E.g. of being NULL, a numeric field shall be 0, string field - be "n/a", ZIP code - 00000 etc. In its output all processed records IDs must be enlisted. Script must be stored mom_api/migrate folder and its name format must be  migrate-dd.mm.yy-BriefAssemblyName .

 

1.2.5 Non-functional

The solution must be able to work under HTTPS and Elastic Load Balancer at Ubuntu with Nginx as a web server. If any additional nginx configuration parameters need to be set they have to be mentioned in deployment guide/verification doc.

 

1.2.6 Supported browsers (all latest versions)

- Internet Explorer at Windows,

- Chrome at Windows and MacOS,

- Safari at MacOS,

- Firefox at Windows, MacOS and Ubuntu,

- Mobile Safari and Mobile Chrome on tablets and smartphones.

  

1.3    Approval phase

- Since the codebase may be updated in parallel, the winner may be asked to merge the codebase (mostly integrating the code of this assembly into the main branch). Hence please make 1 commit  per each Jira ticket.

- Some minor UX/UI fixes may be requested by the client during approval phase.



Final Submission Guidelines

Submission Guidelines 

- Working Codebase

- Updated deployment guide

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

If anything deployment/configuration related needs to be added to the existing deployment guide, please do it in Edit mode (MS Word). The verification steps for this assembly must be provided in a separate file to avoid any confusion.

- The working app is available at https://www.foundershare.com/ (Production) and http://www.qa.foundershare.com/ (QA).

- The current codebase is posted at the forum.

 

Change log must be added to all JS files that you’ve updated. It must contain 

-version of the file;

-name of assembly;

-jira ticket id (if applicable).

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30052614