Mchat
mChat - Real-time messenger powered by Socket.IO
Install / Use
/learn @aseerkt/MchatREADME
mChat
Real-time messenger powered by Socket.IO

Pre requisites
- Node.js v20
- PNPM
- Docker (dragonflydb - 3.5GB memory / 4 cores)
Tech Stacks
- Frontend - React.js, TailwindCSS, React-Query
- Backend - Express, socket.io, PostgreSQL, DragonflyDB
Get Started
Run final build using docker compose
- Spin up the entire stack (DragonflyDB, PostgreSQL, React.js, Node.js)
pnpm docker:up
Make sure the ports
6379,5432and5000are not occupied
- Seed database
pnpm docker:db:seed
-
Go to http://localhost:5000
-
Stop docker containers
pnpm docker:down
Development
- Spin up PostgreSQL and DragonflyDB
docker compose up -d
Make sure the ports (postgres: 5432, dragonfly: 6379) are open for connection
- Install dependencies
pnpm i
- Run migrations
pnpm --filter server migration:run
- (Optional) Seed database
pnpm --filter server seed
- Run development server (web & server)
pnpm dev
- Go to http://localhost:3000
E2E testing
- Run playwright e2e tests
pnpm e2e:test
- Run playwright e2e tests in UI mode
pnpm --filter e2e test:ui
- Run playwright e2e test generator
pnpm --filter e2e test:codegen
Unit testing
- Run web unit tests
pnpm --filter web test
Features Roadmap
primary goals
- [x] sign up, login and logout
- [x] jwt user authentication/authorization
- [x] create group
- [x] join groups
- [x] realtime messaging
- [x] typing indicators
- [x] socket.io cluster adapter integration
- [x] dragonflydb implementation (typing users, online users)
- [x] member online status
- [x] realtime member list update
- [x] infinite scroll cursor pagination (messages/groups/members)
- [x] tanstack react-query integration
- [x] add members
- [x] realtime unread count
- [x] leave group, transfer ownership, delete group
- [x] delete group
- [x] alert component
- [x] direct message
- [x] delete message
- [x] reply to message
- [x] date separator
- [x] confirm dialog
- [x] message receipts
- [ ] e2e encryption
extras
- [x] playwright e2e tests for chat
- [x] switch to postgresql (support transaction)
- [x] minimal swagger ui
- [ ] keploy api test generation
- [ ] private groups - invite/add/delete members
- [ ] notifications
Authors
- Aseer KT - aseerkt.com
Related Skills
bluebubbles
349.7kUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
node-connect
349.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
349.7kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
frontend-design
109.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
