Ram Maheshwari Logo Image
Olha Kostovetska

React To-Do App with API Integration

A fully functional React and TypeScript To-Do app that interacts with a remote API in real time. It features a clean UI/UX, asynchronous operations, and persistent data handling. The app allows loading, creating, updating, deleting, and filtering tasks, ensuring responsive design, smooth user experience, and full test coverage.

Project Image

Features

  • 🔄 Load Todos by User ID
    • Loads todos for a specific user from a remote API on app load.
    • Hides list and footer if no todos exist.
  • ➕➖ Add and Delete Todos
    • Add new todos with form submission (auto-trimmed and validated).
    • Delete single todos or clear all completed ones.
    • Uses temporary todo with loader for optimistic UI updates.
    • Handles and displays API errors gracefully.
  • Toggle Todo Status
    • Toggle completion status of individual todos.
    • "Toggle All" functionality to mark all todos as complete/incomplete.
    • Only changed todos are updated via API.
  • ✏️ Rename Todos
    • Double-click to edit a todo.
    • Save on blur or Enter.
    • Cancel on Escape.
    • Automatically deletes if the new title is empty.
    • Inline loading spinner and error handling.
  • 🔍 Filtering
    • Filter todos by All, Active, or Completed.
    • Uses visual indicators to highlight the selected filter.
  • 🧠 Smart UX Enhancements
    • Loader overlays on every async operation.
    • Disabled controls during in-progress actions.
    • Input auto-focus and state preservation on errors.
    • Real-time error notifications with auto-dismiss after 3 seconds.

Tools Used

HTML
CSS Modules
JavaScript
React (TypeScript)
React Hooks
GIT
Vite
Fetch API
Cypress (E2E Testing)