Corey O'Donnell
Software Engineer
Building a VSCode Extension: Part One
Affiliate links may earn commissions.
I have been looking for a fun side project to work on in my free time. Building projects is the best way to actually improve your skills as a developer. I decided that I will try to document my journey publicly to help share my thoughts and decisions.
What am I going to build?
I have been spending a good amount of time working on my time management. Managing my daily tasks has been something I needed to improve. I currently write down what I plan to do for the day in a notebook. Notebooks are nice but it makes it difficult to organize the tasks besides by date and order. How can I dynamically group them by project, adjust priority as my day changes, roll them over to the next day without having to rewrite them? I decided to create a task manager built into VSCode.
I am sure there are other extensions that already do this but that is not the point. The plan is to use this as a learning experience and build something specifically for me. I get to determine what features are important and how they tie into my workflow.
Problems I am solving
- I spend most of my day with VSCode open on my computer as a Programmer. It would be nice to have all my tasks for my projects in one place.
- I want to have a board similar to Trello where I could easily click and drag to move tasks between statuses and adjust priorities.
- Most of my daily notes are Markdown in a repository. Having the ability to link my notes through wiki links using something like Foam would be a plus.
Thinking through the Tech Stack
The tech stack I plan on using:
- TypeScript
- Vscode's API already uses it.
- ReactJS
- It might be a little overkill but why not.
- Tailwind CSS
- I want to easily be able to style the webview and I love using utility classes for styles.
- Markdown
- I already take my notes in Markdown and it would make it easier integrating with foam.
- GitHub Markdown has a task like syntax I could utilize and then you are not forced to use the extension to manage your tasks.