Epitalk — Real-time IRC-style Chat Application with Mercure and SSE logo

Epitalk — Real-time IRC-style Chat Application with Mercure and SSE

Real-time chat application inspired by the IRC protocol, enabling discussions in public or private channels directly from the browser, with instant updates via Mercure and Server-Sent Events.

View site

Project description

Contexte

Epitalk is a chat application inspired by classic IRC server behavior, allowing users to engage in real-time discussions within public channels or via private messages.

The project was developed as part of an academic assignment at Epitech, with the goal of designing a complete real-time messaging application accessible directly from a web browser.

Rather than using WebSockets as in most modern chat applications, the project leverages Mercure and Server-Sent Events (SSE) to explore an alternative approach for handling real-time communications between server and clients.

The application is fully functional and publicly accessible: users can simply choose a username and immediately join the chat.

Problème

Building a real-time messaging application presents several technical challenges:

  • synchronizing messages across multiple users and devices
  • managing the creation and administration of discussion channels
  • maintaining the state of connected users
  • transmitting events without page reloads.

Traditional solutions typically rely on WebSockets, but alternative architectures exist for handling real-time data streams.

The project’s objective was to design a modern chat application while experimenting with an architecture based on Mercure and Server-Sent Events.

Solution

Epitalk is built on a real-time architecture combining an AdonisJS backend and the Mercure protocol to broadcast events to clients.

Clients connect to an SSE stream to receive instant updates from the server: new messages, user arrivals, channel creation, or status changes.

The frontend interface is developed with Vue 3 and TypeScript, using Pinia for state management, delivering a smooth experience akin to modern chat applications.

Users can simply enter a username to join the server and start chatting immediately.

Fonctionnalités principales

  • instant connection to the chat via username
  • public discussion channels (channels)
  • private messaging between users
  • creation and deletion of channels
  • list of connected users in a channel
  • classic IRC commands (/join, /list, /users, /nick, /create, /delete, /msg, /leave)
  • integrated bot to handle commands
  • real-time updates for messages and events
  • online user detection
  • responsive interface compatible with mobile and desktop.

Résultats

Epitalk demonstrates the implementation of a complete real-time chat application using an architecture based on Mercure and Server-Sent Events.

The project highlights:

  • real-time event handling on client and server sides
  • instant data synchronization across multiple users
  • the design of a modern chat interface with Vue.js.

It also serves as a demonstration of an alternative architecture to WebSockets for applications requiring real-time updates.

Development environment

Vue.jsVue.js
TypeScriptTypeScript
PiniaPinia
SassSCSS
AdonisJSAdonisJS
MariaDBMariaDB
DockerDocker

Have a similar project? Let's talk

Looking for a freelance developer to bring your idea to life? Let's discuss your web, mobile or software project together.

Contact me