This widget uses a very simple, custom built hash-set structure to maintain the set of to-do items. This is how we compare any new item submitted by the user against the set of existing items to disallow duplicates. The widget itself is little more than a GUI for accessing a hash set of strings.
The To-Do List also auto-saves your inputs to local storage using the HTML5 localStorage API.
The source code of this widget is available at https://github.com/xerocross/xerocross.do. The widget is written using Vue, and the package on GitHub contains ample unit testing.