Projects

A selection of my products, tools, and research.

Bike Neuks icon

Bike Neuks

Static, mobile-friendly map for finding nearby cycle parking across the UK, Ireland, Spain, and Armenia.

May 8, 2026

typescript, bike, cycling

Bike Neuks showing cycle parking around Edinburgh Waverley, with a map and nearby parking list.View full screenshot

The problem Finding somewhere to leave a bike means navigating parking data spread across council records and OpenStreetMap.

Behind the project
How I built it
I combine those sources in a browser-based map and split the parking data into small geographic chunks, so the app loads the area in view instead of the entire catalogue.
What it enables
Find and compare nearby parking, plan a cycle route, save routes, and export GPX files. The map covers the UK, Ireland, Spain, and Armenia.
Scranbook app icon

scranbook

Private, local-first food diary with editable vision-model and nutrition estimates, stored in the browser.

Jul 11, 2026

typescript, nextjs, pwa

Scranbook’s empty diary, with an invitation to add a first meal.View full screenshot

The problem Keep a useful food diary without making an account or handing a service the whole diary.

Behind the project
How I built it
I store entries and photos in the browser with IndexedDB. Manual entry works without AI; photo analysis is an explicit action that sends the selected photo to the configured model provider.
What it enables
Log meals, edit nutrition estimates, and export or restore a backup. The diary works without a dedicated application backend.
vidbgm app icon

vidbgmprototype

Local, Magenta-powered background music generation for video, built as a Rust CLI and Tauri desktop prototype.

Jun 13, 2026

rust, tauri, magenta

StyleMakar logo

stylemakarprototype

Local-first style rewriting app for turning drafts into a target voice while preserving meaning, constraints, and concrete details.

May 30, 2026

typescript, react, tauri

AyeRide app icon

AyeRide

Preview tricky turns, junctions, and route segments before cycling or driving, with maps and optional Street View. Built for preparation, not live navigation. Saved and recent briefings reopen offline on the same device, with no account required.

May 23, 2026

typescript, nextjs, pwa

AyeRide showing a cycling route from Princes Street to Portobello, with review points, a route map, and Street ViewView full screenshot
climatenet-mcp logo

climatenet-mcparchived

Retired MCP server that provided read-only access to ClimateNet environmental monitoring data from Armenia.

Apr 28, 2026

typescript, mcp, climate

aisdk-dt logo

aisdk-dt

CLI for inspecting Vercel AI SDK DevTools generations.json files so coding agents can query requests, responses, tool calls, timing, and usage without flooding context.

Apr 24, 2026

typescript, ai-sdk, cli

nest-zod logo

nest-zod

Zod-powered request parsing and response serialization for NestJS, with runtime decorators and optional Swagger/OpenAPI metadata.

Mar 29, 2026

typescript, nestjs, zod

VueMarkik logo

vuemarkik

Safe-by-default, extensible Markdown rendering for Vue.js, powered by unified, remark, and rehype.

Nov 22, 2025

typescript, vue, markdown

VueMarkik documentation showing a Vue Markdown component and its rendered output.View full screenshot

The problem Markdown in a Vue app needs to work with real components, plugins, and streamed updates while handling untrusted content safely.

Behind the project
How I built it
I render Vue VNodes instead of injecting HTML, sanitize the final syntax tree after plugins, and provide separate synchronous, asynchronous, and reactive rendering APIs.
What it enables
Use custom Vue components, code highlighting, maths, and diagrams inside Markdown. During incomplete streamed input, the reactive renderer keeps the last successful render.
cmdtime terminal screenshot

cmdtime

Oh My Zsh plugin that displays how long the previous command took to run, with compact, readable timing in the terminal prompt.

Apr 9, 2021

zsh, shell, oh-my-zsh

cmdtime terminal screenshotView full screenshot
SecretBox logo

secretbox

Small .NET Standard library for symmetric key encryption using the Gimli permutation, with a simple API designed to be easy to use and hard to misuse.

Apr 27, 2019

csharp, dotnet, cryptography