Todo lists are a helpful way of organizing the tasks that you need and/or want to do, but for people with ADHD/ADD, it can often be very difficult to actually find the motivation to check an item off that list. When the list gets too long, it can feel especially overwhelming.


One of the most effective means of self-motivation I've discovered is regular self-affirmations. By lifting your spirits, it's much easier to move that energy and apply it to something totally unrelated—like Newton's law of emotion.

This project is a Progressive Web App that requires you to say something nice about yourself every time you want to add a new item to your todo list. Rather than view all of your todos at once in a daunting list, the todo viewer picks a random one to show you, but also picks a random affirmation to display right beneath it. This way the user experience is more focused and kinder than a standard to do list.

Task and affirmation view Task and affirmation composition view

Concept design for beta version

Usability Feedback

I completed a working alpha and conducted a remote usability study with the intent of redefining the scope of the project. There was a lot of interesting feedback so I’d recommend checking out the explanation of methods, results, and implications if you’re curious about this project.

I’ll try to summarize, though. There were a few complaints about missing functionality, like an “undo finish task” button or a screen to view all previous accomplishments. Most feedback was about mismatching expectations.

  1. Functional: Respondents noted a lack of undo buttons, small button height and handwriting font size, requested cross-device data sync, and a screen to view all accomplishments thus far.
  2. Cognitive: Respondents pointed out confusing language in the link titles—especially on the Add form, confusing empty/default state messages to the point of actual frustration, and a difficulty with coming up with self-affirmations.

The most helpful feedback in narrowing the scope of this project was from users who struggled to write self-affirmations and users who wanted more fine-grained control over the data. These are essentially the two opposing extremes of competency levels when dealing with emotions around task management. Secure users want stronger controls/models and insecure users are avoiding interaction altogether. I determined from this that the primary demographic for this project is insecurity, and my goals are to address their needs and concerns to keep them engaged in positive mental health. The first solution I’ve been working on to address avoidance/stress when writing self-affirmations, is to provide prompts from the system. I’m also reviewing existing psychology literature for other methods of increasing self-efficacy.

Alpha feedback from UX survey

Closing Thoughts

I’ve been going back and forth for a while on which direction to take this project. I setup versions with the same functionality in both React and Vue, with the intent of making design systems, new components, and localStorage easier to implement, but I had issues with both frameworks in trying to customize my usage of localStorage and the serviceWorker API. The Workbox plugin for Webpack is eternally frustrating as I can’t seem to wrap my head around the docs, or how Create React App deals with Webpack plugins, and I’ve yet to find a friend who understands either Webpack or Workbox well enough to help me with the project. I have found some promise in using CRACO on other projects, but since I’m already working on another React project, I’ve resolved to use this project to keep my vanilla JS skills sharp.

The concern now lies in whether to continue to scale up my usage of localStorage or move to a centralized database. The benefit of moving to a central db is to offer cross-device data syncing. However, this comes at the (literal) cost of creating and maintaining a database, adding account/login functionality, session/token authentication, and moving this project to its own server droplet, to protect my other portfolio projects. All of which would be great, but require a bit more resources than I want to give at the moment. Therefore I’m staying on track with the original build system, for the time being.

I’m now in the midst of responding to usability feedback in new Figma designs, and building in new pages and features.