Projects

Side projects I build and maintain, mostly to learn something or because the tool I wanted did not exist yet. A few of these have their own case studies with more detail on the problem, approach, and outcome.

Whisky Collection API

  • Rust
  • Axum
  • PostgreSQL

A REST API for tracking whisky collections and tasting notes, built with Rust and Axum. It lives in this monorepo with its own toolchain, test harness, and migration-driven PostgreSQL schema. This is the project I use to write real backend Rust — routing, typed extractors, proper error handling — instead of just reading about it. What it taught me: Rust's type system forces decisions about your data shape up front, which is uncomfortable at first and then makes the rest of the code much harder to get wrong.

tools.joostvanderlaan.nl

  • HTML
  • Python
  • uv
  • Playwright

A growing collection of 180+ standalone HTML tools — each a single page that does one narrow job, with no framework, no bundler, and no client-side build step. A Python/uv script handles the build and Playwright runs the tests. What it taught me: keeping a tool boring is usually the fastest way to end up with something I actually keep using.

Kids Tools

  • Product design
  • Zola
  • Affirmation cards

A product studio for children's affirmation cards: brand assets, design tokens, generation workflows, and a showcase site. The stack and commerce platform are still being chosen, so right now it is a design-and-content workbench rather than a shipped product. What it taught me: treating product decisions (target audience, tone, visual identity) with the same version-control discipline as code keeps the creative side honest.

Home Assistant infra

  • Home Assistant
  • YAML
  • Automation

Declarative configuration for my smart-home setup — automations, scenes, scripts, and blueprints — versioned in this monorepo like any other codebase. What it taught me: treating home automation config with the same review and change-history discipline as application code catches mistakes long before they trip a light switch at 2 AM.

This website

  • Zola
  • Tailwind CSS
  • GitHub Actions

joostvanderlaan.nl itself — a Zola static site with Tailwind CSS layered on top, deployed via GitHub Actions from this monorepo. It includes a mental-models reference section, a merge queue with auto-revert, and a shared agent harness for AI-assisted development. What it taught me: a personal site is a good forcing function for actually finishing small things end-to-end, from content to CSS to CI, instead of leaving them half-done.