Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Project Overview

Funktional Tracker is a web-based application. It is a behavior tracking app marketed towards dentists who wish to improve their practice. Through a combination daily user inputs and data synchronization with office management software, the application lets small practice owners track and correlate desirable behaviors of their staff (hygienists, dentists, and front desk administrators) a.k.a. Key Behavioral Indicators (KBIs) with Key Performance Indicators (KPIs) that measure the success of their practice.

This assembly is responsible for implementing some new features for the application.

Competition Task Overview

In the current application, we are using Paypal for payment processing. We need to get rid of Paypal and switch to credit card processing in this challenge.

We'll be using http://www.firstdata.com/ecommerce/ for this.

Requirements

  1. Unless we have to, we don't want to store any credit card info in our own database. We might need to keep something in our database (encrypted) for recurring payments though.
  2. If we have to store credit card info in our database, we need this to be clearly explained in your submission. And we need to make sure everything is encrypted
  3. Please note the code needs to handle recurring payments (i.e. subscriptions) and it's likely the web services can't do this automatically. So we may need our own schedular to make sure this happens correctly.
  4. We will process payment with the initial credit card info during the signup process before the confirmation email is sent out. We will "store" that card for future charges (hopefully using some services so we don't have to store it ourselves, see #1-#3 for details). The card will be charged every month after that for the same amount. When the user updates the card info in the setup we just update the info of the card we will charge on the monthly basis but don't make a charge at that time.
  5. You must apply for a test account to test your code and make sure it functions properly. Also please clearly document how to switch to production account.
  6. We need a separate service to handle payments, it will run on a separate server with its own db, all credit card data (if any) and transaction data should be managed and stored by this service only. It needs to provide:
    • set credit card info to an account
    • cancel subscription
    • query to see if transactions were successful
    • charge now
    • set / change charge date when subscription starts
    • The main app will call  this service through a very locked down connection, only inbound requests from the app server for the API can get through and only outbound requests to the transaction API can come through. This way if our app site is hacked, credit card info is separate and the credit card info only leaves that server with calls to the transaction api and never goes back to the app.

Code base

You must ask for access to the specified gitlab repo and use the specified code branch as base for the challenge.

If backend bugs are found in the previous assembly these should be fixed too.

Winner Responsibility

Winner will very likely be asked to help with deployment on a VM.

Winner will also need to help with code merge (for example: create merge request).

Technology Overview

  • Java SE 6
  • Java EE 6
  • Sprint Framework 3.1.0
  • Hibernate 4.1.10
  • Log4j 1.2.17
  • Velocity 1.7
  • MySQL 5.6
  • Tomcat 7
  • Apache Commons Codec 1.7

Documentation Provided

See contest forum for provided documents.



Final Submission Guidelines

Submission Deliverables

A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials

Below is an overview of the deliverables:

  • Complete source code
  • A complete and detailed deployment documented explaining how to deploy the application including configuration information and verification info.
  • Make sure all junit tests still work
  • The Ant build script to create the jar files
  • Please exclude the lib and docs folder from your submission to reduce submission file size (include the new deployment guide though).

Final Submission

For each member, the final submission should be uploaded to the Online Review Tool.

ELIGIBLE EVENTS:

2015 topcoder Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30050474