Challenge Overview
Project Overview
Create a web application on Heroku platform to act as a Connector bridge for Xero (www.xero.com) accounting service provider and middleware Message Broker. This POC will demonstrate how records created in Xero service can be automatically published to broker reflecting the data changes. We want to build simple POC to get existing records from Xero system and publish this data in JSON format to a queue/topic on Broker. In later stages we will add message consumers. The focus of this contest is to build a producer that can query Expense Receipts from Xero and post the data message to broker queue. For purposes of this contest app can post single receipt record to single message 1:1 mapping. Messages can be left in the queue and be removed by administrator action.
Competition Task Overview
For this project, the following features are required:
1. Use Heroku and Node.js as main platform to build this POC
2. Publisher: Poll data periodically from Xero app to get new records and publish them to broker queue.
- Web user interface with Connect To Xero button for Xero Public Application OAuth (use free trial Xero user to setup data).
- After OAuth, auto start the publisher. Show simple administrative web user interface to start/stop the publisher, one logout button, and one fixed height (scrollable) area to print readable log like information such as timestamp of poll/publish, request url/body and response code/body.
- Poll new receipts(JSON response) periodically (by interval config) from Xero REST API by last timestamp (last UpdateDateUTC from previous poll, use now UTC at first time).
- Publish message (formatted in JSON format as open text) to broker queue, one receipt one message.
- All user interface can be created using Angular or Backbone and Bootstrap. Keep it real simple, UX is not required and won't be evaluated, don't spend time on HTML/CSS, use Bootstrap is enough. show start/stop button enable/disable state correctly.
3. Broker Queue:
- Use heroku CloudAMQP add-on which based on RabitMQ
- Web UI to view data stored in the broker queue: Use existing CloudAMQP heroku dashboard to handle the queue on broker, Need document details in deployment guide.
4. As POC demo, many things simplified.
- The publisher can simply run in current web session only and no need continue running after user exist (logout or close). you can use client side javascript code in the web page to schedule/start/stop the publisher functions.
- Queue can be one single and fixed named (by config). Delete old queue when OAuth login each time and create new clean one for new test.
- Presume any test OAuth user is in same organization, not need handle other condition.
Deployment guide should be detailed about setup/config/validate the requirements.
Final Submission Guidelines
Technology Overview
-
Heroku
-
Node.js
-
CloudAMQP (RabitMQ Broker Addon)
-
Xero REST API and OAuth authentication
Documentation Provided
Architecture diagram
Xero API documentation - http://developer.xero.com/documentation/api/api-overview/
Heroku Developer Center - https://devcenter.heroku.com/