Mad Chatter is a fun, easy to customize, group chat server. It's written in Ruby and utilizes HTML 5 Server Sent Events for fast communication.
The goal of Mad Chatter is to basically become an open-source version of Campfire, HipChat, or FlowDock...or at least use those as inspiration.
Mad Chatter is undergoing a complete rewrite. The original application can be found here. The purpose of this rewrite is to make it easier to integrate into a Rails application and make it easier to host in common hosting environments.
It has been rewritten as a Rails Engine which can be easily mounted in an existing Rails application. That way, users of your application can participate in group chat while using the same user account as your application. However, sharing user accounts has not yet been implemented.
The original purpose of Mad Chatter was to provide a standalone, group chat server, so I plan to continue to provide a way to easily deploy Mad Chatter in this manner. However, easy integration in a Rails app is the highest priority.
Since Mad Chatter makes use of HTTP streaming, you will need to use an application server that supports streaming, such as Thin, Unicorn, Rainbows!, or Puma. Add the following gems to your Gemfile:
gem 'thin'
gem 'mad_chatter', github: 'madchatter/mad_chatter'
If you are using Rails 3, you will also need to add the strong_parameters
gem.
Next, run these commands in your terminal:
bundle install
bundle exec rake mad_chatter:install:migrations
bundle exec rake db:migrate
Next, mount the Mad Chatter Rails Engine in your config/routes.rb:
Rails.application.routes.draw do
mount MadChatter::RailsEngine => "/chat"
end
Now you're ready to try out Mad Chatter. Start up your application and open your browser to the path you specified when mounting the Rails Engine.
$ bundle exec rails server --port 3000
$ open http://localhost:3000/chat
Here is a list of some of the features that have been implemented and are in the pipeline:
Create a Rails Engine.Use Server Sent Events instead of Web Sockets.Use Backbone.js for better JavaScript organization.Implement user login and registration.Ability to create public chat rooms.Ability to send messages to a chat room.
Want to help? Find a story to implement:
- Add SSE polyfill to support IE.
- Allow user login to use main Rails app user accounts.
- Display users currently in a room.
- Display status message when user enters or leaves a room.
- Ability to share code sample messages.
- Ability to share image messages from URL or upload.
- Ability to create private rooms.
- Ability to add users to your friends list to know when they are online.
- Implement GitHub and Travis CI callbacks.
- Ability to create a room that mirrors an IRC channel or Campfire room.
- Ability to consume a Mad Chatter messages from an IRC client instead of SSE.
- ...your idea here.
Here are some ideas of ways you can help out:
- Choose an item from the Roadmap and implement it. Be sure to leave a message in the issue tracker so we know you're working on it.
- Write tests for untested code.
- Improve our GitHub pages site: https://github.com/madchatter/madchatter.github.com
Created by Andrew Havens and released under the MIT license.