Why I built it

I wanted a training tool I could open anywhere — no app store, no account wall, just a page that loads and does the job. The result is Trainer, a self-contained web experience I’ve kept live at this site for anyone who wants to use it.

What it does

Trainer is a focused HTML application for working through structured sessions. It lives outside the blog stack on purpose: it’s static, fast, and stored where it can be updated independently of new posts.

The app includes supporting assets (routes, media, and data) bundled alongside the main page so everything resolves under the /trainer/ path.

How it’s hosted here

The blog runs on Cloudflare Workers with Next.js. Trainer predates some of that wiring, so it sits in R2 object storage and is served from the same domain via a dedicated route. That way the blog and Trainer coexist without one overwriting the other.

Try it

If you want to see what I mean, open it directly:

Launch Trainer →

Or use the full URL: https://d3n4c3.com/trainer/trainer.html

What I learned

  • Keeping legacy tools on a sub-path is easier than merging them into a new framework overnight
  • Static hosting plus a thin routing layer is enough for many personal utilities
  • Documenting the link matters — otherwise a project quietly disappears behind a redesign.