Expense App Heuristic Evaluation

Expense app

The app can be found here.


Cannot edit expense table entries

Heuristic: User control and freedom

Severity: Major

Description: The user cannot edit entries once they have been entered and must instead reenter and delete. This is inefficient, requiring the user to target the mouse back to the form for a new expense and click another button to delete. It also risks burdening the user's working memory if the entry to be copied and edited is far enough down the table such that it cannot be viewed simultaneously with the form.

Recommendation: Allow users to edit the table entries inline.


Undo and save buttons are enabled regardless of status

Heuristic: Visibility of system status

Severity: Minor

Description: The undo and save buttons are clickable even in states where they have no effect and provide no feedback. These states are: when undo has just been pressed, and when the user either not logged in or is logged in as someone without write permissions to the storage. That the buttons are enabled obscures the user's state, and the user may click the buttons mistakenly believing that something was undone or that data was saved.

Recommendation: Disable the buttons when they have no effect or even remove the save button if the user is not logged in.


Alert popup makes for inefficient error recovery

Heuristic: Error reporting, diagnosis, recovery

Severity: Minor

Description: If the user tries to add an expense without filling out the title field, an alert popup appears. To recover, the user must close the popup and then refocus on the the input field, requiring either multiple keystrokes or two targeting tasks with the mouse.

Recommendation: On incomplete submissions, focus the offending input field and use HTML's form validation dialogue box to indicate the fix.


Sorting of table entries is inconsistent

Heuristic: Consistency and standards

Severity: Minor

Description: Entries with dates float to the top of the table and are sorted chronologically, while the remaining entries are placed after the ones with dates and are sorted by insertion order.

Recommendation: Require the date field for all entries (perhaps have it set by default to today's date for efficiency); or, allow users to toggle view between dated entries, undated entries, or all entries.