Show HN: I think I re-imagined IRC on mobile devices

9 points by Skywing ↗ HN
I have hosted my own IRC server, for a small community of coders and friends, since 1999. I never really strayed from using mirc or irssi, when I'm on a desktop or have a keyboard. On my iphone, the options were pretty lacking, though. The best true IRC client for iphone is one called IRC999, in my opinion. These clients all bugged me though because when the phone would go idle or shut off the wifi, the client disconnects.

Sometime in early December, an idea hit me about an IRC client that would function sort of like Twitter's mobile client. It'd defer the task of maintaining the IRC connection off to a server and it'd expose an HTTP-based API for the mobile app to use.

Anyway, so that's what I've done. I wrote a web server / IRC client that logs chat data to a database. Specifically formatted data is exposed via HTTP so that it can be easily consumed by a mobile client. I used node.js and couchdb for these two components. I also have the basics of a iphone app. The app can be configured to point to any URL / port to use as an API.

These components are all open source because I think that's important. Since the server component is just an IRC client, it could be connected to BNCs like ZNC, and should continue to function just the same. Might need some BNC-specific commands, though.

I just wanted to show this and see if others thought it was a neat idea. The project is still hacky but I'm actively building it.

Screenshots: http://imgur.com/a/yMWVs Client source: https://github.com/ryancole/pound-client Server source: https://github.com/ryancole/pound-gateway

9 comments

[ 4.9 ms ] story [ 31.3 ms ] thread
I'm using the irccloud iPhone app for this exact usage right now. The difference is that irccloud itself is a single point of failure that i can't fix if it goes offline.
screen + irssi? http is a less than ideal fit for messaging, especially when you're simply wrapping an existing protocol.
I use irssi, as well. The point of my app was probably lost in my wall of text, though. On the iPhone, an SSH client into screen and then irssi is pretty nasty. Now, on an iPad I might be able to put up with a nice, expensive SSH client, like the one from panic. Even then, that's a lot that you have to do just to check IRC. Also, the required overhead of a constant network connection at the mercy of the phone's wifi. I'm not wrapping a protocol or extending IRC in any way. I'm funneling IRC data into a database so that I can use it in a more natural way from a native iOS app. That's what's ideal for IRC, on a phone, in my opinion. Your mileage may very, though, and to each their own. Everybody likes their IRC their own way and I'm not even sure I'm 100% sold on this way yet, but I'm going to try it out. :)
right. I'm on android so not too familiar with the iphone's clients. It's just the simplest works-everywhere (mobile, desktop, laptop, etc.) scenario for me, and I'm in the same place, same windows, buffers.
also, fwiw, irssi itself can be a persistent proxy, so you could just implement a native client.
You could combine this with a bitlbee instance as your irc server, and then you could have unified mobile access to all your different chat networks.
Can you indicate how this would be different to ZNC with message replay and push notifications?
Push notifications are not necessarily what I'm looking for, as far as I know. I don't want to have to subscribe and be available to receive notifications. The whole point is to ask for X amount of messages since the last message I saw, for example. Now, the server side irc client component could connect to ZNC and function, I think. Although I have not tested that.