Essential session storage is required to sign in. Optional analytics remain off unless you allow them.
Build a page that fetches data from a public HTTP API with fetch + async/await and renders it to the DOM. Handle the full async lifecycle: a loading state, a caught-and-displayed error state, and the success render. Add a search/filter input that's debounced, and run independent requests in parallel with Promise.all where it helps. No unhandled promise rejections.
async/await used correctly; errors caught with try/catch (or .catch); no unhandled rejections; parallel vs sequential chosen deliberately.
Explicit loading, error, and empty states are rendered — not just the happy path.
Response checked (res.ok) before parsing; JSON handled safely; input debounced to avoid request spam.
Logic separated from rendering; no race conditions where a stale response overwrites a newer one.
Use this README structure to make the work reviewable.
DevPath fetches a read-only, size-capped snapshot. Submitted code is never executed.
# Fetch and render live data with async/await ## Goal Build a page that fetches data from a public HTTP API with fetch + async/await and renders it to the DOM. Handle the full async lifecycle: a loading state, a caught-and-displayed error state, and the success render. Add a search/filter input that's debounced, and run independent requests in parallel with Promise.all where it helps. No unhandled promise rejections. ## Acceptance criteria - [ ] Async correctness: async/await used correctly; errors caught with try/catch (or .catch); no unhandled rejections; parallel vs sequential chosen deliberately. - [ ] UX states: Explicit loading, error, and empty states are rendered — not just the happy path. - [ ] Data handling: Response checked (res.ok) before parsing; JSON handled safely; input debounced to avoid request spam. - [ ] Code quality: Logic separated from rendering; no race conditions where a stale response overwrites a newer one. ## Verification - [ ] Document installation and run commands. - [ ] Record automated checks and their exact commands. - [ ] Add representative output, screenshots, or a short demo where useful. - [ ] Confirm failure paths and known constraints. ## Decision log ### Decision title - Context: - Choice: - Alternatives considered: - Tradeoffs: ## Evidence - Link each rubric criterion to the file, test, or artifact that demonstrates it. ## Known limitations - List what is intentionally out of scope and what should be improved next.