Salesforce to Github integration in NodeJS

Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Appirio uses a Salesforce based system called CMC to manage epics, stories and issues.  The Serenity project (new topcoder challegne engine) has been managing all of its tasks in Github (https://github.com/appirio-tech/lc1-project).  This has made integration to our planning and QA process difficult for the rest of the team.  We would like to continue to work individual issues in Github but also track progress in CMC.

To accomplish this goal, we have decided to create stories and issues in CMC, then push relevant issues to Github.

The flow of the app should work like this.

  1. Visit web page.
  2. Authenticate to Salesforce and Github
  3. Select which Github project to use
  4. Set filters for searching Salesforce objects (see below)
  5. Click search
  6. Shown a list of Salesforce objects from given criteria
  7. Select which objects to push to Github
  8. Click Push to Github
    1. Update external id field in Salesforce (see below for field)
    2. See below for field mapping

Custom Salesforce Objects

Story

  • name: CMC_Story
  • Fields:
    • External_Id__c:  This will be the Github issue id.  If this field is filled out, then it can not be pushed to Github again.
    • Priority__c: a label in Github.
      • ���Picklist field:
        • ���P1
        • P2
        • P3
        • P4
        • P5
    • Description__c:  The body of the issue
    • Name: This is the Salesforce autonumber S-{0}.  This would be pre-pended to the Github title.
    • Status__c: This is the status of the issue.  This should be a filterable item.
      • ���Picklist field:
        • ���Requested
          Backlog
          Planned
          In Progress
          Blocked
          Ready for Tech Review
          Dev Complete
          Ready for QA
          QA In Progress
          QA Complete
          Ready for UAT
          UAT Complete
          Complete
          Cancelled
    • Story_Name__c: The title of the issues.
    • Status_Notes__c: Text Area(255).  Filter when it equals "push to Github".  Once the filed is pushed to Github, update this field with the link to the Github issue.

Issue

  • name: CMC_Issue
  • Fields
    • External_Id__c:  This will be the Github issue id.  If this field is filled out, then it can not be pushed to Github again.
    • Priority__c: a label in Github.
      • ���Picklist field:
        • ���P1
        • P2
        • P3
        • P4
        • P5
    • Description__c:  The body of the issue
    • Name: This is the salesforce autonumber I-{0}.  This would be pre-pended to the github title.
    • Status__c: This is the status of the issue.  This should be a filterable item.
      • ���Picklist field:
        • New
          Backlog
          Planned
          In Progress
          Blocked
          Ready for Tech Review
          Dev Complete
          Ready for QA
          QA In Progress
          QA Complete
          Ready for UAT
          UAT Complete
          Complete
          As Designed
          Duplicate
          Unable to Reproduce
          Reopened
    • Story_Name__c: The title of the issues.
    • Status_Notes__c: Text Area(255).  Filter when it equals "push to Github".  Once the filed is pushed to Github, update this field with the link to the Github issue.

Requirements

  • The Body of the Github issue should be pre-pended with: "CMC: {Link to Salesforce object}"
  • Please make the application in NodeJS and AngularJS.
  • Please make the application deployable to Heroku.
  • Please provide documentation of all configuration
  • Please provide documentation of setup and deployment


Final Submission Guidelines

Please submit your code as a zip file.  Please do not include the node_modules folder.

ELIGIBLE EVENTS:

2015 topcoder Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30048379