A real-time collaborative project management application built with Next.js and Firebase. TaskFlow enables teams to manage tasks on Kanban boards with live cursor tracking, real-time collaborative editing, and instant updates across all connected users.
- Real-time Collaboration - See other team members' cursors moving on the board in real-time
- Live Collaborative Editing - Edit task titles and descriptions together with character-by-character sync (Google Docs-style)
- Kanban Board - Drag-and-drop task management with customizable columns
- Team Management - Invite members via shareable links, assign roles (Owner, Admin, Member, Viewer)
- Task Management - Create, edit, delete tasks with priorities, due dates, labels, and assignees
- Activity Feed - Real-time activity tracking and commenting on tasks
- Analytics Dashboard - Visual insights with charts for task completion rates, team performance, and more
- Google Authentication - Secure sign-in with Google accounts
- Frontend: Next.js 16, React 19, TypeScript
- Styling: Tailwind CSS
- Backend/Database: Firebase (Firestore, Realtime Database, Authentication)
- Real-time Sync: Yjs (CRDT-based collaborative editing)
- Drag & Drop: @dnd-kit
- Charts: Recharts
- Date Handling: date-fns
- Node.js 18+
- npm or yarn
- Firebase project with Firestore, Realtime Database, and Authentication enabled
- Clone the repository:
git clone https://github.com/m-ather-47/task-flow.git
cd task-flow- Install dependencies:
npm install- Create a
.env.localfile with your Firebase configuration:
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
NEXT_PUBLIC_FIREBASE_DATABASE_URL=https://your_project.firebaseio.com- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
src/
├── app/ # Next.js App Router pages
│ ├── (auth)/login/ # Authentication pages
│ ├── board/[boardId]/ # Kanban board page
│ ├── dashboard/ # User dashboard
│ └── analytics/ # Analytics page
├── components/
│ ├── board/ # Board, Column, TaskCard, TaskModal
│ ├── collaborative/ # Real-time editing components
│ ├── analytics/ # Chart components
│ ├── auth/ # Login, UserMenu
│ ├── layout/ # Header, Sidebar
│ └── ui/ # Reusable UI components
├── hooks/ # Custom React hooks
├── lib/ # Firebase config, utilities, Yjs provider
├── contexts/ # React contexts (Auth)
└── types/ # TypeScript type definitions
Uses Firebase Realtime Database to broadcast cursor positions with throttling (20 updates/sec) and automatic cleanup on disconnect.
Implements Yjs CRDTs with a custom Firebase provider for conflict-free real-time text synchronization across multiple users.
Uses @dnd-kit for accessible, performant drag-and-drop with optimistic updates and batch Firestore operations.
Deploy easily on Vercel:
MIT License - feel free to use this project for personal or commercial purposes.



