QueueFlow is a real-time project management platform built for modern development teams. It connects Project Managers, Developers, and Clients inside shared live workspaces β with drag-and-drop Kanban boards, sticky-note feedback, a workflow intelligence analytics engine, and a real-time activity feed, all syncing instantly via WebSockets without a page refresh.
This repository is the React frontend β a Vite + Redux Toolkit SPA that consumes QueueFlow's REST API and Socket.io backend.
QueueFlow is built around a strict role-based flow:
- Project Manager creates a workspace and generates a time-limited 6-character invite code (valid for up to 6 hours).
- Developers / Clients enter the code from the Join screen and are instantly added to the workspace.
- Developers drag tasks across
PENDING β IN PROGRESS β REVIEW β DONEβ every move is broadcast in real time to all members. - Clients get a live read-only view of progress and can leave sticky-note feedback directly on tasks.
- Project Managers monitor the Activity Timeline, check the Analytics Dashboard for bottlenecks and workload imbalances, and manage team access β all without leaving the app.
| Feature | Description |
|---|---|
| π― Role-Based Access | PMs create projects, Developers work tasks, Clients view and leave feedback β each role sees exactly what it needs |
| π Live Kanban Board | Drag-and-drop tasks across PENDING β IN PROGRESS β REVIEW β DONE, updates broadcast instantly to all members |
| π Notification Bell | Real-time notification feed in the header β shows teammate actions with unread badge counter, filtered to exclude your own events |
| π Live Search | Instant client-side search across all projects and tasks from the header bar |
| π Workflow Intelligence | Analytics dashboard with bottleneck detection, workload imbalance alerts, in-progress task chips, priority breakdown, completion trends, and smart insights |
| ποΈ Sticky Notes | Per-task feedback layer β post, edit, and delete notes in real time inside the Task Details modal |
| π₯ Access Management | PMs get a Manage Access panel to view and remove members; Developers/Clients get a Leave Team option with confirmation |
| π Activity Timeline | Real-time vertical feed of all workspace events β task moves, notes, members joining, and more |
| π Invite Codes | PMs generate time-limited invite codes; members join by entering the code from the dashboard |
| β‘ Loading Screen | Animated boot screen with cycling status messages and a Render cold-start notice for first visits |
Most project management tools solve task tracking. QueueFlow solves workflow visibility and intelligence.
| Feature | Existing Tools | QueueFlow |
|---|---|---|
| Real-time sync | β Polling / Refresh | β WebSockets (instant updates) |
| Workflow intelligence | β Minimal / Paid features | β Built-in insights & analytics |
| Developer workflow | β Kanban boards only | β Time-ordered developer queues |
| Client interaction | β Structured sticky-note feedback | |
| Event system | β Hidden or partial logs | β Full event-driven architecture |
QueueFlow is built with a real-time, event-driven architecture. Every technology was chosen deliberately to support live collaboration, data consistency, and performance.
| Layer | Technology | Key Reason |
|---|---|---|
| Runtime | Node.js + Express | Non-blocking I/O for concurrent sockets + REST |
| Real-time | Socket.io | Room-based broadcasting, auto-reconnect |
| Database | PostgreSQL (Supabase) | ACID, relational integrity, complex joins |
| ORM | Prisma | Type-safe queries, schema-first migrations |
| Frontend | React 18 + Vite | SPA-only, fast HMR, no SSR needed |
| State | Redux Toolkit | Predictable WebSocket-driven state mutations |
| Styling | Tailwind CSS v4 | Utility-first, dark mode, no design lock-in |
| Charts | Recharts | Native React, declarative, responsive containers |
Why used:
- Non-blocking I/O β handles WebSocket events and REST API calls simultaneously on a single thread
- Lightweight and fast for real-time systems
- Perfect fit for an event loop model where every task move fires both a DB write AND a socket broadcast
Why not alternatives:
- Django (Python): Synchronous by default; needs Django Channels for WebSockets β added complexity
- Spring Boot (Java): Thread-per-request model β heavier memory usage; overkill here
- Laravel (PHP): Not designed for persistent real-time TCP connections
Why used:
- Built-in room-based broadcasting β
io.to(projectId).emit()ensures only relevant clients receive events - Automatic reconnection and long-polling fallback built-in
- No need to rebuild connection state management from scratch
Why not alternatives:
- Raw WebSockets: No room abstraction, manual reconnect logic, no namespace support
- Server-Sent Events (SSE): One-way only (server β client); can't handle client-initiated events
- Polling: Minimum 2β5s latency, wasted requests even when nothing changes
Why used:
- Strong relational integrity β Tasks belong to Projects, Members reference Users, Activities soft-link deleted Tasks (
onDelete: SetNull) - ACID compliance: drag-and-drop reorders run as
prisma.$transaction()β all or nothing - Efficient
JOINqueries power the analytics engine
Why not alternatives:
- MongoDB: Weak relational modeling; cross-collection joins for analytics are messy
- MySQL: Solid alternative, but PostgreSQL has better native support for complex queries,
RETURNING, and Supabase's tooling
Why used:
- Fully type-safe queries β no runtime SQL string errors
- Schema-first: one
schema.prismafile is the single source of truth for the entire DB structure - First-class Supabase support (
url+directUrlfor connection pooling)
Why not alternatives:
- Sequelize: Class-based, older API, weaker type inference
- TypeORM: Decorator-heavy, more config, inconsistent behavior with some Postgres features
- Raw SQL: No migration tooling, no type safety
Why used:
- QueueFlow is a fully authenticated SPA β no page needs to be server-rendered for SEO
- Vite's dev server starts in <1s vs Webpack/CRA's 10β30s
- React's component model pairs naturally with Redux socket reducers
Why not alternatives:
- Next.js: SSR/ISR adds complexity with zero benefit here; all routes require login
- Angular: More opinionated; React's ecosystem (Redux, Recharts, Lucide) is better suited
- Vue: Smaller ecosystem for the specific libraries used
Why used:
- Centralized store for three intersecting real-time data sources:
auth,projects,tasks - Socket reducers (
socketTaskUpdated,socketTaskCreated) write directly into the store β no re-fetching needed useSelectorwith shallow equality prevents unnecessary re-renders
Why not alternatives:
- Context API: Re-renders every consumer on every value change β catastrophic at socket event frequency
- React Query / SWR: Built for pull-based (polling/caching) patterns; conflicts with push-based socket updates (two competing sources of truth)
- Zustand: Valid alternative, but Redux DevTools extensibility was preferred for debugging socket state flows
Why used:
- Utility-first means dark mode (
dark:), responsive breakpoints, and custom color tokens all live inline β no context switching - JIT compilation makes the final CSS bundle tiny
- No design lock-in; every component looks exactly as designed
Why not alternatives:
- CSS Modules: More files, slower iteration, harder to share design tokens
- Chakra UI / MUI: Opinionated design system limits the premium custom look we needed
- styled-components: Runtime CSS injection, worse Vite HMR performance
Why used:
- Native React integration β no imperative DOM manipulation, components compose just like any other JSX
<ResponsiveContainer>handles layout automatically- Declarative API:
<LineChart><Line/></LineChart>maps directly to the data model
Why not alternatives:
- Chart.js: Imperative API requires
useEffectanduseRefto fight React's declarative model - D3.js: Extremely powerful but too low-level β you'd rebuild everything Recharts provides
- Victory: Less active maintenance, weaker TypeScript support
Real-time push architecture β Node.js + Socket.io
Relational data integrity β PostgreSQL + Prisma
Predictable live state β Redux Toolkit
Fast, flexible UI β React + Vite + Tailwind
Every choice supports a live, collaborative, intelligent workflow system β not just a CRUD app.
git clone https://github.com/Anoop-Kumar-31/QueueFlow_Frontend.git
cd QueueFlow_Frontendnpm installCreate a .env file in the root folder pointing directly to your local backend server:
VITE_API_URL=http://localhost:5000/apinpm run devNavigate to http://localhost:5173 to interact with QueueFlow!
Anoop Kumar | Full Stack Developer









.png)
