Pittsburgh Pirates

pittsburgh-pirates-website

The Pittsburgh Pirates contact Gunner Technology in July 2012 with a great idea.

The strength coach, Brendon Huttmann, wanted to build an application that would allow him and his staff to evaluate and track the players’ recovery habits.

The application needed to work as a website, iPhone app and iPad app. And we needed to build it in four weeks.

To get this done, we leveraged Heroku to get a production and staging environment up and running within a day.

The staging environment was used for testing and client demonstrations while the production environment is where the application will actually get used.

For an application stack, we picked Ruby on Rails with some cool gems we hadn’t used before, including Rolify and Google Drive. For a full list of gems, check the end of this post.

pittsburgh-pirates-ipad-app

The most challenging parts of the application were developing the charts and exporting the spreadsheets to Google Drive.

For the charts, we used jQuery flot, which is a nice pure JavaScript graphing solution that make it easy to visualize JSON data in chart form.

Google Drive was a bit more complicated – mainly because it’s the first time we’ve used the API.

When a player completes an evaluation, the application writes it out as a csv file and then uploads that to Google Drive so the staff can easily track the players.

We added a leader board to make the evaluation process more competitive for the players and some simple Twitter integration for announcements.

We utilized Twitter Bootstrap to design a responsive application that works great on all devices.

And we did it in three weeks — not four.

Complete Ruby Gems List

  • actionmailer
  • actionpack
  • activemodel
  • activerecord
  • activeresource
  • activesupport
  • acts-as-list
  • addressable
  • arel
  • aws-sdk
  • bcrypt-ruby
  • bootstrap-will_paginate
  • builder
  • bundler
  • cancan
  • capybara
  • childprocess
  • chunky_png
  • cocaine
  • coffee-rails
  • coffee-script
  • coffee-script-source
  • commonjs
  • compass
  • compass-rails
  • daemons
  • devise
  • devise_invitable
  • diff-lcs
  • em-websocket
  • email_spec
  • erubis
  • eventmachine
  • excon
  • execjs
  • factory_girl
  • factory_girl_rails
  • faraday
  • ffi
  • fssm
  • geokit
  • geokit-rails3
  • google_drive
  • growl
  • guard
  • guard-bundler
  • guard-livereload
  • guard-rails
  • guard-rspec
  • has_scope
  • hashie
  • heroku
  • heroku-api
  • heroku-rails
  • hike
  • httparty
  • httpauth
  • i18n
  • inherited_resources
  • journey
  • jquery-rails
  • json
  • jwt
  • launchy
  • less
  • less-rails
  • libv8
  • libwebsocket
  • listen
  • mail
  • mime-types
  • modernizr-rails
  • multi_json
  • multi_xml
  • multipart-post
  • netrc
  • nokogiri
  • oauth
  • oauth2
  • omniauth
  • omniauth-facebook
  • omniauth-google-oauth2
  • omniauth-oauth
  • omniauth-oauth2
  • omniauth-twitter
  • orm_adapter
  • paperclip
  • pg
  • polyamorous
  • polyglot
  • rack
  • rack-cache
  • rack-ssl
  • rack-test
  • rails
  • rails-footnotes
  • rails_apps_composer
  • rails_autolink
  • railties
  • rake
  • rb-fchange
  • rb-fsevent
  • rb-inotify
  • rdoc
  • responders
  • rest-client
  • rolify
  • rspec
  • rspec-core
  • rspec-expectations
  • rspec-mocks
  • rspec-rails
  • rubygems-bundler
  • rubyzip
  • rvm
  • sass
  • sass-rails
  • selenium-webdriver
  • sendgrid
  • simple_form
  • simple_oauth
  • sprockets
  • sqlite3
  • squeel
  • therubyracer
  • thin
  • thor
  • tilt
  • treetop
  • twitter
  • twitter-bootstrap-rails
  • tzinfo
  • uglifier
  • uuidtools
  • warden
  • will_paginate
  • xpath