This portfolio
The site you are reading. Astro with a two-layer token design system, internationalisation from the start, and ten guards that check the built output itself.
Everything I built because I wanted it to exist, rather than because someone commissioned it. Some of it shipped and is in use; some of it was built to answer a question and then parked.
Published, running, and used by people who are not me.
The site you are reading. Astro with a two-layer token design system, internationalisation from the start, and ten guards that check the built output itself.
The Astro portfolio before this one, built with Umer Farooq and kept live because it is the site that won the contract to move a commercial WordPress site to Astro.
A productivity and personal finance app I designed, built and published to Google Play. Fully usable offline, and synced across devices when back online.
A habit tracker built as a role-playing game. Daily consistency earns experience, tracks level up over months, and a contribution heatmap makes a broken streak visible.
Collects verses, translations and metadata into a structured, queryable local set, with a command line interface over it and markdown conversion for the output.
A markdown notes application with a Django REST API behind it, a React front end with a live editor, and sign-in through Google rather than another password to remember.
Posts listings to Facebook Marketplace on a schedule from a config file rather than by hand. Public, and the most starred and most forked repository on my account.
A task tracker that watches whether the things on the list actually got done, rather than only recording that they were planned, written in C++ as a desktop tool.
An appointment system rebuilt on Laravel, taking an earlier plain PHP project and redoing it on a framework specifically to see what the framework was worth.
Collects a complete product catalogue including the detail page behind every listing, rather than only the fields visible on the listing rows themselves.
Collects market data on a schedule and writes it straight into Google Sheets, so the analysis lives in the tool the client already used rather than in a file to import.
A COVID-19 dashboard and the data parser behind it, built to make the numbers legible to the public, and run publicly for around eighteen months.
A social platform covering accounts, profiles, posts, feeds and the interactions between them, built early on, and the project that taught me a feed is a read problem.
Downloads a single video or an entire playlist, or reads the metadata without downloading anything at all, from one command line entry point.
A tool that encrypts the contents of a CSV against a separate key file, so the data cannot be read or recovered without the key that produced it.
A scraper for Papers with Code that extracts each paper's title, description, date and category, along with links to its repository, PDF and dataset.
A bike management system backend built on API blueprints and SQLAlchemy, written as an authenticated middleware layer with validation and developer documentation.
An early chatbot that added to its own answer set from the conversations it had, written in 2021 when building one meant writing the matching logic yourself.
A point of sale application for shops and pharmacies covering stock, sales and receipts, written in Java as a desktop tool for counters with no reliable connection.
A Python tool that generates a sitemap for a site, validates the result against the specification, and submits it to Google, all from a single command line entry.