Software Development / Foundations

Build a resilient reading-list app.

Build a small reading-list interface that stays useful when data is slow or unavailable. Design its states, implement local fixtures and show how you tested recovery. Three tasks · suggested effort 8–12 hours. No paid API or external service account is needed.

Practise: JavaScript · API integration · Error handling

Find this project in your workspace

Sign in to see current enrollment availability. Learning and certificates are free. No stipend or placement promise.

Your three-part brief.

01 Define the data and screen states

Design a reading-list app using this supplied fictional JSON fixture: {"items":[{"id":"r1","title":"Designing a clear form","topic":"Design","minutes":6},{"id":"r2","title":"Checking a data table","topic":"Data","minutes":8},{"id":"r3","title":"Making links accessible","topic":"Web","minutes":5}]}. These titles are exercise records, not published articles; an item detail should show its supplied metadata without a fake article link.

Define a typed data contract and sketch loading, populated, empty, failed and retry states. Let the user filter by topic and mark an item as saved locally. No login or server-side personal data is required.

Submit a document, images, presentation or spreadsheet with the contract, state diagram and wireframes. Review criteria: missing or invalid data is considered, every error has a recovery path and the design preserves context while loading.

02 Implement fast navigation and recovery

Build the reading-list app with a local fixture or a local mock endpoint. Add a controllable delay and failure switch so reviewers can reproduce loading behavior. Keep already loaded items visible during refresh and prevent duplicate requests for the same resource.

Store saved item IDs locally, explain the lifetime of any cache and provide a way to reset practice data. Handle an empty array and malformed responses. Use semantic controls, keyboard focus and readable text. Do not embed secrets or depend on a paid service.

Submit a document, images, presentation or spreadsheet with screenshots of success and recovery states, a source link and run instructions. Review criteria: navigation reuses loaded data, retry works, the interface distinguishes an empty list from a network failure, and saved state behaves as documented.

03 Prove the behavior under slow conditions

Demonstrate the app with a delayed response, one failed request, an empty list and a malformed payload. Record the request count when revisiting an already loaded screen and after an explicit refresh. Check that a stale request cannot overwrite newer results after a filter or reset.

Write meaningful automated checks where practical and a manual checklist for visual states. Report timings with the device/browser and delay settings used. Add a short README documenting architecture, cache behavior, known limits and how to reproduce each scenario.

Submit a document, images, presentation or spreadsheet with the test evidence, results and repository link. Review criteria: reproducible scenarios, correct request counts, useful recovery and an honest account of what was measured.

From practice to a portfolio.

Submit documents, images, spreadsheets or presentations, and add links for larger work. Reviewers can approve your work or ask for changes. Keep working on your other tasks while you wait; when all assigned work is approved, your certificate becomes available.

Label the scenario and any supplied data as fictional practice work when you share your portfolio. Explain your own decisions, checks and remaining limitations.

Explore the other briefs