Challenge Overview
1. Project Overview
Hercules would like to build a new dashboard that will render certain aspects of the consumer's account such as Facebook, Pandora, Sports, etc... to use their SIG API and also add the new functionality for photos. Needs to allow the consumer to edit their information.
CONSUMER PROFILE PLATFORM WEB APPLICATION: Right now there is a version that users can go to and see certain aspects of their account (dashboard, FB, Pandora, Sports, RSS reader, Weather, Stocks, Horoscopes). Aggregate and update their settings. This version is connected directly to their databases.
The new version will Integrate client's public API (SIG) it's the API that feeds all of this. It will also add a new function area for Photos in addition to replicating the functionality for the other areas (facebook, Pandora, etc.). On the X1 boxes, they can actually see the apps.
Here are client's requirements:
- We want a new dashboard to use the SIG API and add functionality for photos.
- We want to be able to add new modules moving forward and build onto it.
The SIG API is all of the user preferences (the third party stuff is one piece of it). The SIG API is public and members can easily access it.
2. Competition Task Overview
In Phase 1 of this project, we have completed the major requirements and now we need to add an additional service to the application.
It's integrate the ADS (Application Discovery Service) which calls the user's devices. The ADS spec is attached to this contest.
Essentially when a user logs into his account, he is presented with his application settings. The SIG API (the API we are integrating now with the existing project) gets the devices and then you would call ADS to get the applications for those devices.
This is a direct-to-assembly architecture contest.
Final Submission Guidelines
Development Deployment Requirement
These are the options we pass to libdeploy, our Fabric deployment tool, when we deploy Rails apps. This should reveal info on what our environment looks like.
host_os='redhat',
host_service='tomcat6',
app_name='ROOT',
app_port=8080,
wars_dir='/usr/share/tomcat6/WARs',
service_dir='/usr/share/tomcat6',
health_check='/_status',
service_params='-Xmx4g \-Xms4g \-XX:MaxPermSize=256m \-XX:+UseConcMarkSweepGC \-XX:+HeapDumpOnOutOfMemoryError',
app_start_timeout=120
Other notes:
- We run on jRuby 1.6.5.1
- We leverage memcached, conditional GET requests, and Akamai for cacheing
- We use warbler (the ruby Gem) to bundle the Rails application as a War
- We use Rspec for Ruby testing
- We use Jasmine for JavaScript testing
- We use ERB for Ruby templating
- We use SASS and Compass for stylesheet authoring
- We precompile, compress, and concatenate assets with the YUI compressor at build time via a Rake task.
- Our build process produces two artifacts: a war and a chrome_assets.tar.gz
- The war is deployed to Tomcat behind Apache; the chrome_assets.tar.gz is exploded in the Apache DocumentRoot and served from SOME_CHROME_CDN_URL
- We add a 'Fingerprint' response header that reports host name, RAILS_ENV, the Ruby thread ID, and a timestamp like so: nozi03x-pxc2.cimops.net_p