Tech Stack: Java

An Internet Relay Chat (IRC) server implementation following RFC 1459 & RFC 2812 specifications. JIRC provides real-time communication through channels and private messaging.

Resource Link
Source Code github.com/zachbroad/jirc

Motivation#

I am just young enough to remember IRC being a popular way to communicate online in the late 90s and early 2000s, only having briefly used it as a kid.

IRC was the backbone of early internet culture, fostering communities around everything from programming and gaming to creative writing and tech support.

Nowadays with the rise of Discord, Slack, and other modern chat applications, IRC has sadly fallen out of favor, but it’s still an interesting protocol.


Implementation#

By referencing the RFC 1459 and RFC 2812 specifications, I was able to implement a basic IRC server with the following features:

Core Features#

  • Multi-threaded architecture supporting concurrent client connections
  • Channel creation and management system
  • Message broadcasting to channels or specific clients
  • Direct messaging between users
  • Server configuration with hostname, port, name, and password

Implemented Commands#

  • User Management: AWAY, ISON, NICK, USER, WHO, WHOIS
  • Channel Operations: INVITE, JOIN, KICK, LIST, MODE, NAMES, PART, TOPIC
  • Messaging: NOTICE, PRIVMSG
  • Server Control: DIE, INFO, MOTD, PING, QUIT, RESTART, TIME
  • Operator Commands: KILL, OPER

Planned Features#

  • Additional RFC commands (ADMIN, PASS, PONG, REHASH, etc.)
  • Server-to-server communication commands
  • User authentication and NickServ integration
  • Persistent data storage
  • Configuration file support
  • Message encryption
  • Administrative web interface
  • Enhanced logging system

View on GitHub