You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
TaskBoard Pro is a full-stack task management application that helps teams organize, track, and collaborate on tasks and projects. The application features a modern, responsive UI built with React and a robust backend API powered by Node.js, Express, and MongoDB.
π Features
Project Management
Create and manage multiple projects
Invite team members to collaborate
Assign different roles (Admin, Editor, Viewer) with granular permissions
Customize project task statuses
Task Management
Intuitive kanban board for visualizing task workflow
Drag and drop tasks between status columns
Create, edit, and delete tasks with rich details:
Title and description
Assignee
Due date
Priority levels (Low, Medium, High, Urgent)
Tags
File attachments
Time tracking
Task Dependencies
Set up dependencies between tasks
Establish blocking relationships
Prevent circular dependencies
Real-time Collaboration
Live updates with WebSockets
Notification system for task assignments, status changes, etc.
{title: String,description: String,owner: ObjectId,// Reference to User modelmembers: [{user: ObjectId,// Reference to User modelrole: String,// "Admin", "Editor", or "Viewer"joinedAt: Date}],statuses: [{name: String,order: Number}],createdAt: Date}
Task Model
{title: String,description: String,project: ObjectId,// Reference to Project modelstatus: String,assignee: ObjectId,// Reference to User modeldueDate: Date,priority: String,// "Low", "Medium", "High", "Urgent"tags: [String],attachments: [{name: String,url: String,type: String,size: Number,uploadedAt: Date,uploadedBy: ObjectId// Reference to User model}],dependencies: [{task: ObjectId,// Reference to Task modeltype: String// "blocks" or "blocked_by"}],timeTracking: {estimate: Number,// minuteslogged: Number,// minuteshistory: [{startTime: Date,endTime: Date,duration: Number,// minutesdescription: String,user: ObjectId// Reference to User model}]},createdBy: ObjectId,// Reference to User modelcreatedAt: Date,updatedAt: Date}
Automation Model
{project: ObjectId,// Reference to Project modelname: String,trigger: {type: String,// "task_status_change", "task_assignment", etc.condition: Object,// Varies based on trigger typeconditional: {operator: String,// "and", "or", "not"conditions: [Object]}},actions: [{type: String,// "change_status", "assign_badge", etc.params: Object// Parameters for the action}],createdBy: ObjectId,// Reference to User modelactive: Boolean,createdAt: Date,updatedAt: Date}
Notification Model
{recipient: ObjectId,// Reference to User modelcontent: String,type: String,// "task_assignment", "status_change", etc.isRead: Boolean,relatedProject: ObjectId,// Reference to Project modelrelatedTask: ObjectId,// Reference to Task modelcreatedAt: Date}
π Authentication & Authorization
TaskBoard Pro uses Firebase Authentication for user management and JWT for API authorization.
Authentication Flow
Users sign up/sign in through Firebase Auth (email/password or Google)
Firebase issues an ID token after successful authentication
The token is stored in localStorage and sent with API requests
The backend verifies the token using Firebase Admin SDK
If verification succeeds, the user's profile is fetched or created in MongoDB
Authorization
Role-based access control (RBAC) for project resources
Middleware checks for permissions based on user's role in a project
Custom middleware for socket connections
π‘ API Documentation
Authentication Endpoints
Method
Endpoint
Description
Required Body
Response
POST
/api/auth/register
Register new user
uid, displayName, email, photoURL
User object
POST
/api/auth/user-profile
Update user profile
uid, displayName, photoURL
User object
GET
/api/auth/me
Get current user profile
-
User object with projects
Project Endpoints
Method
Endpoint
Description
Required Body
Response
GET
/api/projects
Get user's projects
-
Array of projects
POST
/api/projects
Create new project
title, description
Project object
GET
/api/projects/:projectId
Get project details
-
Project object with members
PUT
/api/projects/:projectId
Update project
title, description
Updated project
POST
/api/projects/:projectId/invite
Invite user to project
email, role
Success message
POST
/api/projects/:projectId/statuses
Update project statuses
statuses array
Updated project
GET
/api/projects/:projectId/members
Get project members
-
Array of members
PUT
/api/projects/:projectId/members/:memberId/role
Update member role
role
Updated member
DELETE
/api/projects/:projectId/members/:memberId
Remove member
-
Success message
DELETE
/api/projects/:projectId
Delete project
-
Success message
Task Endpoints
Method
Endpoint
Description
Required Body
Response
GET
/api/tasks/project/:projectId
Get project tasks
-
Array of tasks
GET
/api/tasks/filter
Get filtered tasks
Query params
Array of tasks
POST
/api/tasks
Create new task
Task object
Created task
PUT
/api/tasks/:taskId
Update task
Task fields
Updated task
DELETE
/api/tasks/:taskId
Delete task
-
Success message
POST
/api/tasks/:taskId/time
Add time tracking entry
Time entry
Updated task
PUT
/api/tasks/:taskId/dependencies
Update dependencies
dependencies
Updated task
Automation Endpoints
Method
Endpoint
Description
Required Body
Response
GET
/api/automations/project/:projectId
Get project automations
-
Array of automations
POST
/api/automations
Create automation
Automation object
Created automation
PUT
/api/automations/:automationId
Update automation
Automation fields
Updated automation
DELETE
/api/automations/:automationId
Delete automation
-
Success message
Notification Endpoints
Method
Endpoint
Description
Required Body
Response
GET
/api/notifications
Get user notifications
-
Array of notifications
PUT
/api/notifications/:notificationId/read
Mark notification as read
-
Updated notification
PUT
/api/notifications/read-all
Mark all as read
-
Success message
File Endpoints
Method
Endpoint
Description
Required Body
Response
POST
/api/files/upload/:taskId
Upload file attachment
Multipart form
Attachment object
GET
/api/files/:filename
Download file
-
File stream
DELETE
/api/files/:taskId/:attachmentId
Delete attachment
-
Success message
π± Socket Events
Client to Server
join-project: Join a project's real-time updates room