To-Do List App with Dynamic Data Fetching
Features:
Add new tasks to the to-do list.
Mark tasks as completed or not completed.
Delete tasks from the list.
Fetch initial task data asynchronously from a mock API using callbacks and convert it to using promises.
Use arrow functions for concise code.