A dynamic and interactive task management application that allows users to manage their tasks efficiently.
-
Implement a component that displays a list of tasks.
- Each task should have a title, description, due date, priority (low, medium, high), and status (to-do, in-progress, done).
- Allow users to add, edit, and delete tasks.
- Allow users to filter tasks by status and priority.
- Implement search functionality to find tasks by title or description.
- Allow users to sort tasks by due date and priority.
- Persist task data in local storage or an API.
-
State Management
- Use any React state management library.
- Ensure state updates are optimized and avoid unnecessary re-renders.
-
Task Details
- Clicking on a task should open a detailed view of the task in a modal or a separate component.
- In the detailed view, users should be able to update the task's status and priority.
-
Performance Optimization
- Implement memoization where appropriate to optimize performance.
- Avoid performance pitfalls like unnecessary renders and state updates.
-
Custom Hooks
- Create at least one custom hook for reusable logic, such as fetching initial task data from an API or local storage.
-
Error Handling
- Implement error boundaries to catch and display errors in the UI.
- Display appropriate error messages for failed actions (e.g., adding or deleting tasks).
-
Styling
- Ensure the application is responsive and looks good on different screen sizes.
- Use CSS or CSS-in-JS for styling and avoid inline styles.
To run the application locally, follow these steps:
-
Clone the Repository:
git clone <repository-url> cd task-management-app
-
Install Dependencies:
yarn install
-
Start the Development Server:
yarn start
-
Open in Browser: Navigate to
http://localhost:5173in your web browser to view the application.