A lightweight, private, self-hosted web chat application with real-time messaging, room PIN codes, and image sharing. Packaged for zero-dependency deployment as standalone single-file executables for Windows, macOS, and Linux.
- ⚡ Real-Time Messaging: Instant message delivery powered by Socket.io WebSockets.
- 🔑 5-Digit Room Codes: Create or join isolated rooms using simple PIN codes.
- 📸 Rich Media Sharing: Share images by uploading, dragging-and-dropping, or pasting directly from the clipboard (
Ctrl+V). - 📱 Mobile-First UI: Clean, responsive interface with dark theme and mobile device support.
- 📦 Single-File Executables: Built with
pkginto portable binaries—run on Windows, macOS, or Linux without installing Node.js or npm! - 🔒 Self-Hosted Privacy: Uploaded media is saved in a local
messager-uploadsdirectory in your home folder.
-
Clone the repository:
git clone https://github.com/Gilzone/messager.git cd messager -
Install dependencies:
npm install
-
Start the server:
node server.js
-
Open your browser and navigate to:
http://localhost:3002
You can package Messager into standalone executable files using pkg:
# Build for Windows (.exe)
npm run build:win
# Build for macOS
npm run build:mac
# Build for Linux
npm run build:linux
# Build all three platforms simultaneously
npm run build:allThe compiled binaries will be output to the dist/ folder:
dist/messager-win.exedist/messager-macdist/messager-linux
Run the generated binary directly on any system without installing dependencies!
messager/
├── server.js # Express server, Multer upload config & Socket.io logic
├── public/ # Client web application
│ ├── index.html # Join/Create room landing page
│ ├── room.html # Main chat room interface
│ ├── client.js # Socket.io client & image paste listener
│ └── style.css # Responsive dark theme styles
├── package.json # Dependencies and build targets
└── dist/ # Compiled standalone binaries (generated)
- Default Port:
3002(configurable viaPORTenvironment variable). - Uploaded Images: Stored locally in
~/messager-uploads/on the host machine. - Ephemeral Rooms: Rooms are created dynamically when users join and cleaned up when everyone leaves.
This project is licensed under the MIT License.