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.
- Visit web page.
- Authenticate to Salesforce and Github
- Select which Github project to use
- Set filters for searching Salesforce objects (see below)
- Click search
- Shown a list of Salesforce objects from given criteria
- Select which objects to push to Github
- Click Push to Github
- Update external id field in Salesforce (see below for field)
- 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
- ���Picklist field:
- 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
- ���Requested
- ���Picklist field:
- 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
- ���Picklist field:
- 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
- New
- ���Picklist field:
- 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.