A modern, feature-rich Task Manager application built with React that helps you organise and manage your daily tasks efficiently. This app includes advanced features like dark/light mode theming, drag-and-drop functionality, local storage persistence, and performance optimisations. The application demonstrates best practices in React development, including the use of custom hooks, the Context API, and responsive design principles.
👉 Live Demo 👉 Tech Assignment.pdf
- Task Management: Add, edit, delete, and mark tasks as completed
- Smart Filtering: Filter tasks by All, Completed, or Pending status
- Data Persistence: Tasks are automatically saved to Local Storage
- Form Validation: Prevents adding empty or invalid tasks
- Dark/Light Mode: Toggle between themes with smooth transitions
- Drag & Drop: Reorder tasks using intuitive drag-and-drop interface
- Responsive Design: Mobile-first approach ensuring perfect experience on all devices
- Smooth Animations: CSS transitions for adding, removing, and updating tasks
- Performance Optimized: Uses React.memo, useCallback, and useMemo for optimal performance
- Custom Hooks:
useLocalStoragehook for efficient local storage operations - Context API: Centralised state management without prop drilling
- Modern React Patterns: Functional components with hooks
- Clean Architecture: Modular and maintainable code structure
- Node.js (v14 or higher)
- npm or yarn package manager
- Modern web browser
-
Clone the repository to your local machine:
git clone https://github.com/your-username/task-manager-app.git
-
Navigate to the project directory:
cd task-manager-app -
Install the required dependencies:
npm install
-
Start the development server:
npm start
-
Open your browser and navigate to
http://localhost:3000to use the Task Manager.
npm start- Runs the app in development modenpm test- Launches the test runnernpm run build- Builds the app for productionnpm run eject- Ejects from Create React App (one-way operation)
task-manager-app/
├── public/
│ ├── index.html
│ └── favicon.ico
├── src/
│ ├── components/
│ │ ├── Header.jsx
│ │ ├── TaskFilter.jsx
│ │ ├── TaskForm.jsx
│ │ ├── TaskItem.jsx
│ │ ├── TaskList.jsx
│ │ └── ThemeToggle.jsx
│ ├── context/
│ │ └── TaskContext.jsx
│ ├── hooks/
│ │ ├── useLocalStorage.js
│ │ └── useTheme.js
│ ├── styles/
│ │ ├── App.css
│ │ ├── components.css
│ │ └── animations.css
│ ├── utils/
│ │ └── taskUtils.js
│ ├── App.css
│ ├── App.js
│ ├── index.css
│ └── index.js
├── package.json
└── README.md
- useLocalStorage: Handles all local storage operations with automatic JSON parsing/stringifying
- useTheme: Manages theme state and preferences
- React.memo: Prevents unnecessary re-renders of task components
- useCallback: Memoises event handlers to prevent child re-renders
- useMemo: Optimizes expensive filtering operations
- Mobile-first CSS approach
- Flexible grid layouts
- Touch-friendly interface elements
- Adaptive typography and spacing
- Smooth task addition/removal animations
- Theme transition effects
- Hover and focus states
- Loading states with skeleton screens
This project can be easily deployed on various platforms:
- Push your code to GitHub
- Connect your GitHub repository to Vercel
- Deploy with automatic builds on push
- React team for the amazing framework
- react-beautiful-dnd for drag and drop functionality
- All the open-source contributors who made this project possible
Give a ⭐️ if you like this project!





