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.
- 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
- Green Claws now available on the App Store β 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
- Time Tutor now available on the App Store β My second iOS app is out. A clock face that teaches the 12-hour and 24-hour clock at the same time, and it started life as a web page I built for my son
- Moons now available on the App Store β My first iOS app is out. Twelve people you want to stay close to, in orbit around you, drifting further out the longer you go without speaking
- 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
- Quick save and smarter tags in Otter β Saving to Otter is now one tap from the browser extension and the iOS share sheet, and auto-tagging no longer invents tags
- Otter Reader β The native Otter iOS app is now Otter Reader, a read-later list that works offline, with RSS feeds that run on the phone and need no account
- shotframe β A small CLI that turns raw simulator captures into App Store screenshots: a device frame, a heading and a line of copy, at exactly the size the store wants
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





