TaskFlow is a full-stack, real-time Kanban collaboration platform with role-based team workflows.
Live: https://taskflow.ankitraj.fun
- Create and manage boards with members and roles (
ADMIN,WORKER) - Organize work into lists and draggable tasks
- Assign users, add labels, and track task dates
- Keep all connected clients in sync through Socket.IO events
- Maintain a board activity feed for audit visibility
ADMIN: full board control in UI (members, lists, task editing)WORKER: can drag/drop only tasks assigned to them and does not get task edit actions in board UI
TaskFlow/
├── frontend/ # React + Vite client
└── backend/ # Express + Prisma + Socket.IO APIFrontend:
- React 18, TypeScript, Vite
- Zustand, Axios, Socket.IO client
- @dnd-kit, TailwindCSS, shadcn/ui
Backend:
- Node.js, Express 5, TypeScript
- Prisma + PostgreSQL
- Socket.IO
- JWT auth in HTTP-only cookies
cd backend
npm install
npx prisma generate
npx prisma migrate dev
npm run dev:watchBackend runs on http://localhost:8000 by default.
In a new terminal:
cd frontend
npm install
npm run devFrontend runs on http://localhost:8080 by default.
Backend (backend/.env):
PORT=8000
DATABASE_URL=postgresql://<user>:<password>@<host>/<db>?sslmode=require
JWT_SECRET=replace_with_a_long_random_secret
ORIGIN=http://localhost:8080
PRODUCTION_ORIGIN=https://taskflow.ankitraj.fun
PRODUCTION_ORIGIN_2=https://www.taskflow.ankitraj.fun
NODE_ENV=developmentFrontend (frontend/.env):
VITE_API_URL=http://localhost:8000
REACT_APP_API_URL=http://localhost:8000- Real-time board/list/task/member/label sync
- Board search + pagination
- Drag-and-drop with optimistic updates
- Member management + role updates
- Activity timeline sidebar
- Date-aware task indicators (overdue/today/upcoming)
- Cookie-based auth shared by HTTP and WebSocket
- Backend docs:
backend/README.md - Frontend docs:
frontend/README.md
MIT