Skip to content


Subversion checkout URL

You can clone with
Download ZIP
JavaScript Ruby
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


Simple chat server and client in ember.js, sinatra, and redis. Try it out on heroku here.


Pull in skeleton (lightweight ui framework) via git submodule

$ git submodule init && git submodule update

Uses bundler for deps

$ bundle install

You'll need redis for data persistence, you can run it with redistogo (service, has free options)


Now run it:

$ REDISTOGO_URL="redis://" bundle exec ruby server.rb

or, if you're lucky and have redis running and bundler all set up nicely

$ ruby server.rb

Open the client and talk amongst yourself.

$ open http://localhost:4567/index.html

Note that if you have other stuff in your redis database it might delete everything you love (thanks, Obama)


  • refactor index.html into separate .js files
  • better design
  • auto-create api keys if none provided and user has not been seen (cookies? local storage?)
  • keep general user state (by api key) -- send user state messages (like current location) instead of sending those as text -- user state api
  • scrolling seems busted
  • open this as discussion in tender with contents of chat as ? internal reply ? or visible to customer?
  • better/bigger staff ui for chats
  • javascript tests!
  • system messages visible to everyone, like closing chat or performing a public action
  • clean up widget code, removing Tender stuff
  • implement SSO decoder, requires tracking api keys<-->private encryption keys
  • link up urls particularly in location changes
  • persist chat open/closed state with a? cookie?
  • proactive open/close chat window (push-open from support)
  • "close chat" from user side notifies support with special message
  • aggressively timeout chat
  • support buttons for things like "location" or "search kb" that match up with commands
  • implement hooks to tender using api keys or w/e -- implement kb api search with inline pasting of url and snippet

TODONE recently:

  • redisize api keys
  • widgetize
  • redisize backend
  • ajax posting of messages
  • design
  • show actual parent url not current widget url when opening chat
Something went wrong with that request. Please try again.