About this site

If you're a web developer and you care about how the work is done, here are some details. The site's not open source but it might be one day.

  • The site is primarily Gatsby, a framework for building websites in React. I enjoy the reusable component model of React, and Gatsby takes care of the tiresome routing, transpiling, and hot-reloading that can make it annoying to get started with React.
  • All the bits of the site that you see are almost totally static, rendered at build time (another Gatsby feature) and served as plain HTML for speed, SEO and accessibility.
  • The site is hosted on Netlify. When I push an update to GitHub a webhook triggers a rebuild of the site, which is then pushed to Netlify's CDN.
  • The site has a (barely) hidden admin screen which lets me create, update and delete posts. The admin screen is a single-page React app, powered by an API composed of Netlify Functions, which are mostly AWS Lambda functions. The functions are part of the same repo as the rest of the website and get built and deployed in the same way, which is a lot more convenient than regular Lambda.
  • The admin screen is secured first by using Twitter for authentication (the twitter-lite package) and then checking the database for authorization (there is currently exactly 1 user authorized to do anything: me). This is clearly overkill but it was fun to build.
  • Ultimately all the data is stored in MariaDB, on the cheapest possible AWS RDS plan I could find. This is also overkill because the database really only needs to exist at build time, a big JSON file somewhere would work almost as well. But I like databases, so the site has a database.