A production-ready, multi-tenant helpdesk platform where companies can manage customer tickets, chat in real-time, and analyze performance β all with subscription-based billing.
- Frontend: https://support-flow-gamma.vercel.app
- Backend API: https://supportflow-7avd.onrender.com/health
| Role | Password | |
|---|---|---|
| Admin | amitsir1355@gmail.com | 123456 |
β οΈ Note: Backend runs on Render's free tier β the first request may take 30-50 seconds (cold start). This is normal.
SupportFlow is a multi-tenant SaaS helpdesk built with the MERN stack. Companies can sign up, create their own isolated workspace, invite agents, and manage customer support tickets β all in real time.
Every workspace is fully isolated: users, tickets, messages, and analytics are scoped to the workspace, ensuring enterprise-grade data privacy.
- π’ Multi-tenant architecture β isolated workspaces per company
- π JWT authentication with refresh token rotation
- π₯ Role-based access control (Admin, Agent, Customer)
- π« Complete ticket lifecycle β create, assign, update, resolve
- π¬ Real-time chat with Socket.io (public replies + internal notes)
- π§ Email notifications via Nodemailer (ticket created, assigned, new reply)
- β° SLA tracking with breach alerts (BullMQ + Redis)
- π Analytics dashboard with charts (Recharts)
- π³ Stripe subscription billing with plan-based limits
- π File uploads via Cloudinary
- π Search, filter, pagination
- π¨ Modern UI with TailwindCSS
- π± Fully responsive β mobile, tablet, and desktop
- π³ Docker + GitHub Actions CI/CD
- Sign up β Create your workspace with your company name
- Invite agents β Add team members to handle tickets
- Monitor tickets β Track all customer tickets in your workspace
- Assign tickets β Route tickets to the right agent
- Chat in real-time β Reply to customers instantly with live chat
- Track SLA β Get alerts before deadlines breach
- View analytics β Analyze ticket trends, agent performance, response times
- Manage billing β Upgrade plans via Stripe integration
- View assigned tickets β See all tickets routed to you
- Reply to customers β Send public replies visible to customers
- Add internal notes β Collaborate with team (customers can't see these)
- Update status β Mark tickets as Open β Pending β Resolved β Closed
- View performance β Track your metrics on analytics dashboard
- Raise a ticket β Describe your issue in detail
- Chat in real-time β Get instant replies from support agents
- Track status β See real-time updates on your tickets
- Attach files β Share screenshots or documents
- Get email updates β Notifications on every reply
| Login | Register |
|---|---|
![]() |
![]() |
Ticket Detail with Real-time Chat:

SupportFlow is fully responsive β works seamlessly across all devices.
Mobile Features:
- π± Slide-in sidebar drawer with overlay
- π Touch-friendly tap targets (min 44px)
- π Responsive charts that adapt to screen size
- π¨ Adaptive grid layouts (1-col mobile β 4-col desktop)
- β¨ Fluid typography that scales with viewport
- π« Body scroll lock when drawer is open
- React 18 + Vite
- Redux Toolkit for state management
- React Router v6 for routing
- TailwindCSS for styling
- Recharts for data visualization
- Socket.io Client for real-time communication
- Axios with interceptors for auto-refresh tokens
- Node.js + Express
- MongoDB + Mongoose (multi-tenant data model)
- Redis + BullMQ for job queues
- Socket.io for real-time messaging
- JWT with refresh token rotation
- Zod for request validation
- Nodemailer for transactional emails
- Stripe for subscription billing
- Cloudinary for file uploads
- Helmet, CORS, Rate-limit for security
- Docker + docker-compose
- GitHub Actions for CI/CD
- Render for backend deployment
- Vercel for frontend deployment
- MongoDB Atlas for cloud database
- Upstash Redis for cloud cache & queues
ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ
β React SPA βββββββΆβ Express API βββββββΆβ MongoDB β
β (Vercel) ββββββββ (Render) ββββββββ (Atlas) β
ββββββββββββββββ βββββββββ¬ββββββββ ββββββββββββββββ
β
βββββββββββββββββΌββββββββββββββββ
β β β
ββββββΌββββββ βββββββΌββββββ ββββββΌββββββ
β Redis β β BullMQ β βSocket.io β
β(Upstash) β β Workers β β β
ββββββββββββ βββββββββββββ ββββββββββββ
- Node.js 18+
- MongoDB (local or Atlas)
- Redis (local, Memurai, or Upstash)
- Gmail account (for SMTP) β optional
- Stripe test account β optional
- Cloudinary account β optional
git clone https://github.com/iamdeveloper17/SupportFlow.git
cd SupportFlowcd server
npm install
cp .env.example .env
# Edit .env with your credentials
npm run devServer will run on http://localhost:5000
cd ../client
npm install
cp .env.example .env
npm run devClient will run on http://localhost:5173
Navigate to http://localhost:5173/register and create your first workspace.
See server/.env.example and client/.env.example for the full list. Key variables:
| Variable | Description | Required |
|---|---|---|
MONGO_URI |
MongoDB connection string | β |
REDIS_URL |
Redis connection string | β |
JWT_ACCESS_SECRET |
JWT signing secret (32+ chars) | β |
JWT_REFRESH_SECRET |
Refresh token secret (32+ chars) | β |
CLIENT_URL |
Frontend URL for CORS | β |
SMTP_* |
Gmail SMTP credentials | Optional |
STRIPE_* |
Stripe keys | Optional |
CLOUDINARY_* |
Cloudinary keys | Optional |
SupportFlow/
βββ client/ # React frontend
β βββ src/
β β βββ api/ # Axios config with auto-refresh
β β βββ app/ # Redux store
β β βββ features/ # Redux slices
β β βββ components/ # UI components
β β βββ pages/ # Route pages
β β βββ hooks/ # Custom hooks (useSocket, useAuth)
β β βββ routes/ # Route guards
β βββ package.json
βββ server/ # Node backend
β βββ src/
β β βββ config/ # DB, Redis, Stripe, Cloudinary
β β βββ models/ # Mongoose schemas
β β βββ controllers/ # Route handlers
β β βββ routes/ # Express routers
β β βββ middlewares/ # Auth, RBAC, validation
β β βββ services/ # Business logic
β β βββ sockets/ # Socket.io setup
β β βββ jobs/ # BullMQ queues
β β βββ validators/ # Zod schemas
β β βββ utils/ # Helpers
β βββ server.js
βββ screenshots/ # Desktop & mobile screenshots
βββ .github/workflows/ # GitHub Actions CI
βββ docker-compose.yml
βββ LICENSE
βββ README.md
- Multi-tenancy with isolated workspaces
- JWT auth + refresh token rotation
- Role-based access control (4 roles)
- Complete ticket CRUD lifecycle
- Real-time chat (Socket.io + Redis adapter)
- Email notifications (Nodemailer)
- SLA tracking (BullMQ delayed jobs)
- Analytics dashboard (MongoDB aggregation)
- Stripe subscription billing
- Cloudinary file uploads
- Docker + GitHub Actions CI
- Fully responsive design (mobile-first)
- WhatsApp integration
- Mobile app (React Native)
- AI-powered ticket categorization
- Cross-domain cookies β
SameSite=None+Secure+ CORS credentials handling for Vercel + Render split deployment - JWT expiry handling β auto-refresh via Axios interceptor with retry queue and refresh token rotation
- Duplicate message prevention β ID deduplication + Socket.io
.except()to exclude sender from broadcast - Multi-tenant isolation β compound indexes on
workspacefield for query performance - Real-time scaling β Socket.io with Redis adapter for multi-instance support
- Case-sensitive CI fix β proper file naming conventions for Linux compatibility
- Mobile-first design β slide-in drawer, adaptive grids, touch-friendly components
Contributions are welcome! Feel free to open an issue or submit a PR.
This project is licensed under the MIT License β see the LICENSE file for details.
Amit Kumar
- GitHub: @iamdeveloper17
- LinkedIn: @amit-kumar-9193b0216
- Email: ramit5752@gmail.com
β If you find this project useful, please give it a star!















