A comprehensive, full-stack task management application with real-time features, built with the MERN stack (MongoDB, Express, React, Node.js). Features subtasks, recurring tasks, tags, file attachments, WebSocket real-time updates, and a beautiful coral-themed UI with dark mode support.
- Subtasks: Break down tasks into smaller checklist items with progress tracking
- Recurring Tasks: Set tasks to repeat daily, weekly, monthly, or yearly
- Tags System: Organize tasks with multiple tags for flexible categorization
- File Attachments: Upload and attach files/documents to tasks
- Real-time Updates: Live synchronization across devices via WebSocket
- Backend API: Full REST API with JWT authentication
- Database Storage: MongoDB for persistent, scalable data storage
- Authentication System: JWT-based secure login and registration
- Dashboard: Comprehensive overview with statistics, charts, and recent tasks
- Task Management: Full CRUD operations with filtering, search, and status tracking
- Categories: Organize tasks with color-coded categories
- Priorities: High, Medium, and Low priority levels
- Calendar View: Visualize tasks by due date
- Notifications: Real-time notifications for task activities
- User Account: Profile management and password change
- Toast Notifications: User-friendly success/error messages
- Dark Mode: Toggle between light and dark themes
- Responsive Design: Works seamlessly on desktop, tablet, and mobile
- Modern Design: Clean, minimalist interface with smooth animations
- Coral Theme: Beautiful coral (#FF6B6B) color palette
- Interactive Charts: Visual statistics using Recharts
- Full-Stack Architecture: MERN (MongoDB, Express, React, Node.js)
- TypeScript: Full type safety on frontend and backend
- WebSocket: Real-time bidirectional communication
- RESTful API: Well-structured API endpoints
- JWT Authentication: Secure token-based auth
- File Upload: Multer-based file handling
- Context API: React global state management
- Axios: HTTP client with interceptors
- Socket.io: Real-time event-driven communication
- Runtime: Node.js with TypeScript
- Framework: Express.js
- Database: MongoDB with Mongoose ODM
- Authentication: JWT (jsonwebtoken) + bcrypt
- Real-time: Socket.io
- File Upload: Multer
- Validation: express-validator
- Framework: React 19 with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS 4
- Routing: React Router DOM v7
- HTTP Client: Axios
- Real-time: Socket.io-client
- Charts: Recharts
- Icons: Lucide React
- Date Utilities: date-fns
- Drag & Drop: @hello-pangea/dnd
- Notifications: react-hot-toast
- Node.js 16+ and npm
- MongoDB (local installation or MongoDB Atlas account)
- Navigate to the backend directory:
cd backend- Install backend dependencies:
npm install- Create a
.envfile in the backend directory:
PORT=5000
MONGODB_URI=mongodb://localhost:27017/task-manager
JWT_SECRET=your_jwt_secret_key_here
NODE_ENV=development- Start the backend server:
npm run devThe backend will run on http://localhost:5000
- Navigate to the project root directory:
cd ..- Install frontend dependencies:
npm install- Start the frontend development server:
npm run dev- Open your browser and navigate to
http://localhost:5173
- Register a new account through the registration page
- Default categories and priorities will be automatically created
- Start creating and managing your tasks!
task-manager/
├── backend/
│ ├── src/
│ │ ├── config/
│ │ │ └── database.ts # MongoDB connection
│ │ ├── controllers/
│ │ │ ├── authController.ts # Authentication logic
│ │ │ ├── taskController.ts # Task CRUD operations
│ │ │ ├── categoryController.ts
│ │ │ ├── priorityController.ts
│ │ │ ├── tagController.ts
│ │ │ ├── notificationController.ts
│ │ │ └── uploadController.ts
│ │ ├── middleware/
│ │ │ ├── auth.ts # JWT authentication
│ │ │ └── upload.ts # File upload handling
│ │ ├── models/
│ │ │ ├── User.ts # User schema
│ │ │ ├── Task.ts # Task schema with subtasks
│ │ │ ├── Category.ts
│ │ │ ├── Priority.ts
│ │ │ ├── Tag.ts
│ │ │ └── Notification.ts
│ │ ├── routes/
│ │ │ ├── authRoutes.ts
│ │ │ ├── taskRoutes.ts
│ │ │ ├── categoryRoutes.ts
│ │ │ ├── priorityRoutes.ts
│ │ │ ├── tagRoutes.ts
│ │ │ ├── notificationRoutes.ts
│ │ │ └── uploadRoutes.ts
│ │ ├── utils/
│ │ │ ├── seedDefaults.ts # Default data seeding
│ │ │ ├── recurrence.ts # Recurring tasks logic
│ │ │ └── generateToken.ts # JWT token generation
│ │ └── server.ts # Express server & Socket.io
│ └── package.json
├── src/
│ ├── components/
│ │ ├── common/ # Reusable components (Button, Modal)
│ │ └── layout/ # Layout components (Sidebar, Header, MainLayout)
│ ├── contexts/ # React Context providers
│ │ ├── AuthContext.tsx
│ │ └── TaskContext.tsx
│ ├── pages/ # Page components
│ │ ├── auth/ # Login, Register
│ │ ├── dashboard/ # Dashboard
│ │ ├── tasks/ # Task management
│ │ ├── categories/ # Category management
│ │ ├── calendar/ # Calendar view
│ │ ├── notifications/ # Notifications
│ │ └── account/ # User account settings
│ ├── services/ # Service layer
│ │ ├── api.ts # API client with all endpoints
│ │ └── socket.ts # WebSocket service
│ ├── types/ # TypeScript type definitions
│ │ └── index.ts
│ ├── utils/ # Utility functions
│ │ └── helpers.ts # Helper functions
│ ├── App.tsx # Main App component with routing
│ ├── main.tsx # Entry point
│ └── index.css # Global styles
├── tailwind.config.js # Tailwind configuration
├── tsconfig.json # TypeScript configuration
└── package.json # Project dependencies
- Statistics Cards: Total, Completed, In Progress, and Pending tasks
- Pie Charts: Visual representation of task status and categories
- Recent Tasks: Quick view of latest tasks
- Quick Actions: Shortcuts to common operations
- Completion Rate: Progress indicator
- Create/Edit/Delete: Full CRUD operations
- Task Properties: Title, description, category, priority, status, due date
- Search: Real-time task search
- Filters: Filter by status, category, priority, date
- Checkbox Toggle: Quick completion status change
- Visual Indicators: Color-coded categories and priorities
- Custom Categories: Create unlimited categories
- Color Picker: Choose custom colors for each category
- Task Counter: See how many tasks per category
- Edit/Delete: Manage categories easily
- Date-based View: See tasks organized by due date
- Upcoming Tasks: View tasks chronologically
- Color Coding: Categories shown with their colors
- Activity Feed: Track task creation, completion, and updates
- Read/Unread: Mark notifications as read
- Delete: Remove individual or all notifications
- Badge Counter: Unread count in sidebar
- Profile Management: Update name, email, phone, bio
- Password Change: Secure password update
- Profile Data: Persistent user information
- Dark Mode: Complete dark theme support
- Persistent: Theme preference saved to localStorage
- Smooth Transition: Animated theme switching
{
id: string;
userId: string;
title: string;
description: string;
categoryId: string;
priorityId: string;
status: 'pending' | 'in-progress' | 'completed';
dueDate: string;
completed: boolean;
subtasks: Array<{
id: string;
title: string;
completed: boolean;
}>;
tags: string[];
attachments: Array<{
fileName: string;
fileUrl: string;
fileSize: number;
}>;
recurrence?: {
frequency: 'daily' | 'weekly' | 'monthly' | 'yearly';
interval: number;
endDate?: string;
};
createdAt: string;
updatedAt: string;
}{
id: string;
name: string;
color: string;
icon?: string;
userId: string;
createdAt: string;
}{
id: string;
name: string;
level: 'low' | 'medium' | 'high';
color: string;
userId: string;
createdAt: string;
}POST /api/auth/register- Register new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user
GET /api/tasks- Get all tasksPOST /api/tasks- Create taskGET /api/tasks/:id- Get task by IDPUT /api/tasks/:id- Update taskDELETE /api/tasks/:id- Delete taskPUT /api/tasks/:id/complete- Toggle completionPOST /api/tasks/:id/subtasks- Add subtaskPUT /api/tasks/:taskId/subtasks/:subtaskId- Update subtaskDELETE /api/tasks/:taskId/subtasks/:subtaskId- Delete subtask
GET /api/categories- Get all categoriesPOST /api/categories- Create categoryPUT /api/categories/:id- Update categoryDELETE /api/categories/:id- Delete category
GET /api/priorities- Get all prioritiesPOST /api/priorities- Create priorityPUT /api/priorities/:id- Update priorityDELETE /api/priorities/:id- Delete priority
GET /api/tags- Get all tagsPOST /api/tags- Create tagPUT /api/tags/:id- Update tagDELETE /api/tags/:id- Delete tag
GET /api/notifications- Get all notificationsPUT /api/notifications/:id/read- Mark as readDELETE /api/notifications/:id- Delete notificationDELETE /api/notifications- Clear all
npm run dev- Start Vite development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
npm run dev- Start backend with nodemonnpm run build- Compile TypeScriptnpm start- Run production server
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
Potential features for future versions:
- Task collaboration and sharing
- Task comments and discussions
- Advanced filtering and sorting
- Export to PDF/CSV
- Email notifications
- Mobile applications (iOS/Android)
- Task templates
- Task dependencies
- Time tracking
- Advanced analytics and reports
- Calendar integrations (Google Calendar, Outlook)
This project is open source and available for educational purposes.
Dhanibel Reyes
A comprehensive full-stack task management solution built with the MERN stack.