Extended guided project · Code the Dream
CTD Todo App
A React task manager with Airtable persistence, inline editing, and searchable, sortable lists.
My role: Developer
Try the search and sort controls to explore saved tasks. The live demo uses a shared Airtable list.
The problem
A task list should respond immediately without implying that a failed save succeeded. Search, sorting, and editing also need to stay consistent as API requests finish.
The solution
Tasks update immediately while saves run, with failed changes rolled back and an error shown. Debounced search and cached sort/filter combinations keep the list responsive while reducing repeat requests.
My contributions
- Organized asynchronous Airtable operations in a custom hook backed by a reducer and shared context.
- Added debounced search, cached sort/filter combinations, and optimistic add, edit, and completion flows with rollback on request failure.
- Expanded Vitest and React Testing Library coverage for API errors, cached views, forms, and keyboard navigation; added GitHub Actions checks on pull requests.
Behind the project
Started as the guided React project in Code the Dream's Lark cohort, then expanded through bonus objectives and further refinements. I developed the task interactions, Airtable integration, shared state, and tests beyond the initial list.
Engineering decisions
A failed create request could leave an unsaved task visible until the next refresh. I remove the temporary task when the request fails and restore the previous task state when an edit or completion cannot be saved.
Testing
The standard test suite uses mocked Airtable responses and a local fixture, including checks for optimistic rollback, search escaping, caching, and keyboard interactions. A separate, opt-in integration test reads from Airtable to check connectivity.
- Repository
- mnichols08/ctd-react-v3-guided-project
- Repository updated