gb.

// builds

Projects

Things I have built and kept building. Some of them are useful to other people, the rest were an excuse to learn something.

in the workshop

04

Time off plan

build 01

live

Time off plan

I wanted a way to plan regular breaks without going 6 months with no day off so I created a calendar for myself but decided to release it. Put in your allowance, click the days you want off, and it works out all the boring stuff. There is no account and no backend, your plan is saved in the browser. Also has a US version.

stack
TypeScript · Vite
your data
stays in the browser
regions
UK · US
phpirc

build 02

live

phpirc

An IRC server written in PHP 8.5, mostly because the protocol is old enough to be interesting and PHP is quick enough now to serve it. Tempest handles the application layer, Amp and Revolt do the asynchronous networking. Normal clients can connect over TCP, TLS or websockets, and it holds channels and users in memory. Live at irc.grantbennett.co.uk port 6667 or 6697 for TLS.

stack
PHP 8.5 · Tempest · Amp
transports
TCP · TLS · WebSocket
licence
MIT
imap-cli

build 03

live

imap-cli

A read only IMAP client in Go that prints JSON or TOON. I wanted to let an LLM go rummaging through a mailbox without giving it any way to delete, move, or even mark a message as read, so bodies are fetched with PEEK. Searching happens on the server, which means it copes with a mailbox that has years in it. An example of guiding Claude to write to my spec.

stack
Go
output
JSON · TOON
licence
MIT
dev-stats

build 04

building

dev-stats

A self hosted dashboard for coding stats. It speaks the same protocol as wakatime-cli, so the editor plugins you already have can point at it instead and the data stays on your own hardware. A work in progress.

stack
Laravel 13 · Inertia · Vue 3
ingest
WakaTime heartbeats
licence
AGPL-3.0