Lax is an IRC client built with React and Electron. Shortly after its 6th birthday, it received its 100th star on GitHub. It's not a huge milestone, but it's a good excuse to write about the project.
Back in 2015, I discovered React and was looking for a project to stretch my understanding. Around that time, I downloaded a few IRC clients and didn't like any of them. This seemed like an opportunity to explore some new technologies while creating something I'd like to use.
The first commit shows its humble beginnings. It only handles a single IRC connection. The styles are in a single CSS file. It uses node-webkit
instead of electron
and flux
instead of redux
. It looks like, even with babel
, I was calling React.createClass
instead of defining JS classes. It was a different world back then.
Here's the earliest pic I could find.
I don't work on Lax with any consistency. Occasionally, I get inspired to add features or update the tech under the hood. For example, I started toying with Elm in 2017. I had written a lot of code using Redux, but using Elm's type system allowed me to really understand Redux. Later that year, I overhauled the entire project introducing Redux, testing reducers with Jest, and using Flow's type system. That pull request laid the foundation to handle multiple connections, which were introduced a few months later.
That work is all generally still in place today. Here's a screenshot at that time.
Around that time, more people started to pay attention to the project. These technologies are all buzzwords, so the traffic came naturally from Google searches. I started receiving issues and pull requests from other people, and one guy added dark mode. These moments felt motivating.
But overall, the repo serves more as a learning environment than anything, and the app itself suffers as a result. Longstanding issues, like recovering from network disconnection, stay open. The build system could use another overhaul – some shortcomings seen in that first commit are still in the app today. While much could be improved, I usually find myself chatting on Slack and Discord instead.
The future of Lax is uncertain! I'm intrigued by Tauri, but this issue lays out a plan that involves more stable technologies. Open issues include some bugs and many new features. If you're interested in any of this or have thoughts to share, write a new issue, and I'll be sure to respond. And please, give the repo a star – it would sure be embarrassing if it fell below 100!