---
title: Projects
canonical: 'https://www.dealmobile.co.uk/projects'
url: 'https://www.dealmobile.co.uk/projects'
---

# Projects

Apps I run, and the libraries, tools and experiments I’ve built. Each has a page with how it works and how it is built.

## Featured

Where to start.

### [Mullet](https://www.dealmobile.co.uk/projects/mullet.md)

A Python tool that runs large coding jobs unattended with your own Claude Code, checks every step itself, and returns a branch and an evidence report.

### [Solar Calendar](https://www.dealmobile.co.uk/projects/solar-calendar.md)

A calendar where every month is the same four weeks, the year keeps pace with the seasons, and ordinary dates are shown alongside every day.

### [Where Should I Live](https://www.dealmobile.co.uk/projects/where-should-i-live.md)

A city-ranking app that works out your take-home pay, monthly costs and visa options in 78 cities, for one person or a whole household. A headless CMS holds the data, and a static app ships it.

## Libraries

Open-source code to use in your own projects.

### [Apple News API](https://www.dealmobile.co.uk/projects/apple-news-api.md)

A PHP 8.1 library for the Apple News Publisher API. It signs requests, builds Apple News Format documents in PHP objects and handles articles, sections and channels.

### [TurboPush](https://www.dealmobile.co.uk/projects/turbopush.md)

A dependency-free TypeScript upload client and a single-class PHP endpoint. Files go up in parallel chunks with retries, pause and resume, and the client also speaks the open tus protocol.

### [RSS to JSON](https://www.dealmobile.co.uk/projects/rss-to-json.md)

Parses RSS 0.9x and 2.0, RSS 1.0, Atom and other XML feeds into plain PHP arrays ready for json_encode, keeping namespaced elements such as media:content and dc:creator.

### [Puzzler PHP SDK](https://www.dealmobile.co.uk/projects/puzzler-php-sdk.md)

A small PHP library for publishers who license puzzles from Puzzler Media. It signs each request, filters puzzles by date, type and name, and maps HTTP errors to exceptions.

## Tools

Programs I use from the command line or from an AI coding tool.

### [GitHub Auditor](https://www.dealmobile.co.uk/projects/github-auditor.md)

A Python CLI that keeps a local clone of every repository in your GitHub and Bitbucket accounts and writes Markdown reports from them. It can also archive, license, tag and reconfigure repositories in bulk.

### [ScrapePy](https://www.dealmobile.co.uk/projects/scrapepy.md)

A command-line crawler that downloads a site with its images, rewrites the links so it works offline, and writes a Markdown copy with frontmatter. Re-runs only fetch what has changed.

### [Trove](https://www.dealmobile.co.uk/projects/trove.md)

A Python search engine for your own documents and code. It runs keyword and vector search together, re-ranks the results with a cross-encoder, and answers AI coding tools through an MCP server with 38 tools.

### [Scrape](https://www.dealmobile.co.uk/projects/scrape.md)

A single PHP class that walks the “Index of /” pages a web server generates, filters the files by type, path and name, and downloads them in parallel.

### [TCL Google TV Tools](https://www.dealmobile.co.uk/projects/tcl-google-tv-tools.md)

Shell and Python scripts that switch off a TCL Google TV’s unwanted packages in small, reversible batches, get round TCL’s block on apps starting at boot, check the setup after every restart, and give a Linux laptop a 4K screen on the TV that only exists while the TV is watching.

## Experiments

Things I built to see how far an idea would go.

### [Reelify](https://www.dealmobile.co.uk/projects/reelify.md)

A local Python pipeline that scores the motion in each frame of a screen recording, cuts the idle parts, speeds up the rest to fit a target length and can caption keyframes with a local vision model.

---

Index of this site: [llms.txt](https://www.dealmobile.co.uk/llms.txt)
