QuickChat Local is an easy-to-host and fun IRC-inspired chatroom app. Instantly spin up a server with friends and access the front-end using any web browser. Built using Node.JS, Socket.IO, TypeScript and MongoDB π§.
π‘οΈ Privacy-first: All data stays on your serverβno third-party cloud.
- π± Responsive design for all screen sizes
- π Real-time communication powered by WebSockets
- π User accounts, authentication and authorization
- πΎ Persistent message and chat history storage
- ποΈ Multiple rooms/channels for chats
- π₯ Whispering (send a private, burner message to another user)
- π’ Typing & presence indication
- π€ Command parsing and 8 commands
- βοΈ Modular and easy to configure source code for custom commands
- π¦ Sensible rate limits to prevent abuse
- π Secure hashing + salting of passwords using bcryptjs
- π± Easy to self-host in just a few steps (described below)
- First, clone the repository:
git clone https://github.com/pranavcl/quickchat-local- Enter the cloned repository and run
npm install:
cd quickchat-local
npm install- (Optional) QuickChat uses port 2000 for the app and 27017 for MongoDB (on localhost) by default. This can be changed by creating a
.envfile in the root directory(./quickchat-local) and defining the values ofPORTandDBlike so:
PORT=8080
DB=mongodb://<your mongo db>/quickchat
- (Optional) If you want 'Forgot Password' to work, you must set up the server to send emails. Define the
BASE_URL,EMAILHOST,SSLPORT,EMAILUSERandEMAILPASSenvironment variables in your.envfile like so:
BASE_URL=yourdomain.com:8080
EMAILHOST=smtp.yourdomain.com
SSLPORT=465 (or whatever the SSL port is on your mailserver)
EMAILUSER=example@yourdomain.com
EMAILPASS=(your email account's password)
- Finally, run the app using
npm:
npm run dev
All done! π
Published under the QuickChat Local license