gb.

// builds

Projects

Things I have built and kept building. Some of them may be useful to other people, the rest were an excuse to learn something, or just fun to build.

in the workshop

05

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
todo-cli

build 03

live

todo-cli

A terminal dashboard in Go that keeps tasks in a plain Markdown file and shows them next to the TODO comments in your code and the TODO list in your README. Tasks can belong to a Git branch or a generic category. It comes with todo-scan, which lists code TODO comments on their own so CI can check them (or you can scan different directories).

stack
Go · Bubble Tea
storage
a Markdown file
licence
MIT
imap-cli

build 04

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 of mail in it. An example of guiding Claude to write to my spec.

stack
Go
output
JSON · TOON
licence
MIT
dev-stats

build 05

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