HackerChat is a real-time hackable collaboration platform for developers. It's the next-gen hybrid between IRC, Instant Messenger, Google Docs, and BaseCamp. 1st place winner of the PilotPhilly 2013 hackathon.
Live Demo: http://hackerchat.im
Feel free to submit your pull requests if you come up with a clever way to add functionality to HackerChat. From /pony commands to a list of online users - you name it! ;)
A note on using this
During the hackathon, the database URI and cookie session secret were shamelessly hardcoded into app.coffee.
This was fine because the repository was private. Now that this repo is public, those credentials live in a
secrets.coffee within the main repository root. If you want to actually run this thing locally, you'll need to create that
file and fill it out with the relevant data. It looks something like this:
module.exports = MONGO_URI = "mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]" COOKIE_SECRET = "hack the planet etc"
By the way, those hardcoded credentials were not removed from the commit log. The passwords were changed though, naturally. (But nice try!)
Heroku: Just add a remote and (force) push your changes. Simple as that!
OpenShift: Just add a remote and (force) push your changes. Simple as that!
AutoDeploy: Enable WebSockets, add a remote and push your changes. Simple as that!
Local Installation Guide
- Clone or download .zip and extract this repository
- Install node.js from http://nodejs.org
- Open up Terminal/Command Prompt and type in
npm install coffee-script -g(you may want to sudo on unix-based OSes)
- Sign up for an account on MongoLab and create a database at https://mongolab.com
- Create a file named
secrets.coffee(see above), fill in your database location and credentials, and place it in the repository root.
coffee app.coffeein Terminal/Command Prompt
- Navigate to http://127.0.0.1:3000 in your browser
- Ba-de-dum! You got it up and running!
- jade (HTML)
- coffee-script (JS)
- less-middleware (CSS)
Special thanks go the mentors and organizers of PilotPhilly, as well as the blood, sweat, and tears that were involved in putting all of these other wonderful open source projects together!
(NOTE: The commit logs doesn't represent precisely who did what - it just shows whose laptop the changes were commited on!)
The welcome page authenticates you using a name and a simple button.
Once you put in your name, you're brought to a screen that lists only the rooms you created, and gives you an option to either join an existing room, create a new room, or log out.
If a user has created a room:
Else if a user has NOT created a room:
If you choose to create a room, a random hash will be generated, and this is what an empty room looks like. You can share the room using the 3 sharing icons or by copying the URL. The room will be private to only those you choose to share the link with.
From there, other users can join your chat, and even modify the chat title in real-time. HTML formatting is supported...
wget example.com will bring up a sandboxed iframe of example.com. For example...
xkcd 10 will bring up an image the 10th issue of xkcd. For example...
This is where the chat gets cooler: you can type in
<hack> in the message bar and you'll gain access to a modal that will allow you to add functionality to the chat! Just click
Propagate Hack and your hack will be carried out across all of your users.
Last but not least, HackerChat is compatible across all modern browsers and devices, including an optimized version for mobile. This is what a chat room looks like on an iPhone 5, and if you resize your browser window's width AND height, you'll see what I mean!
- Desktop notifications
- Fix hack propagation bugs
- Rich media embeds (Embed.ly?)
A bunch of CSS3 animations created during the hackathon: https://gist.github.com/LabLayers/7397184