DEV Community

Cover image for I built a LAN messenger in 1.5 years - Here's what I learned
WinXP655
WinXP655

Posted on

I built a LAN messenger in 1.5 years - Here's what I learned

When I started writing QuickChat, I was only 15.

First version was just 90 lines of pure console code.
Now - it is 900+ lines with a full GUI, custom protocol and Windows 2000 up to 11 support.

And project is still maintained.

Here's the story of entire project.


Beginning: P2P Messenger 1.0

P2P Messenger 1.0
Screenshot of P2P Messenger 1.0

The project originally was named "P2P Messenger". First version released on 24 May 2025.

It was very simple prototype:

  • Console
  • TCP pipe
  • No GUI, no names, no sounds
  • No error handling

Just two computers exchanging text.

P2P Messenger 1.0g.

P2P Messenger 1.0g
Screenshot of P2P Messenger 1.0g

The first graphical version appeared in May 2025.
But it was just a prototype, which gave starting point.

P2P Messenger 1.1

P2P Messenger 1.1
Screenshot of P2P Messenger 1.1

It was the first version with a real GUI. It was released on 27 May 2025

It had:

  • A proper window
  • Username based on computer name
  • User list

This version was no longer a prototype - it became a fully working messenger.

P2P Messenger 1.2 will be skipped because it was a minor update - replaced LISTBOX with EDIT

P2P Messenger 1.5

P2P Messenger 1.5
Screenshot of P2P Messenger 1.5

At this point, the project had grown into a proper messenger:

  • Sounds - join, leave, new message
  • Menu bar - Sesson, Help
  • Chat logging - now it can record chat and events
  • About dialog - every app needs at least one
  • Fonts - Tahoma for UI, Lucida Console for messages
  • Icon - because it became proper messenger, it got its icon.

Also it finally got:

  • Removing trailing whitespaces and newlines
  • Join and leave message

But there was one big problem - it lacked error handling at all.
As result, the app just would crash or continue as is.

P2P Messenger 2.0 also skipped because it was mostly empty update - just changed header to "winsock2.h" and nothing else.

Some early dates were lost during migration from one PC to another (NTFS -> FAT32 flash drive). The code survived. The timestamps didn't.

P2P Messenger 2.1 Beta

2.1 Beta was supposed to be the final, most complete version.

It had a lot of new features and new utility "Server Stop" (it existed only as part of P2P Messenger 2.1). Sounds good, right?

Actually, no - it was a mess.
The code was hard to navigate, features was on top of each other, error handling was inconsistent. Architecture was filled with a problems.

Every time I was adding something new, something else would be broken.

It worked, but barely.

Chat2

After P2P Messenger 2.1 Beta, I renamed the project to Chat2.
The only version was from 2 June 2025

It was intended to be a fresh start and make it more secure.

It had several changes:

  • Added security dialog - users now could accept or reject connection.
  • Fonts was simplified to just Tahoma.
  • Tried to make code cleaner.

But it didn't helped - code still was messy. Adding features didn't fixed broken foundation.

The Legacy: WinP2P and WinChat

After failed Chat2, the project was renamed again - WinP2P.

It had a lot of small updates:

  • Added error handling
  • Changed port from 8888 to 50000 (to avoid conflicts with HTTP proxies and servers)
  • Tried to implement tray notifications (failed)
  • Switched fully to WinSock 2.0

WinChat
Screenshot of WinChat

Then came WinChat - a much simplified version:

  • Removed user list
  • Removed window flashing (will return later)

But it didn't last long. After several hours it got its final name - QuickChat.

QuickChat Legacy (November 2025 - January 2026)

At this time, QuickChat was growing very fast:

November 2025:

  • Implementation of XOR
  • Window resizing

December 2025:

  • Buffer extended to 4096 characters
  • Added Close Connection (for server only)
  • Logging became optional
  • Millisecond precision in logs

January 2026:

  • XOR became optional
  • Protocol selection dialog
  • Sound, Always on Top, Window Flash toggle
  • Computer Info, Clear Chat

Legacy era ended on 6 January 2026.

QuickChat Modern (January 2026 - Present)

QuickChat
Screenshot of latest QuickChat

Just hours after Legacy ended, Modern began.

It added a lot of features:

  • Separated ports: QCS (65501), QC (65502)
  • QC/QCS protocol shows in title bar
  • Protocol got its marker: QC:PCNAME\0
  • Ping command: QCPING/QCPONG
  • Full Unicode support

But at that time, it was still private.

The first public release happened on 12 July 2026.
16 July 2026 - source code was opened.
18 July 2026 - security fixes.
26 July 2026 - build system update.


MicroChat - Minimalistic framework

MicroChat
Screenshot of MicroChat

Alongside QuickChat, I was building MicroChat - a lightweight framework based on the same engine.

It was QuickChat but without extras:

  • No XOR
  • No protocol
  • No sounds
  • No flash
  • TCP and basic GUI

Sometimes you don't need all the features - just need to exchange text over network.

Initial release was on 15 January 2026, but it still was private.
First public release was on 14 February 2026.
18 July 2026 - full Unicode and dropping Windows 9x support.
26 July 2026 - minor build system update.

MicroChat was also the testing ground for features later added to QuickChat.


What I learned

  1. Document everything - even if no one reads it, it still worth documenting
  2. Be honest - XOR is obfuscation, not encryption
  3. Trust yourself - you don't need permssion to start something

Links

QuickChat: https://github.com/WinXP655/quickchat
MicroChat: https://github.com/WinXP655/microchat
P2P Messenger (archive): https://github.com/WinXP655/p2pmsgr
QuickChat Full Changelog: CHANGELOG.md
MicroChat Full Changelog: CHANGELOG.md

Questions?

If you have questions, you're welcome to ask me.

Top comments (0)