Finding a Blog Tech Stack
When I first set out with the goal of creating a basic blog to document the assortment of random projects, it was unclear what method I wanted to use to create it. I knew that while blogs will always be static for the most part, I would want to add some beautiful code blocks, random interactive items, and other special unique components. There were a few factors I had in mind that I wanted to optimize for.
I knew that I wanted simplicity. Why would I ever bother throwing notes in a blog if that required even the possibility of fighting with JS build systems? My first solution to the simplicity question was a tech stack as old as the web itself: Vanilla JS, CSS and HTML. This just works. No build steps. No debugging large systems. Just throw the three files into a folder, and let the server handle all the routing by default. However, this method would introduce another issue that I really didn’t want to deal with: repitition.
While I didn’t want to deal with complexity, I really didn’t want to deal with repitition. I knew that I would be forever tinkering with the styling and format of the blog, and I certainly was not about to go back through all the previous posts to change the colors whenever the mood struck. I also knew that I had a few components in mind that I would want to use across many posts. This lead me to the land of component libraries. Namely, the world of React, Vue and the other component based interactivity libraries.
While this is an area I was somewhat familiar with, I certainly did not need a whole interactivity system to be running a mostly static site. This is not to mention that we have now swung to the other extreme, far from the initial goal of simplicity. I finally begain to cave into the world of frameworks designed for content driven websites. My inital desire to build my own, unique snowflake of a system was slowly being chipped away at with each new idea that had hit a brick wall.
So which static site system should I use? I had dabbled with Statamic a bit in the past. They certainly looked like a very polished, user friendly solution. Not to mention their founder Jack McDade being a large design inspiration to me. And also-wait McDonald’s uses Statamic? That’s kinda cool. Statamic just felt a bit like overkill. And, while Laravel is pretty awesome…did I really want to write more PHP. After this I “consitered” Wordpress. If we are being honest, I wasn’t about to choose to work on Wordpress in my spare time. My one short impression of it had been while starting out in web and was not a particulary fond one. While it did plenty of things, and certainly lowered the barrier to entry, it just felt…not cool. Finally, I came across Astro.
While I was initially not super excited about my choice to dive into a framework instead of custom building something unique, I was impressed with how simple it was to set up. Running the npm create command gave me a running site with everything framed out. I immediately was able to find the pages I wanted to rip out. I was able to easily create a blog post layout? And they have support for global styles? Components? MD files? Astro really was the culmination of everything I had been collecting on my list of custom framework features.
So what is the moral? Who knows. I really like Astro at the moment. It is a good mix of being customizable, letting me really build exactly what I want, while also providing the framework that I would have just ended up creating myself. It is more fun than Medium. It is more complicated than raw HTML/CSS/JS. There are tradeoffs with all the options, but Astro lives in a happy middle ground that seems to work for me.