Flight Log

December 17, 2025

I enjoy keeping a list of things, whether it is favorite music for the year, best Simpsons episodes, or just something random. I have also gotten kind of hooked on avgeek videos the last couple of years, so it spurred in me the idea of keeping a history of flights I have taken in a log here on the site. I figured it would also be a good way to try out some new web tools and technology along the way. This week, I finally published the log and wanted to share how I got here since it was a bit of a process.

This site is built using the Astro framework. A couple of versions ago, a feature called Content Collections was added allowing for a nicer developer experience integrating different ways to store data for the site. My initial work started with creating some JSON files, one for each flight and seeing where it would go. What I quickly discovered is any sort of data relationship gets a bit fragile because you either have to repeat the data for each flight or maintain entire other collections and try to keep them related. It is all doable with Content Collections, however, the editing experience becomes rather unpleasant quickly.

I decided to take a break from how the data is stored and instead figuring out what data I could actually collect. I found that I could get flight numbers for every flight I have taken going back to 2013 pretty well. However, finding data for the flights older than a year or so presented a challenge. Doing some searching, flightstats.com seemed like a decent option to get the data. I paid for a month subscription and was able to save out the data from each flight into a text file.

At this point, I was still looking to get the data into JSON format. I decided to see if AI could help read the text files I had copy and pasted from a web page and make data out of them. After some back and forth, AI did manage to get most of the data organized for me. It made a few mistakes but still ended up being a time saver overall. However, I was back to solving the issue of whether JSON still made sense. I used the files to create the Content Collection and did a first draft of the log. After tinkering with it for a bit, I realized that it would get the bare bones done but doing any sort of reporting or more interesting displays of the data were going to be difficult. I needed a database.

Rewinding a bit, while gathering all of the data, AstroDB was announced. From some previous explorations, I looked at Supabase and other cloud databases but come away disappointed. They are fine tools, but I didn’t want to build a full CRUD app to use them. I also didn’t like that my data was living in another service, even if I could get it out relatively easily. I then came across an open source tool called Manifest that allowed you to define a schema and it generated a data store for you. It was an interesting concept, didn’t truly solve the problem. In writing this, I found that they have pivoted away from that tool and now are doing something with AI (of course).

Most of this work was focused around getting a data store that worked with Content Collections. After a bunch of time not finding a solution, I decided to expand my search and see what other options were available. I quickly found that using a SQLite database would solve a lot of my problems. First, it was a single file stored in the site repo. Second, it was a true database, so I could use a tool for entering data. Third, AI could help me generate insert statements from the previously created JSON files.

With the data store solution in place and the data migrated in, the last part was sprucing up the actual display of the data. I willingly admit, I am not a designer. I can make something super basic and I still have opinions about design, but I don’t have that creativity to make up something. This is a spot where AI could help out. I gave a general suggestion of what I wanted to Claude and it presented some options. After some back and forth, I settled a display of the data I liked. AI helped suggest code and styling to implement. I wouldn’t quite call it vibe coding, more an assistant on the side to speed things up.

All in all, I am happy with the final product. It feels more polished than previous attempts at a project like this. I still have some more features I want to add but feel they are doable. Also, with the SQLite solution, I can swing back around to have it solve some other for fun projects I have been thinking about for years.