Important
πΌ I'm looking for my next role! I'm a product engineer with 18 years of experience, specialising in front-end development and design systems, and I'm available now. If you think I'd be a good fit for your team, email me or take a look at zander.wtf first.
- ZUI β a CSS-first UI library with design tokens, a layered architecture, and optional React, Astro, Solid & Vue components. No build step required.
- Otter β my self-hosted bookmarking app: links, articles, videos and half-watched TV shows, saved and tagged on your own infrastructure. It now has a native SwiftUI iOS app alongside the browser, Raycast and terminal clients.
- astro-d1-search β full-text site search for Astro backed by Cloudflare D1 and SQLite FTS5. Build-time indexing, an injected
/api/searchendpoint, and no third-party service. - Flora β every plant in our house and garden, written up: what it wants, when it flowers, and what needs doing to it before the frost.
- Reps β a daily JavaScript coding puzzle. Solve one function a day in your browser.
- Free Fonts β a curated showcase of free, high-quality typefaces to browse and preview.
- Simmer β a recipe management app.
- zander.wtf β my website/portfolio/blog, built with Astro, where I write about things like the CSS features powering ZUI, my zero-to-one tech stack, and evaluating AI agents through side projects.
- zed-stack-starter β a modern full-stack React starter: Postgres + better-auth + Drizzle ORM, deployed to Cloudflare Workers.
- zed-astro-starter β an opinionated Astro starter with ZUI, ready to deploy to Cloudflare Workers.
- My lab β experiments, little tools and things in progress: a drawing app, a keyboard-only navigation demo, a data transformation dojo, a draggable 24-hour clock and more.
- A flurry of small tools and libraries:
- react-status-bar β a portal-based status bar system for React
- Spotify Favourites β find your actual favourite artists, not just the biggest play counts
- Lang Compare β programming language features side-by-side
- Surround for Zed β a Zed extension written in Rust. Never made it into the extension store, so it's a work in progress: clone the repo and install it locally to use it
- npm packages like strifx, xtractr, url-merge and kit
- my various Raycast extensions
Many of these were built while putting AI coding agents (Claude Code, Cursor, Amp) through their paces on real work β I wrote about that in Things I've been building recently while evaluating AI agents.
- Introducing astro-entry-meta: drafts, reading time and git info for Astro collections β A new package that adds drafts, scheduled posts, reading time and git info to Astro content collections, and replaces astro-git-dates
- Introducing astro-d1-reactions: hearts, reads and highlights for Astro in one integration β A new package to add hearts, reads, reader highlights and a stats page to your own Astro site
- Introducing Lil' Debugger β I've hacked the same debug overlay into almost every job I've had, so I finally made it a proper package that shows the data behind any element when you hold Ctrl+Shift
- Reps: Wordle, but with JavaScript β A write-up of the interesting parts of the daily JavaScript puzzle game I built in June. Puzzles as YAML data, a Web Worker sandbox, and a CI pipeline that deploys a playable preview of every submitted puzzle
- Introducing Green Claws β My third iOS app is out. How a plant list I made because I'm a bad gardener turned into a microsite anyone can generate, and then into Green Claws, an iOS gardening app for the UK and Ireland
- Moons 2.2 β The widget is the orbit now, you can pick how each person gets called, mis-logged catch-ups can be deleted, and shaking the phone re-deals everyone
- PR Elsewhere β PR Elsewhere is a Chrome extension that adds a View in menu to GitHub pull requests, and it's now on the Chrome Web Store
- Watts Up β Watts Up is a Raycast extension that shows your MacBook's charger wattage, charging power and battery health, and it's now on the Raycast store
- Keyboard shortcuts β You can now get around this site with single-letter keys, and pressing ? shows the full list
- No more hand-edited dates β A new package, astro-git-dates, sets a post or code note's date from its last commit at build time
- Moons speaks six languages β Moons 2.4 is out in French, German, Spanish, Portuguese and Japanese as well as English, with a feedback link for when a translation reads wrong
- A bedside screen for the time, my trains and the weather β A Raspberry Pi Zero W and a round 480Γ480 touch screen by the bed, showing the time, my next trains, the weather and the sun
Both lists update automatically from my feeds.
- π Most recently I've been a Staff Software Engineer and web team lead at Dare, maintaining and evolving their energy trading platform and building a new component library.
- I've worked for a wide variety of startups, agencies and companies like Fathom, Utopia Music, Babylon Health, Digital Futures, Heights, Curve and FairFX amongst others.
- π¬ Ask me about design systems, AI-assisted development, or what I think of React
- π« How to reach me: email or Bluesky
- π Pronouns: he/him/his
- β‘ Fun fact: I used to be an assistant cameraman and worked on many TV shows, documentaries and one movie
- ποΈββοΈ Golf
- π΅ββοΈ Mountain biking
- Making π Pizza & ππ₯ BBQ
- πΏ Movies
- π₯ Drumming
- π Salted Caramel
Tip
Feel free to say hello, fork my code or read my blog or checkout my blog/portfolio at zander.wtf





