HPAI · Finished editorial example
Reading-list app: completed build brief
User and problem
One person wants to track books to read on one device, without an account.
Core flow
Enter a title → add → mark complete if read → remove after confirmation.
Acceptance criteria
- Blank or spaces-only input adds nothing and shows a helpful message.
- A valid trimmed title creates one item and clears the field.
- Duplicate titles have different IDs; checking or removing one affects only that item.
- A refresh restores saved items when storage works.
- A failed save shows a persistent warning; the list still works in memory.
- Malformed saved data is not silently overwritten.
- Titles are shown as text, not interpreted as HTML.
- Labels, buttons and checkboxes work with the keyboard.
Storage decision
Use browser localStorage, key helppromptai-reading-list-v1. No cloud sync or permanent backup. Clearing browser data can remove the list.
Removal decision
Ask for confirmation. Cancel leaves the item in place.
Three milestones
- Labelled form, trimmed input, visible list and status messages.
- Unique IDs, independent completion/removal and keyboard checks.
- Validated JSON storage, visible save failures and reload checks.
Non-goals and stopping point
No accounts, payments, recommendations, backend, cross-device sync or publishing. Version 1 is complete when the eight criteria above are checked.