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