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!





