Skip to content

A real-time web chat application with instant messaging, responsive design, and a clean, modern interface.

License

MA1002643/vevox-real-time-chat-web-application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

πŸ’¬ VEVOX β€” Real-Time Chat Web Application

Transforming Conversations β€’ Igniting Instant Collaboration

MIT License last-commit Discussions stars issues

Built with the tools and technologies:

env-cmd Express MySQL JavaScript SQL HTML5 CSS3


Table of Contents


✨ Overview

Vevox – Real-Time Chat Web Application is a full-stack chat platform built on WebSockets for low-latency, bi-directional messaging. It provides real-time messaging, persistent MySQL-backed storage, and dynamic chatroom management for Q&A and group collaboration.


🎨 UI Preview

Chatroom Interface Real-Time Messaging
Chatroom interface screenshot Live chat in action GIF

πŸš€ Key Features

Feature Description
πŸ’¬ Real-Time Messaging (WebSocket) webSocketServer.js provides low-latency, bi-directional messaging between clients and the server.
πŸ§‘β€πŸ€β€πŸ§‘ Room & Session Management Dynamic room creation and joining, managed in server logic and persisted to the database.
πŸ—„οΈ Persistent MySQL Storage SQL migrations and test/database.sql define schemas for rooms, messages, and questions.
🧩 Separation of Concerns htmlServer.js, webSocketServer.js and index.js keep frontend serving, sockets and routing modular.
πŸ§ͺ Testing & Dev Utilities test/serverSide.js and Mocha-based tests support server behaviour validation and CI checks.
⚑ Low Latency & Broadcast Message broadcasting and efficient event routing for responsive chat UX.
πŸ”’ Optional TLS / Secure Config ca.pem and env-managed configs support local TLS testing and secure credentials handling.
🎨 Client Interface & Examples html/ and example chatroom html & styling/ provide sample UI, scripts and styles for integration.
🧰 npm Scripts & Tooling package.json exposes scripts for running servers, installing deps and running tests.
🌐 Cross-Platform Works across macOS, Windows and Linux; README includes quick install snippets for each platform.

πŸ“ Project Structure

└── vevox-real-time-chat-web-application/
β”œβ”€β”€ Vevox Chatroom/
β”‚   β”œβ”€β”€ example chatroom html & styling/
β”‚   β”‚   β”œβ”€β”€ newChatroom.html
β”‚   β”‚   └── newStyle.css
β”‚   β”œβ”€β”€ html/
β”‚   β”‚   β”œβ”€β”€ Chatroom.html
β”‚   β”‚   β”œβ”€β”€ clientSide.js
β”‚   β”‚   β”œβ”€β”€ Index.html
β”‚   β”‚   β”œβ”€β”€ MessageEvents.js
β”‚   β”‚   β”œβ”€β”€ Send.png
β”‚   β”‚   └── style.css
β”‚   β”œβ”€β”€ Migrations/
β”‚   β”‚   β”œβ”€β”€ 1-AddRoomName.sql
β”‚   β”‚   └── 2-AddQuestions.sql
β”‚   β”œβ”€β”€ test/
β”‚   β”‚   β”œβ”€β”€ database.sql
β”‚   β”‚   └── serverSide.js
β”‚   β”œβ”€β”€ htmlServer.js
β”‚   β”œβ”€β”€ index.js
β”‚   β”œβ”€β”€ package-lock.json
β”‚   β”œβ”€β”€ package.json
β”‚   └── webSocketServer.js
β”œβ”€β”€ .gitignore
β”œβ”€β”€ CODE_OF_CONDUCT.md
β”œβ”€β”€ CONTRIBUTING.md
β”œβ”€β”€ LICENSE
β”œβ”€β”€ README.md
└── SECURITY.md

πŸ“‘ Project Index

VEVOX-REAL-TIME-CHAT-WEB-APPLICATION/
__root__
.github
ISSUE_TEMPLATE
PULL_REQUEST_TEMPLATE
scripts
workflows
Vevox Chatroom
  • htmlServer.js β€” Serves static frontend assets for the chat UI.
  • index.js β€” Main server entrypoint that wires HTTP and WebSocket servers.
  • package-lock.json β€” Lockfile with exact dependency versions.
  • package.json β€” Npm manifest (dependencies & scripts).
  • webSocketServer.js β€” WebSocket server that manages connections, broadcasts and hooks.
example chatroom html & styling
  • newChatroom.html β€” Example chatroom page demonstrating layout and client-side integration.
  • newStyle.css β€” Example stylesheet for the sample chatroom.
html
Migrations
test

πŸš€ Getting Started

πŸ“‹ Prerequisites

This project requires the following dependencies:

  • Programming Language: JavaScript
  • Package Manager: Npm

Recommended local prerequisites:

  • Node.js (v14+ or v16+) β€” Runtime for the server and build tools.
  • npm β€” Package manager used for installing dependencies and running scripts.
  • MySQL (or compatible) β€” Database used for persistent storage of rooms, messages and questions.
  • Git β€” Recommended for version control when cloning and contributing to the project.
  • OpenSSL (optional) β€” Useful for generating local certs (e.g., ca.pem) if you test TLS locally.

Recommended versions & download links:

Quick install (examples)

macOS (Homebrew)

brew update
brew install node mysql git openssl
# Start MySQL (optional)
brew services start mysql

Windows (Chocolatey)

choco install nodejs-lts mysql git openssl -y
# After installing MySQL, run the MySQL installer or init steps as required

Debian / Ubuntu (apt β€” Node via NodeSource recommended)

sudo apt update
sudo apt install -y curl git mysql-server
# Install Node.js (example uses NodeSource for a modern Node LTS)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# Secure MySQL (optional interactive step)
sudo mysql_secure_installation

βš™οΈ Installation

Clone the repository, install dependencies and configure the database connection.

git clone https://github.com/MA1002643/vevox-real-time-chat-web-application.git
cd vevox-real-time-chat-web-application/Vevox\ Chatroom
npm install
# Configure your MySQL connection (see README Prerequisites) before starting the servers.

πŸ’» Usage

Start the application using the npm script. This will run the server(s) defined in package.json.

npm start

If the project uses separate scripts for the HTML server and WebSocket server, run the specific scripts (e.g. npm run start:html / npm run start:ws).

πŸ§ͺ Testing

Automated tests use Mocha. Run the test suite with:

npm test

For a focused run, you can run individual test files with Mocha directly, e.g.: npx mocha test/serverSide.js.


πŸŽ“ Learning Outcomes

  • Implemented real-time WebSocket communication from scratch.
  • Gained practical experience in server–client synchronisation using ws.
  • Strengthened understanding of asynchronous programming and event-driven architecture.
  • Built and tested full-stack Node.js systems with MySQL integration.
  • Applied modular software design principles for maintainability and scalability.

πŸ“ˆ Roadmap

  • Task 1: Implement secure authentication system with JWT and user roles (user, moderator, admin).
  • Task 2: Add real-time user presence, typing indicators, and message read receipts.
  • Task 3: Integrate file and media uploads (images, documents) with cloud storage (e.g., AWS S3).
  • Task 4: Implement message search, threaded replies, and emoji reactions for advanced chat interaction.
  • Task 5: Add Redis Pub/Sub for scalable WebSocket message distribution across multiple instances.
  • Task 6: Introduce database migrations and schema optimisation with Prisma or Knex.
  • Task 7: Strengthen security and rate limiting using Helmet, CORS, and payload validation.
  • Task 8: Expand testing coverage with integration, end-to-end (E2E), and performance tests.
  • Task 9: Implement PWA features (offline mode, message queue, push notifications) for modern UX.
  • Task 10: Add DevOps enhancements including Docker setup, CI/CD pipeline, and observability tools.

🀝 Contributors

MA1002643


✨ Acknowledgments

  • Inspired by collaborative tools such as Vevox and Slack.
  • Special thanks to contributors and Node.js open-source maintainers.
  • Created as part of an academic exploration of real-time systems architecture.

πŸ“œ License

This project is licensed under the MIT License. See the LICENSE file for full details.

Β© 2025 Muhammad Abdullah
Developed with πŸ’™ using Node.js & Express
Back to Top

About

A real-time web chat application with instant messaging, responsive design, and a clean, modern interface.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •