A feature-rich To-Do List application built with React and TypeScript, implementing full CRUD (Create, Read, Update, Delete) functionality. This app allows users to manage their tasks effectively by providing features such as adding, editing, deleting, searching, sorting, and filtering tasks. Each task can also be marked as completed or require confirmation before editing.
- Add Task: Users can add a new task with a title and description.
- Delete Task: Users can delete tasks from the list.
- Edit Task: Users can edit existing tasks. Tasks that require confirmation prompt the user before editing.
- Mark as Completed: Tasks can be marked as completed.
- Task Types: Supports two types of tasks - default tasks and tasks that require confirmation before editing.
- Search Functionality: Allows users to search tasks by name or content.
- Sorting: Tasks can be sorted by status (completed or incomplete) or by creation date.
- Responsive Design: The application is fully responsive and adapts to different screen sizes, providing an optimal user experience on desktop, tablet, and mobile devices.
- React: Frontend library for building user interfaces.
- TypeScript: For type-checking and enhancing JavaScript.
- uuid: To generate unique IDs for tasks.
- TaskInput: For adding new tasks, including an option to mark tasks as requiring confirmation.
- TaskItem: Displays individual tasks with options to edit, delete, and mark as complete.
- SearchBar: For searching and sorting tasks.
- TaskStatistics: Displays statistics on the total tasks and incomplete tasks.
- Clone the repository:
git clone https://github.com/NataliaKilienko/ToDo_List_React_TypeScript.git
- Navigate to the project directory:
cd Todo_List
- Install dependencies:
npm install
- Start the development server:
npm start
src/components
: Contains reusable components likeTaskInput
,TaskItem
,SearchBar
, etc.src/types
: Contains TypeScript interfaces and types for the project.src/services
: Contains utility functions for handling task operations like filtering, sorting, and managing task states.src/assets
: Stores any static assets such as images or backgrounds used in the application.
- Add a New Task: Enter the task title in the input box, check "Requires Confirmation" if needed, and click "Add Task".
- Edit a Task: Click the "Edit" button next to the task, modify the text, and click "Save". If the task requires confirmation, a prompt will appear.
- Delete a Task: Click the "X" button next to the task to remove it.
- Search and Sort: Use the search bar to filter tasks by name or content, and sort them by date or status.
- Responsive Styling: The application adjusts its layout and element sizing for better usability on various screen sizes, from desktop to mobile.
- Input Validation: Both the title and content fields are required for adding and editing tasks to ensure meaningful entries.
- Enums for Sorting: Sorting criteria are implemented using TypeScript enums for clarity and type safety.
- Task Status: Task items can be toggled between completed and uncompleted states, and the status is reflected in the sorting options.