GothClient is an instant messaging app that aims to be lightweight, modern-looking and easy to use on any device. It has been in active development for over two years, and is currently deployed to the Internet in Private Early Release for live testing.
Despite being a work-in-progress, GothClient boasts a feature set comparable to many commercial products: it supports both group chats and private conversations, message replies, emoji reactions, delivery and read receipts, images and animated gifs, and more.
GothClient feels extremely fast and responsive. It is respectful of your bandwidth and system memory, making it performant even on lackluster hardware.
Many messaging apps overwhelm their users with complicated interfaces and menus-within-menus. GothClient does a lot of work under the hood to make its features intuitive, easy to understand and simple to use.
GothClient is also very easy to get started with. The full version runs right in your browser, so you can start messaging right away with no installation. GothClient is also available as an app, placing it conveniently on your desktop or home screen.
GothClient aims to provide a seamless experience on any device. It is designed from the ground up to look great at any screen size, respond to mouse or touch input, and adjust its layout on-the-fly to fit your screen.
GothClient is built to support multiple concurrent sessions. This means you can log in on both mobile and desktop at the same time and expect live updates and a consistent experience across devices.
GothClient features a modern, industry-standard security implementation, so your data is private in transit and at rest.
GothClient offers a full-featured contact management system, including the ability to block other users or delete them from your Contacts. You have full control over who can message you.
GothClient is in Private Early Release, which means it is currently deployed to the Internet for live testing, but available only to invitees. This is a major milestone that took over two years of development to reach.
I want to make GothClient available to anyone who wants to use it, but it is still a young project. An instant messaging app is an ambitious class of software to try to ship as a single developer, and live deployment presents a new set of challenges to work through. I want to ensure anyone can have a great experience with it before making more widely available.
GothClient is written in vanilla JavaScript for fine control over rendering and asynchronous resource management. DOM manipulation and animations are carefully sequenced with CSS and dynamic JS, making GothClient feel snappy and responsive.
GothClient works heavily with the browser's IndexedDB, Fetch and WebSocket APIs to wrangle cached, server-side and real-time network data respectively. Great care has been taken to ensure accurate message ordering, even in long-running or busy conversations.
Conversations, messages and contacts are stored on-device and are updated from the server incrementally. This results in fast load times because only new data is downloaded.
The heart of GothClient's networking stack is the GothServer, a WebSocket server and connection manager written from scratch in C. It handles incoming HTTP handshakes, negotiates a connection upgrade to WebSocket protocol, parses WebSocket frames at the bit level and routes them to the correct recipients.
The GothServer is purpose-built for fast memory management, connection lookups and raw bytedata-handling - it achieves sub-millisecond latency under normal load even on mediocre hardware. It's also very stable; its uptime during local development is measured in months, and Valgrind analysis finds no memory leaks during stress-testing.
Remote persistence, auth, file serving and permissions are managed by GothAPI, a Node/Express server built to interface with the database and filesystem. It uses a rotating JWT refresh token implementation which allows users to securely remain logged in on multiple devices.
This is the part of the system that prevents you from missing messages sent while you are offline, and it's the reason your messages, conversations and contacts are right where you expect them when you log in on a new device.
My name is Benjamin Todorski. I'm a software developer living in the Greater Toronto Area.
This project started as the server component of a small video game I wrote. The goal was to learn more about C, network programming and browser internals. By the time that initial server software was written, it was a bigger project than the game itself. I then had the (perhaps overambitious) idea that I could develop this software into a full-fledged messaging app with all the features I would like.
I felt that some messaging apps catered to power users at the expense of usability, and I wasn't alone - I talked to friends and family who found the tools they used for work confusing and bulkier than they needed to be. At the same time, I thought the available lightweight apps tended to lack polish and found their mobile support to be uneven or nonexistent.
I've tried to make GothClient the messaging app I want to use. It aims to be modern-looking and easy to use while also offering a highly performant, consistent experience on any device. It does not aim to be minimalistic - GothClient provides most of the features expected of a modern messaging app, and there are still features I would like to add. My goal is for GothClient to be a maintainable, long-term work of real production software.
If you have questions, email me at bentodorski@gmail.com
I am currently looking for software development work, so if you are an employer and think I could help build your company's next great product, reach out!