TaskList
TaskList is a web application that I developed for a local law firm in Pensacola after they lost their existing tool.
Motivation
Why I created TaskList
My girlfriend works at a law firm in Pensacola, and her entire team relied heavily on Outlook's task feature. At some point, they lost access to this tool or it became insufficient for their daily operations. I had a lot of free time and decided that to fill my time, I would try to make an app that they could use — a simple todo app with the extra niceties that they needed and would use every day.
The App
What TaskList is and what it does
At its core, TaskList is exactly what it sounds like. It allows the user to create tasks with due dates and optionally flag them. After being created, they can be checked off and marked as done.
TaskList also has some more features that make it more tailored to what the employees at the law firm were looking for. The biggest example of this is the collaborative and real-time capabilities the app offers. Each user who is allowed access to the list receives real-time updates of what is happening in the list. This allows collaborative use without having to worry about keeping track of what everyone is doing at all times. Not everybody likes this, though, so they can opt out of this feature. In that case, they are provided a button that will refresh the list on command.
Additionally, TaskList offers some basic searching, filtering, and bulk actions. The user can search for keyword(s) in a task, filter by due date using a range, and choose some pre-built filters, such as "Completed" and "Flagged."
Technology
What I used to build TaskList
I chose to create a fully client-side application using Vite + React, for a couple of reasons. Firstly, I am hosting this app on Netlify, which is a serverless hosting option. This keeps costs low (as of writing, the client has spent nothing on hosting costs). To make sure the app works fast, a client-side app seemed like the best solution.
To enable the real-time capabilities of the app, I felt like Firebase RTDB was the right choice. I had worked with it during my Client-Side Programming course at UWF and loved the simple API and offline capabilities that come with it out of the box.
I wanted this project to progress rapidly, so that I could present the product to the law firm as soon as I was able. I wanted to focus on making sure the function was perfect, so the UI was the best place to find an aid. To help me, I chose to use ShadCN, as it allowed for rapid-paced development of the interface and also provided accessible components from Radix UI.
The Result
TaskList is still used daily at the law firm
After I finished developing TaskList, my girlfriend presented it to her boss and a few other employees at the law firm, and it was adopted as their official tool for keeping track of their tasks. After it was adopted, I did a full rewrite of the application as I wasn't quite happy with my initial solution. The coupling was too high and I wanted to implement more separation of concerns to allow for improvements to individual parts of the application easier.
Always Evolving
Since TaskList became the tool of choice for the law firm, there have been a couple of new features that were requested. As each came up, I talked with the requesting party to figure out what would work best, and each time was able to deliver a solution that was efficient, inexpensive, and worked best for the team.
To me, this is the best part of creating software that is used daily; learning of new problems that need to be solved and creating a solution for them is a very rewarding process. I also greatly enjoy watching the project continuously evolve into a tool that serves its users even better.



