Advanced Task Collaboration App with Workflow Automation
TaskBoard Pro is a comprehensive, real-time collaboration platform designed to streamline project and task management for teams of all sizes. Leveraging a modern MERN (MongoDB, Express, React, Node.js) architecture, TaskBoard Pro allows users to create and manage projects, track tasks using an intuitive Kanban-style board, assign tasks to teammates, and configure powerful automation rules to eliminate manual workflows. This README provides detailed information on features, architecture, setup, API usage, and data models.
- Deployed Link
- Features
- Tech Stack
- Getting Started
- Architecture & Database Schema
- API Reference
- Workflow Automations
- Real-Time Notifications
- Project Structure
-
User Authentication
- Email/password login & registration
- Token-based auth (JWT) with protected routes
-
Project Management
- Create, update, and delete projects
- Invite/remove members by email
- Owner-only settings & member permissions
-
Task Management
- Kanban board with default statuses:
To Do,In Progress,Done - Create/edit/delete tasks with title, description, assignee, due date
- Drag-and-drop to change status
- Kanban board with default statuses:
-
Workflow Automations
- Define triggers:
status_change,assignee_change,due_date_passed - Define actions:
add_badge,change_status,send_notification - Server-side evaluation on task updates
- Define triggers:
-
Real-Time Notifications
- Socket.IO for instant toast messages when automation fires
- Polling fallback via REST
/notificationsendpoint
-
Bonus
- Custom statuses per project
- Badge display on tasks
- Notification settings
- Frontend: React, Tailwind CSS, React Router, React Beautiful DnD, React-Toastify
- Backend: Node.js, Express, MongoDB (Mongoose), JWT Auth, Socket.IO
- DevOps & Tools: Vite, Nodemon, Postman, GitHub
- Node.js v14+
- MongoDB (local or Atlas)
# Clone repository
git clone https://github.com/Soumyaditya25/TaskBoardPro.git
cd TaskBoardPro# Install all dependencies (client & server)
npm run install-all
### Environment Variables
#Create a `.env` in **server/**:
PORT=5000
MONGO_URI=your_mongo_connection_string
JWT_SECRET=your_jwt_secret
CLIENT_URL=http://localhost:3000
#Create a `.env` in **client/**:
VITE_API_URL=http://localhost:5000
# Start backend
cd server
npm run dev
# Start frontend
cd ../client
npm run devVisit http://localhost:3000 in your browser.
-
User
_id,name,email,passwordHash,photoURL -
Project
_id,title,description,owner,members,statuses -
Task
_id,title,description,status,assignee,dueDate,badges,project,createdBy -
Automation
_id,project,name,trigger: { type, condition },action: { type, params },createdBy -
Notification
_id,user,message,relatedTask,read,createdAt
| Endpoint | Method | Description | Protected |
|---|---|---|---|
/api/auth/register |
POST | Register new user | No |
/api/auth/login |
POST | Login & receive JWT | No |
/api/auth/me |
GET | Get current user profile | Yes |
| Endpoint | Method | Description | Protected |
|---|---|---|---|
/api/projects |
GET | List all user’s projects | Yes |
/api/projects |
POST | Create new project | Yes |
/api/projects/:id |
GET | Get project details | Yes |
/api/projects/:id |
PUT | Update project | Yes |
/api/projects/:id |
DELETE | Delete project | Yes |
/api/projects/:id/members |
POST | Add member by user ID | Yes |
/api/projects/:id/members/:userId |
DELETE | Remove member | Yes |
| Endpoint | Method | Description | Protected |
|---|---|---|---|
/api/projects/:projectId/tasks |
GET | List tasks in project | Yes |
/api/projects/:projectId/tasks |
POST | Create new task | Yes |
/api/projects/:projectId/tasks/:id |
GET | Get single task | Yes |
/api/projects/:projectId/tasks/:id |
PUT | Update task (runs automations) | Yes |
/api/projects/:projectId/tasks/:id |
DELETE | Delete task | Yes |
| Endpoint | Method | Description | Protected |
|---|---|---|---|
/api/automations?project=<id> |
GET | List automations for project | Yes |
/api/automations |
POST | Create new automation | Yes |
/api/automations/:id |
GET | Get automation by ID | Yes |
/api/automations/:id |
PUT | Update automation | Yes |
/api/automations/:id |
DELETE | Delete automation | Yes |
| Endpoint | Method | Description | Protected |
|---|---|---|---|
/api/notifications |
GET | List current user’s notifications | Yes |
/api/ping-notif/:userId |
GET | (Test) Emit a manual notification via WebSocket | No |
-
Define Trigger
status_change→ when task moves to a specific statusassignee_change→ when task is assigned to a userdue_date_passed→ when X days have passed since due date
-
Define Action
add_badge→ tack a badge onto the taskchange_status→ move the task to another statussend_notification→ generate a toast via WebSocket (and persist)
-
Server-Side Processing
- On every
PUT /tasks/:id, the backend runs all automations for that project - Matching automations fire immediately, updating the task and/or notifying the assignee
- On every
- Socket.IO: Clients join a room named after their user ID
- Server: Emits
new-notificationevents to that room when an automation’s action issend_notification - Client: A React component listens and uses React-Toastify to pop a toast instantly
/
├── client
│ ├── node_modules
│ ├── public
│ ├── src
│ │ ├── components # Reusable React components
│ │ ├── context # AuthContext and other providers
│ │ ├── pages # Route-based page components
│ │ ├── services # Axios API wrappers
│ │ ├── styles # Tailwind/stylesheet files
│ │ ├── utils # Utility functions
│ │ ├── App.jsx # Main application component
│ │ ├── main.jsx # Entry point for ReactDOM
│ │ └── socket.js # Socket.IO client setup
│ ├── postcss.config.js # PostCSS setup
│ ├── tailwind.config.js # Tailwind CSS configuration
│ ├── index.html # HTML template for Vite
│ ├── vite.config.js # Vite build configuration
│ ├── package.json # Frontend dependencies & scripts
│ └── package-lock.json
│
├── server
│ ├── config # Database connection & env setup
│ ├── controllers # Express route handlers
│ ├── middleware # Auth, error handlers, etc.
│ ├── models # Mongoose schemas
│ ├── routes # Express routers
│ ├── utils # Helper functions (e.g. logging)
│ ├── server.js # Express app + Socket.IO setup
│ ├── .env # Server environment variables
│ └── package.json # Backend dependencies & scripts
│
├── .gitignore
└── README.md # Project documentation
Made with ❤️ by Soumyaditya