Transforming Conversations β’ Igniting Instant Collaboration
Built with the tools and technologies:
- Overview
- UI Preview
- Key Features
- Project Structure
- Getting Started
- Learning Outcomes
- Roadmap
- Contributors
- Acknowledgments
- License
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.
| Chatroom Interface | Real-Time Messaging |
|---|---|
![]() |
![]() |
| 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. |
βββ 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.mdVEVOX-REAL-TIME-CHAT-WEB-APPLICATION/
__root__
- .gitignore β File.
- CODE_OF_CONDUCT.md β File.
- CONTRIBUTING.md β File.
- LICENSE β File.
- README.md β Project documentation, overview and setup instructions.
- SECURITY.md β File.
.github
- CODEOWNERS β File.
ISSUE_TEMPLATE
- bug_report.yml β File.
- config.yml β File.
- feature_request.yml β File.
PULL_REQUEST_TEMPLATE
- pull_request_template.yml β File.
scripts
- update-contributors.js β JavaScript file.
workflows
- ci.yml β File.
- update-contributors.yml β File.
- update-project-index.yml β File.
- update-project-structure.yml β File.
- update-tech-badges-single-repo.yml β File.
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
- Chatroom.html β Main chatroom UI page.
- clientSide.js β Client-side JS handling WebSocket events and UI updates.
- Index.html β Login/landing page for users.
- MessageEvents.js β Structured WebSocket message/event types.
- Send.png β File.
- style.css β Stylesheet for the HTML UI.
Migrations
- 1-AddRoomName.sql β Adds room name column/table changes.
- 2-AddQuestions.sql β Adds question support schema.
test
- database.sql β SQL for testing DB schemas and sample data.
- serverSide.js β Test helpers and scripts.
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:
- Node.js (recommended v16+ LTS): https://nodejs.org/
- npm (bundled with Node.js): https://docs.npmjs.com/
- MySQL (recommended v8+): https://dev.mysql.com/downloads/mysql/
- Git: https://git-scm.com/
- OpenSSL (optional): https://www.openssl.org/
Quick install (examples)
macOS (Homebrew)
brew update
brew install node mysql git openssl
# Start MySQL (optional)
brew services start mysqlWindows (Chocolatey)
choco install nodejs-lts mysql git openssl -y
# After installing MySQL, run the MySQL installer or init steps as requiredDebian / 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_installationClone 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.Start the application using the npm script. This will run the server(s) defined in package.json.
npm startIf 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).
Automated tests use Mocha. Run the test suite with:
npm testFor a focused run, you can run individual test files with Mocha directly, e.g.: npx mocha test/serverSide.js.
- 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.
-
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.
- 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.
This project is licensed under the MIT License. See the LICENSE file for full details.
Β© 2025 Muhammad Abdullah
Developed with π using Node.js & Express

