Project estate

Projects

The current PHP Boy Scout project estate: tools, libraries, infrastructure modules and the sites they support.

28 public entries 7 groups

Toolkits and Frameworks

The foundations I build other things on.

go-tool-base

Framework

Go

The underpinnings for any Go command-line tool, and (as a few of my projects now prove) for comprehensive web services too. It standardises the boilerplate and wiring you end up writing in every Go project, and puts config, logging, self-update, a DI container and the rest straight at your fingertips. Highly opinionated, and it makes some calls people will disagree with, but it works, and it works really well. The CLI it ships with is a big part of that: keeping a Go app built, updated and maintained becomes almost trivial.

rust-tool-base

Framework

Rust

The Rust counterpart to go-tool-base, and deliberately not a straight port. Rather than copy the Go version wholesale, it reimagines the same idea through Rust idioms and off-the-shelf crates, while keeping a common signature and feature set so the two feel familiar if you switch between them. The same streamlined developer experience, done the Rust way.

Framework-Independent Go Modules

Smaller Go packages that stand on their own, without needing the full go-tool-base framework around them.

browser

Utility module

Go

A safe entry point for opening URLs: scheme allowlist, length bound and control-character rejection.

controls

Service lifecycle

Go

Startup ordering, health probes, graceful shutdown and self-healing restarts for Go services.

redact

Safety utility

Go

Strips credential-like content from free-form strings before they reach logs or telemetry.

regexutil

Safety utility

Go

Bounded, DoS-safe regex compilation for patterns that might come from untrusted sources.

AI Building Blocks

Provider-neutral AI modules and the adapters that make them useful without tying the rest of the toolchain to one vendor.

chat

AI client

Go

A light, framework-free multi-provider AI chat client with provider support kept opt-in.

chat-anthropic

Go

Provider

Anthropic Claude provider for the Go chat client.

chat-gemini

Go

Provider

Google Gemini provider for the Go chat client.

chat-openai

Go

Provider

OpenAI and OpenAI-compatible provider for the Go chat client.

Media and Creative Tools

Tools for publishing, reels, photography and media processing.

keryx

Publishing studio

Go / Svelte

Keryx is ancient Greek for 'the herald', which is precisely the job. A little utility I built for myself because I'm dreadfully bad at social media: point it at the page bundle for one of these blog posts and it turns that into a sharp piece of short-form media, ready to post to the platforms I want to be on.

krites

Photography tool

Go / Svelte

Krites is ancient Greek for 'the judge', and judging photographs is the whole job. I built it for an audience of one, my wife: a simple, UI-driven tool (not a command line in sight) that helps her rip through culling 4,000-plus wedding images to her own standards. It leans on local ML rather than a cloud-AI subscription, so it works wherever she is, signal or not. It's since grown an optional AI critic as well, expert feedback on composition, colour and technique, there to help her learn rather than to do the judging for her.

afmpeg

Media library

Go

FFmpeg in pure Go with no install, no CGO and no disk: a WASM build of FFmpeg running over a virtualised, in-memory filesystem, so media processing ships as a single binary and stays sandboxed. That virtual FS layer is a big part of the appeal, and the whole thing sits behind one clean Go interface, no dropping to a shell, no wrangling CGO bindings. A native FFmpeg backend is on the way too, for the performance edge cases where you can trade the security posture for speed, and it speaks the very same interface.

ffmpeg-wasi

C / WASI

Media engine

Current FFmpeg as a sandboxed WASI module, runnable from Go through wazero without CGO or a host FFmpeg install.

Release Trust and Delivery

The plumbing that signs, verifies, builds and ships the rest.

signing

Library

Go

A small, standalone module for creating and verifying signatures on files. I pulled it out of go-tool-base so it stays lightweight and anything can use it, not just go-tool-base projects: it's what signs the CLI binaries and the ffmpeg-wasm bundle I distribute. It works through pluggable backends, so the key can live somewhere like AWS KMS rather than on disk, with Google Cloud, Azure and HashiCorp Vault to follow.

signing-aws-kms

Go

Backend

The AWS KMS backend for the signing module, keeping private release-signing keys inside KMS while the public API stays framework-free.

cicd

Components

GitLab CI

Reusable GitLab CI/CD components I include rather than copy across my projects, so the pipeline lives in one place instead of drifting copy-paste in every repo.

claude-code-plugins

Plugin marketplace

Markdown / JSON

A Claude Code plugin marketplace for the reusable skills, guardrails and workflow habits I use across my projects.

homebrew

Package tap

Ruby

The Homebrew tap for phpboyscout tools, used to distribute the binaries that come out of the release pipeline.

CI images

Build images

Docker

Public container images that keep the toolchain repeatable across software and infrastructure projects.

dev-tools

Docker

Software CI image

Rust, Go, Node, Python and the language CI tooling used by the software projects.

infra-tools

Docker

Infrastructure CI image

OpenTofu, tflint, trivy, checkov, gitleaks, terraform-docs and aws-cli for infrastructure pipelines.

Infrastructure Modules

Public OpenTofu modules. The private repos that consume them stay private and are deliberately not listed here.

terraform-aws-bootstrap

Terraform module

OpenTofu

The small first stack for a new AWS account: remote state, CI OIDC identity and an aws-nuke config. It deliberately stops there.

terraform-aws-security-baseline

Terraform module

OpenTofu

The downstream account baseline: audit logging, threat detection, account hardening, operator access and the alerts wiring I keep reusing.

terraform-aws-signing-kms

Terraform module

OpenTofu

The KMS-backed release signing module: asymmetric keys, CI signer role and the policy shape needed to sign without ever exporting the key.

Sites

Static sites with their own audiences and visual identities. Public site links only; private source repositories are intentionally not linked.

PHP Boy Scout blog

Blog

Hugo

This site: the home for the project write-ups, leadership pieces, tutorials and the occasional personal essay.

The Dusthole

Business site

Hugo

A bespoke site for my dad's 15th-century coaching inn and bed and breakfast in Shepton Mallet.

Shutter & Stove

Photography / recipes

Hugo

Hailey's vanlife photography and galley-kitchen cooking site, built ahead of the 2027 trip so the shape exists before the content does.