A real-time chat application built with Node.js, Express, Socket.IO, and RavenDB.
- User Authentication: Register and login with email/password
- Guest Access: Join public rooms as a guest with a username
- Public & Private Rooms: Create public or private chat rooms
- Real-time Messaging: Send and receive messages instantly
- Media Support: Share images, videos, audio, and documents
- Message Search: Search through chat history
- Room Management: Create, edit, delete, and filter rooms
- QR Code Sharing: Share room links via QR code
- Backend: Node.js, Express.js
- Real-time: Socket.IO
- Database: RavenDB
- Frontend: EJS, Bootstrap 5, jQuery
- Session: express-session
- File Upload: Multer
-
Clone the repository
git clone https://github.com/resham57/Real-Time-Messaging-System.git cd Real-Time-Messaging-System -
Install dependencies
npm install
-
Configure environment
cp .env.example .env
Update the
.envfile with your RavenDB connection details. -
Start the application
# Development mode npm run dev # Production mode npm start
-
Access the application
http://localhost:3000
APP_PORT- Server port (default: 3000)APP_SECRET- Session secret keyRAVENDB_URL- RavenDB server URLRAVENDB_DATABASE- RavenDB database nameMESSAGE_LIMIT- Rate limit for messages per minute (default: 20)MEDIA_LIMIT- Rate limit for media uploads per minute (default: 5)
- Register an account or login
- Create up to 5 chat rooms (public or private)
- Invite others to private rooms via email
- Search and filter your rooms
- Share room links via QR code
- Join public rooms without registration
- Choose a unique username
- Send text messages and media files
MIT