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.