This year some people I follow did one of the coolest things I’ve seen. They started a coffee company were you can order from the TERMINAL! You can simply ssh into their domain terminal.shop. I would encourage you to enter ssh terminal.shop into your terminal of choice to check it out. A fully rendered ui in something as simple as the terminal. A ‘tui’ of sorts (that is to say a terminal ui). This piqued my interest in making my own terminal application. I decided on a to-do list application that I could use at work because I’m constantly writing down items and gets really annoying when you misplace your notepad or sticky note.

Since I have been working with javascript for so long I thought node.js wouldn’t be a bad place to start. The first step was to find a node package that facilitated building a ui in the terminal window. blessed was the package that went with mostly due to easy-to-understand documentation in their GitHub repo. I was able to fairly quickly make a prototype of the application that gave a view of all your tasks along with the ability to create, remove, and mark tasks complete. I even added a fancy ASCII art title screen and configured the script so that when installed globally you just have to enter todo from any directory in your terminal to access your list.

I was excited to show off the first build of my project, but there was still one thing that bothered me. You have to have node installed on the machine to be able to run the application….

A couple months have passed since the creation of the first application and I am listening to the podcast How About Tomorrow? with hosts Adam and Dax, both cofounders of terminal.shop. Partway through they started to mention their continued work on terminal.shop and they brought up the technologies they used to create it. Go was mentioned along with the bubble tea library. I put my helmet on and started spelunking the web for more info. I have previously known of Go (aka Golang) as a memory-safe lower-level language that I haven’t gotten the chance to work with. Since my interest in building tui applications still was simmering what better way to learn a new language than by rewriting one of your existing applications.

I ran through a large majority of Go’s learning material. Also had to get used to Go’s package management system, but so far enjoying the language. Bubble tea allows me to build individual views that run on an update render loop. Accompanied by bubbles for adding more ui components and lipgloss for styling that draws a lot of inspiration from traditional css styling. Building onto the ideas of the previous application I added the ability to edit tasks, built out pagination, added SQLite support instead of using json, displayed the date and time of task completion, and created a more interesting and visually appealing design. Writing an application in Go also lets me create builds of my project to wrap this all up together in an executable application.

With that, I present ToGo, a go-based task-tracking application:

Try out the application for yourself! I uploaded release 1.0.0 to GitHub so download the application and start tracking your tasks now!

Glad to finally be done with this project. Hoping to try some new stuff with Go in the future but moving on to game dev for a bit. A couple friends and are working on a game in the Godot engine using Godot script. Maybe you will see some updates on that here in the future!