Side Projects

Open Source Collaborations

runEver

A non-commercial open-source Electron browser project with AI-assisted workflows.

ElectronReactTypeScriptTailwindCSSAI SDKMCP

web-skill

A non-commercial open-source framework for exposing task-level web APIs to people and AI agents.

TypeScriptViteZodOpen Source

Side Projects

ReSleep

An in-progress native Swift prototype for improving sleep.

SwiftApplication

Soniqo

An in-progress macOS menu bar app that routes audio output according to the screen containing the playback window.

SwiftmacOSAppKitMenu Bar

Hacker Pen

An in-progress Hacker News client with a reusable design system, AI summaries and translation modes.

DartFlutterBLoCWebViewAI

Suica の Toy Box

A collection of simple yet useful tools for daily use. All tools run entirely in your browser or use lightweight serverless functions—no user data is stored on any servers.

Next.jsTypeScriptTailwindCSSServerlessPostgreSQL

SuicaUI

An experimental React and TypeScript component library for my personal design system, with reusable controls, navigation patterns and visual effects documented in Storybook.

JavaScriptTypeScriptTailwindCSSStorybook

animated_fixed_snack_bar

A lightweight Flutter widget for displaying fixed snack bars with a top-to-bottom entrance animation, published as a reusable package on pub.dev.

DartFlutterpub.dev

sponsor-me Chrome extension

A Manifest V3 Chrome extension that helps job seekers check whether a company can sponsor a UK work visa while browsing sites such as LinkedIn and Indeed.

JavaScript

Delete unused image for flutter project

A Dart command-line tool that scans Flutter source code for asset references and removes unused images, with configurable project paths and an optional strict filename mode.

Dartpub.dev

Spam sender

A private bulk-email tool built with Node.js, TypeScript and Next.js for sending product follow-ups to potential customers collected after an event.

Node.jsTypeScriptNext.jsServer

Wordle plugin

A React and TypeScript web tool that filters the Wordle dictionary from known letter positions and exclusions to narrow down possible answers.

TypeScriptNext.jsChrome Extension

Fuck off Zenly

A Node.js and TypeScript command-line tool that parses a Zenly GDPR HTML export and converts its location history into GPX for import into apps such as Fog of World.

ServerTypeScriptNode.js

AsthmaResearch Server and dashboard website

The private Node.js and Express.js backend and research dashboard for my master's dissertation, handling weather data, encrypted health-data transfer and web rendering.

ServerWebsiteJavaScriptNode.jsReact.jsE2EE

AsthmaResearch

A private SwiftUI research app from my master's dissertation for recording and visualizing health data, securely sharing it with clinicians or researchers, and receiving health plans across Apple devices.

ApplicationSwiftSwiftUIResearchKitHealthKitCareKitCryptoKitNode.jsExpress.js

UKCovid

A SwiftUI learning project that used NHS APIs, maps and postcodes to present daily UK COVID-19 cases and deaths alongside figures for the user's local area.

ApplicationSwiftSwiftUI

EmojiTetris

An experimental SwiftUI game created for WWDC, using a Tetris-style mechanic as a playful metaphor for conflict and discourse on social media.

ApplicationGameSwiftSwiftUI