Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building Refer.me

Building Refer.me

Presented at Codeaholics HK on Wednesday 11th July 2012.

An account of building Refer.me as a project using;
Ruby, Rails, PostgreSQL, ElasticSearch, Memcache, Heroku, Amazon S3, Bing Image Search, Google Geocoding API, and a lot more.

Matthew Rudy Jacobs

July 11, 2012
Tweet

More Decks by Matthew Rudy Jacobs

Other Decks in Technology

Transcript

  1. refer.me • Ask - ask for referrals • Refer -

    suggest things to your friends • Save - collect your favourite things • Explore - find interesting things around you
  2. Ask • Ask a Question • Send it to your

    friends • Listen to their Suggestions
  3. Save • Collect your favourite things • Share them with

    your friends • Share them with the world
  4. Explore • Surf content • Dig down by location and

    category • Do some clever algorithmic stuff
  5. Avoiding Duplicates - Challenge • We just want one definitive

    version of “Carrots” • But maybe there is also a film called “Carrots” • Or a book • Or a restaurant
  6. Avoiding Duplicates - Solution • Crowd source it • Always

    offer an existing item first • Adding a new one is a last resort • Bubble the best content to the top
  7. High Quality Photos - Challenge • The design is very

    visual • We need good photos to pull it off • But we’ll lose users if its complicated
  8. High Quality Photos - Solution • Make it really easy

    to add an image • Search for the item’s name • Bing Image Search • Paste a URL and grab the images
  9. Good Content - Solution • Take control of content after

    its added • Incentivise Users to be Curators
  10. Everything has Location - Challenge • We want to do

    Geosearch • But some Items don’t have a location • Doing lat-long calculations everywhere isn’t ideal
  11. Everything has Location - Solution • Define a discrete set

    of “Localities” • Geocode everything; • Users, Items, Questions, News Feeds, IPs • Assign objects to their nearest locality
  12. Core Libraries • Devise - for authentication • Carrierwave -

    for uploads • Tire - for search • Delayed Job - for background workers • Rspec - for testing • Rails Admin - for CRUD
  13. The Front End • HAML • SASS • Coffeescript •

    Twitter Bootstrap • Backbone.js
  14. Other APIs • Bing Image Search API • Facebook Open

    Graph • Mailchimp’s MandrillApp