Most people online know me as Timmsy. I’m a full-stack developer in the UK, coding since 2008 and working professionally since 2021.
I like making things that are useful and feel good to use. That might be a Laravel application, a React interface, or a tool for a game I spend too much time playing.
Portfolio ↗ · CV ↗ · Email me
A platform for an esports organisation: public teams, results, and broadcasts, with recruitment, roster management, and coaching tools behind the scenes. Connects to Discord, Riot Games, and Twitch.
Next.js · React · TypeScript · Prisma · PostgreSQL
A desktop companion for League of Legends. Track ranks and match history, build and import rune pages, and handle everyday tasks through the local client API.
Electron · React · TypeScript · Vite
Turns Riot match data into player profiles, match summaries, and performance trends. Built with independently testable analytics and request handling that respects Riot’s API limits.
Python · FastAPI · HTTPX · Pytest · Docker
A PHP client for the Riot Games API, usable on its own or in Laravel. Player lookups, profiles, and match histories, with regional routing handled for you.
PHP · Laravel · Guzzle · PHPUnit · OpenAPI
A TypeScript-first Node.js library for Riot’s APIs. Player profiles, ranked summaries, match timelines, and Data Dragon support, with optional request pacing and paginated match fetching.
TypeScript · Node.js · Axios · npm
Most of my day-to-day work is in Laravel, React, Vue, and TypeScript. I enjoy untangling a slow query, making a migration less painful, and polishing the small interactions people notice when they use a product.
I care about code the next person can understand. I also like sharing what I learn and leaving a project easier to work on than I found it.
Gaming tools, broadcast overlays, and match data are where a lot of my side projects start. The repositories here are a look at what happens when that curiosity turns into code.
Open to frontend and full-stack roles. If you’ve got something interesting in mind, let’s talk.



