Down the line, I've often come to realize during (or after) design hand-off: "hmm.. is this well-thought" or "this design does not seem to take this into account". Therefore I've created a checklist to go through, before and during design phase, to make sure most design decisions has been properly addressed sooner rather than later.
Feel free to fork it, contribute, etc.
This is NOT a set in stone "my way or the high way" document. This is a checklist to verify that design principles are well-thought AND an overview of approaches that deviate from these, to make sure that we have proper argumentation for doing so.
- How does this look like on tablet/desktop (in case of mobile first approach)
- How does tihs look like on mobile (in case of desktop first/only approach)
- Consistency on "save" actions. Either always click a "submit" button or always auto-save.
- How does the CTA look when in hover/active state.
modals, overlays, popups, alerts, etc.
- No double modals (indicates a broken user experience if we're forced to do a modal on top a modal)
- Modals can be closed on button AND clicking the dimmed background
Shown/hiddens menus
- Use click actions to activate (using hover/mouseover might trigger section unintentionally by user)
- First section doesn't take up whole viewport height size (at least give user an indication that more is to come by scrolling/clicking).
- Design is not only useful with "perfect" data.
- Design does not restrict content to "perfect" data.
- Search is visible on page (if only visible by click, then at least autofocus search field when clicked).
- Headings follow an ordering pattern (e.g. .h1 more prominent than .h2 and .h3, etc).
- Text inputs has labels (not only placeholders).
- Text inputs take advantage of native scrollwheels on mobile (e.g. datetime-local).
- Show restrictions to input up front (e.g. "We only accept VISA and MasterCard" or "Should be a valid email format").
- Select inputs doesn't disable native behavior (e.g. scrollwheel on mobile).
- Show all possible errors at once to prevent circle feedback and multiple user tries