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 creating the basic Forum functionality integrated into the main app. This module is completely new and does't require Foundershare background from submitters. UI prototype and back-end are provided so your task is to build front-end controllers to tie everything up and ensure it is functional.

1.2    Challenge task overview

Existing codebase is provided at the assembly forum. Please see mom_api/src/forum folder. Also User.js model, UserService.js and UserController.js in mom_api/src were updated for forum needs. If any API you need is missing in the codebase please raise it at the forum.

For UI prototype please find frontend/app/forum folder.

Time constraint
This project has tight timeline so
1) the review phase is only 24 hours
2) we would like to avoid any timeline extension, please ask questions early

 

1.2.1    Scope

There must be a forum integrated into the desktop app. In the code structure please create the pages as separate module in frontend/app/forum folder.

Requirements.

1. A "Forum" menu item to left from FAQ must be added.

2. There will be 2 levels of content: 1) sections (created by Platform Admin), 2) threads within sections (created by any registered member).

3. Users will act at the forum with their F$ accounts. Their first and last names and avatar will be displayed as nicknames, but e-mail_lowered will be used as the unique id.

4. All roles will be able to create posts and update their own posts.

5. Only Platform Admin will be able to update/delete anyone's post.

6. Anonymous user will have access to forum in read-only mode. If they try to perform any action that requires authentication they will be redirected to login page and successful login they will be back to the intended action.

7. Against each member the following info must be displayed:

  • first name (always) and  last name (if public) - for champions
  • business name - for business owners
  • picture (logo if business owner)

8. Each Champion must be able to send a gift to any other Champion (provided that a sender has any gift cards). When a "Send Gift" button against a nickname is clicked user is redirected to his "My foundershares" page but with a name of the receipt. When he clicks the "Gift" button against a gift card he is navigated to the gifting page with the recipient's nickname pre-populated. The gift will be sent tho this account via e-mail.

9. Against business owner's name the total amount of gift cards sold is displayed.

10. When business name is clicked a popup with current active gift card offer must appear.

 
Amendments to UI prototype.
The following elements are not needed by now, so the UI for them is to be hidden.
1. Pagination.
2. "Mark all as read" and its comment.
3. Popup for requesting nickname.
4. Report a post/thread with "!" button.
5. Previos thread / Next thread.
 
 

1.2.2. API and DB update

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 and please provide a mechanism that will 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.

 

1.2.3. Non-functional

 The solution must be able to work under HTTPS and Elastic Load Balancer at Ubuntu with Nginx as a web server.
  

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).

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



Final Submission Guidelines

- Working Codebase (please do not submit diffs or patches)

- 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: 30052449