Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
JavaScript Ruby
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
public
.gitmodules
Gemfile
Gemfile.lock
Procfile
README.md
message.rb
server.rb
server_test.rb

README.md

GRUMPYCHAT

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

INSTALL

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)

RUN

Now run it:

$ REDISTOGO_URL="redis://foo:bar@something.redistogo.com:2345/" 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)

TODO:

  • 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.