

Show HN: A browser-based IRC client built on Node.js – first Node project - _redwire
https://airchatter.net/

======
euank
Other browser-based irc clients written in nodejs:

KiwiIRC - Probably the most used of them.
[https://github.com/prawnsalad/KiwiIRC](https://github.com/prawnsalad/KiwiIRC)

Subway - I've been following this one for a bit because it look promising.
It's nice.
[https://github.com/thedjpetersen/subway](https://github.com/thedjpetersen/subway)

nirc - This one is pretty simple and I'd say a little less polished than
yours, but still does a lot of things right.
[https://github.com/cjstewart88/nirc](https://github.com/cjstewart88/nirc)

If anyone knows of others, I'm interested.

I'd also like to plug glowing-bear ([https://glowing-bear.github.io/glowing-
bear/](https://glowing-bear.github.io/glowing-bear/)) since it's a rather cool
project. It's an entirely static html5 frontend to weechat.

~~~
tjohns
It's not based on Node.js, but CIRC is worth mentioning because it's pure JS
IRC client that doesn't need a relay server:

[http://flackr.github.io/circ/](http://flackr.github.io/circ/)
[https://github.com/flackr/circ](https://github.com/flackr/circ)

It uses the chrome.socket APIs to connect directly to the IRC network.

~~~
icebraining
And about a decade before that we had Chatzilla:
[http://en.wikipedia.org/wiki/ChatZilla](http://en.wikipedia.org/wiki/ChatZilla)

------
erming
Oh, I've made one too!
[http://github.com/erming/shout](http://github.com/erming/shout)

It's really stable (been using it for weeks without restarting) and I've even
implemented a mobile interface:
[https://db.tt/fYTswBwO](https://db.tt/fYTswBwO)

You'll find the install instructions in the README (or just `npm install
shout`). No configuration required. Should take under a minute to get it
running if you already have NPM.

It's open source. Feel free to try it, browse the code and leave some
feedback. If you want to work with me, it's open for contributions!

~~~
silversmith
Looks really nice - especially the part where multiple networks are in the
very first screenshot!

How are you handling persistence tho? Straight up in-memory storage?

~~~
erming
Yes, right now it's only in memory.

I've been thinking about storing the logs in .txt-files (with the option to
turn this feature on/off). This way, I could let the user download the logs
directly via the browser.

~~~
hexscrews
I'm not familiar with how difficult it may be, so please tell me if I'm off
base. But couldn't you offer the option for either text logs or HTML logs? I
know that when given the option, I opt for HTML logs for the ease of reading.

~~~
erming
Hi! Didn't see your question until now.

While I haven't implemented the logging yet, I'm thinking about storing them
in the JSON-format. Messages are already stored as JavaScript object, so I
think this is my best option. And exporting them as .txt on demand, shouldn't
be a problem either.

Thank you for the feedback

------
staller
It might be a stretch to call it "world's most modern" IRC client when it
looks like a pretty generic client.

I really think at some point the word modern just won't make sense in the same
sentence as "IRC".

I think as your first node project it looks pretty cool though.

~~~
_redwire
> It might be a stretch to call it "world's most modern" IRC client when it
> looks like a pretty generic client. Haha, I definitely agree. I'm just
> trying hard to pitch it to people who might be less familiar with other
> clients. The word "modern" means a lot to people, it turns out.

> I think as your first node project it looks pretty cool though. Thanks so
> much!

~~~
owenversteeg
You might want to add two newlines instead of one for better readability in
your comment.

------
yaddayadda
@ _redwire

It'd be nice to see a functional demo site.

It'd also be nice to have a direct link to the github repository -
[https://github.com/redwire/aIRChat](https://github.com/redwire/aIRChat)

Why zip instead of npm distribution?

~~~
_redwire
Thanks for the suggestions! I used to have aIRChat running as a web service
straight off the VPS hosting its official website, but I encountered a lot of
trouble when people started connecting over it, as many IRC networks
apparently limit the number of connections allowed from a single source.
Having exceptions made for each network would have been a considerable
challenge. There is a link to the repository under the "contributing" section
of the main site, but you're definitely right that I should have something
more obvious. I'll do that! I'm really not familiar with how NPM works, and I
wanted to try to make the distribution as simple as possible for all users on
all OSs, so I figured distributing everything the user needs in one package
and providing an install script was the best I could do with my limited
knowledge of package distribution. I'm definitely open to ideas about more
convenient methods!

~~~
nawitus
It's easy to publish a NPM package. First, create package.json by googling
"package.json cheatsheet". Then type npm publish and you're done.

------
aroch
Any reason why airchatter.net and www.airchatter.net point to different IP's.

Also, your SSL is a little messy and you're vulnerable to Heartbleed:
[https://www.ssllabs.com/ssltest/analyze.html?d=airchatter.ne...](https://www.ssllabs.com/ssltest/analyze.html?d=airchatter.net)

~~~
iancarroll
CCS != Heartbleed

------
martindale
Nice! We need to have better UX around getting connected to underlying IRC
networks. How doe this compare to Subway [1]?

[1]:
[https://github.com/thedjpetersen/subway](https://github.com/thedjpetersen/subway)

------
jmg_
While not quite finished, there's also Slate
([https://github.com/slate/slate](https://github.com/slate/slate)) by
Holowaychuk

------
general_failure
OT: but I need something like this but a client that sits in the background.
Basically like quassel-core but that thing is written in C++ and is a hassle
to install and configure.

~~~
glomph
znc?

~~~
general_failure
[http://wiki.znc.in/ZNC](http://wiki.znc.in/ZNC)

Looks like thus is c++ as well.

------
gghh
I didn't know of an #https-everywhere channel. It doesn't seem to be on
Freenode. Is it really an active channel or just there in the screenshot for
the demo?

~~~
_redwire
aIRChat doesn't categorize channels by server (I'm open to ideas of having it
do so), for the sake of simply using Foundation's vertical tabs. #https-
everywhere is the developer discussion channel on OFTC.

------
nawitus
The problem with most IRC software is that they're not always online. The
usual solution is irssi, which is what I've used for the last 6 years.

~~~
hsx
If you mean not always connected to IRC and that your solution is to run Irssi
in a screen/tmux session on a server somewhere, it's considerably easier to
use ZNC.

[http://wiki.znc.in/ZNC](http://wiki.znc.in/ZNC)

~~~
nawitus
I don't remember trying ZNC, but the problem with all the irc bouncers I've
used before was that it wasn't neatly integrated to the irc client. If you're
using screen+irssi, everything works exactly like you would expect. With irc
bouncers you have various issues, e.g. when you connect all the channels need
to send 2000+ rows of backlog for every channel, which is pretty inefficient.

~~~
hsx
What!? That's completely the opposite to my experience! Essentially, after
setting up ZNC to your liking, all you have to do in your client is change the
irc server from say, irc.freenode.net to znc.yourserver.com:port and add a
password for the server, username/freenode:password, done!

I thought it'd be annoying having to add servers through the ZNC interface
(either web or SSH) but it automatically adds/removes them when you
join/leave.

In terms of buffers, I generally don't have it set to 2000+, normally around
100 max. I'll just go through the logs if I really need to catch up.

------
BorisMelnik
sweet, this is really clean and runs really well. - my Mom is 67 and has been
on IRC for 20+ years using mIRC for most of those. I bet if this got packaged
so that users like her could one click "install" it they could grab a huge
portion of the user base.

~~~
_redwire
I really want to make the installation and usage as simple as possible-
simplicity is my #1 priority! If you ever get her to try it out, I'd love if
you'd email me to tell me how it went! You can find my email on my github
profile.

------
seanewest
I wish the "user has left the channel" noise was off by default in IRC
clients.

------
general_failure
Why does it need sudo to run on port 3000?

~~~
_redwire
It shouldn't. The install script copies files that you need super user privs
to get at (specifically, /usr/lib), but after it's installed, you should be
able to run the aIRChat server (node Content/app.js) without sudo.

~~~
general_failure
Awesome thanks. I really like it.

~~~
_redwire
I'm really glad that you're liking it! :)

