joshuayou.dev
About This Website
I built this website for a couple reasons.
First, I wanted to work on a project where I could sit down and properly learn some front-end development. It is something I have always wanted to do but had always put off for one reason or another. My goal was to get to a point where I could reliably build the UI components that I imagine in my head without too much trouble.
But more importantly, this website also serves as a medium for me to share my knowledge and experience to whomever can benefit from it. One of my favorite things about the internet is the generosity of the people who are willing to share what they know, even to complete strangers. I would not be where I am today without the help of these kinds of people. Through my blog, I hope to pay forward the same generosity that I was shown.
Tech Stack
Zola
The main backbone of this project is Zola:
To those who are unfamiliar, static site generators (SSGs) help you create web pages quickly by providing ways to template pages, organize them into categories, create reusable web components, etc.
For this project, I was deciding between Zola and Hugo, which seems to be the widely considered go-to SSG. I chose Zola primarily because it is written in Rust, a language I am deeply familiar with. If I ran into issues or unexpected behaviors, I felt confident that I could dive into the Zola source code and figure things out.
Tera
Zola features a custom-created template engine, Tera, specifically designed to get away from Hugo's "(insane) Golang template engine." Ignoring the tediousness of sprinkling its {% %}
delimiter syntax everywhere, Tera is quite easy to use and provides pretty much all the tools you need for creating reusable HTML components.
HTML, SCSS, JavaScript
I intentionally avoided using frameworks like React, or libraries like Tailwind, so that I could properly learn the fundamental web development tools. And for small scale projects like this website, vanilla HTML / CSS / JavaScript is all you really need to get the job done. The one exception is Sass (SCSS), a CSS preprocessor framework that I thought would be interesting to learn along side CSS (and not be too distracting).
CloudFlare Pages
There are many good choices for deploying and hosting websites, especially for static ones like this. The two main options I looked at were CloudFlare Pages and Github Pages. I honestly did not spend too much time researching here as I felt both options were incredibly similar and viable. They both automatically deploy / update from a repository, are free with generous usage limits, allow for custom domain names, etc.
I went with CloudFlare since I already use it to manage my domain. Plus, they offer other products like Workers that I might decide to use later on.