cv.md 23 KB

Hello, I'm Craig Fletcher.

You can call me on 07480924132, email me at hi@leakypixel.net, or see additional details at leakypixel.net.

I'm an experienced and adaptable full-stack JavaScript engineer with over 18 years of hands-on work delivering modern, performant, and accessible digital services. I've led cross-functional teams, replaced legacy systems at scale, and designed human-centred solutions grounded in XP, Agile, and value-delivery principles. I work closely with stakeholders across product, design, and ops, and I'm always looking for ways to improve development processes and system architecture. I'm particularly passionate about mentoring, observability, and infrastructure-as-code practices that support robust, scalable delivery.

Key Competencies

  • Technical leadership & team mentoring
  • Performance optimisation & Core Web Vitals
  • Cross-functional collaboration & stakeholder engagement
  • XP practices (TDD, CI/CD, pair programming)
  • Accessibility & inclusive design
  • Service-oriented & event-driven architecture
  • Agile delivery, kaizen & continuous improvement
  • Legacy system modernisation & modularisation
  • Infrastructure as code (Docker, Ansible, Azure, AWS)
  • Observability & monitoring (Grafana, Telegraf, InfluxDB)
  • Automated testing (Jest, Cypress, Playwright)
  • Documentation & technical communication

Experience

Timeout.com (Econify) - Full-stack JavaScript engineer

October 2024 - June 2025, fully remote

Brought in as part of a small, specialist consultancy team to help improve Timeout.com's site performance, developer experience, and overall delivery velocity. Focused primarily on the JavaScript/TypeScript codebase, but also collaborated across a broader tech stack including Python and e-commerce systems. Highlights included:

  • Delivered ~20% improvement in Core Web Vitals through targeted DOM optimisations, smarter scheduling, deferral of non-critical work and strategic refactors to legacy rendering logic
  • Introduced a lightweight feature flagging mechanism to speed up experimentation and reduce deployment risk
  • Pushed TypeScript adoption across critical areas of the codebase, fixing types, removing unsafe patterns, and improving editor/developer tooling
  • Upgraded multiple out-of-date dependencies both frontend (React, TypeScript, Apollo) and backend (both Node and Python-based) services, resolving long-standing technical debt and reducing security overhead
  • Played a key role in reworking an e-commerce sister site alongside a visual redesign, with attention to performance, accessibility, and maintainability
  • Helped define coding standards, type definitions and linting configurations to promote consistency across a large monorepo
  • Regularly advised on architectural decisions and performance tradeoffs, particularly around SSR, bundle size, and loading strategies
  • Played a hands-on role in shaping and encouraging better documentation practices across the team
  • Contributed to ad delivery improvements, resolving layout shifts and misfiring campaigns in close collaboration with the adops team

Skills used: NodeJS React TypeScript Apollo Next.js Koa Hapi Playwright Storybook Python Django GraphQL Yarn Sentry AdTech

Mint Velvet - Full-stack JavaScript engineer

October 2023 - September 2024, fully remote

As part of a small, highly commerically-driven team, took up various initiatives and improvements, alongside day-to-day BAU retail work. Initially, this started as a pure front-end role but evolved quickly into a full-stack role, owning the entire process of a service from design to production support. Some of the more noteworthy tasks included:

  • Initiated and led replacement of an external service with an in-house solution, developed using nodeJS and fastify, saving a significant monthly subscription cost for the business
  • Deployment and configuration of new infrastructure using Ansible and Azure
  • Liasing with third parties to connect and configure infrastructure for interdependent services
  • Site speed optimisation through use of server-side rendering (liquid templating) and advanced loading strategies for external dependencies, achieving a positive difference of 17 (~25%) on Google Lighthouse pagespeed
  • Migration to Cloudinary media from Shopify native, including parser and runtime modification to match component requirements
  • Worked very closely with lead designer to implement a component library approach, resulting in both a reduction in total number of components and much more consistent brand identity
  • Resolution of various developer headaches through use of a dockerised dev environment, greatly reducing "blocked" time for Windows users in particular
  • Refactoring and improving critical areas of the site to make better use of client-side caching and improve perceived speed through optimistic updates to the store

Skills used: Vue CompositionAPI GraphQL NodeJS Pinia TypeScript Yarn ESBuild pkg Fastify MongoDB Shopify Shopify-Plus Liquid Storybook Cloudinary Docker Ansible Azure Swagger OpenAPI React-remix

Kloeckner Metals (Erlang Solutions) - Front-end JavaScript engineer

August 2022 - October 2023, fully remote

Worked on and led various business-critical initiatives, including:

  • Implementing an app-wide store (Pinia) as part of the process of refactoring the app and removing developer obstacles
  • Upgrading a stock and order management app from Vue 2 to Vue 3
  • Helping develop a component library using modern techniques and tooling, including both Vue and Ember
  • Implementing stock availability across a worldwide group in a centralised app
  • Deployment to S3 as static files for various FE apps

Skills used: Vue CompositionAPI GraphQL NodeJS Vuex Vite Ember Pinia TypeScript Yarn AWS S3

Orbit - Full-stack JavaScript engineer

June - August 2022, fully remote

  • Worked together with a cofounder of a small startup to develop core features of the product and decrease tech debt (primarily in the state management and data fetching areas of the app)
  • Developed a state management and data cacheing solution based on Jotai and URQL which fixed a number of long-standing bugs and resulted in a 15-20% performance improvement across the app
  • Deployment of AWS lambda functions for various business and technical tasks, such as updating static JSON data in S3

Skills used: React React-hooks GraphQL NodeJS TypeScript NPM Ramda Jotai URQL Hasura AWS S3 Lambdas

Attest (101ways) - Full-stack JavaScript engineer

March - June 2022, fully remote

Worked with a small to medium sized team to develop new features and improvements to the client application, using Vue, Pinia, Vuex and Ramda. Application performance was paramount, and involved heavy use of large datasets and graphing libraries.

Skills used: TypeScript Vue NPM HighCharts WebPack Pinia Vuex Ramda PostCSS Jest Cypress

Penfold pensions - Full-stack JavaScript engineer

September 2021 - March 2022, fully remote

Worked with a medium sized team to refine and develop a cross-platform app to allow customers to manage and analyse their penfold pension. Primary responsibilities included finding and fixing complex multi-layer bugs, developing new features to match stakeholder specifications and performance analysis and recommendations.

Skills used: TypeScript React NPM WebPack Babel React-Hooks NextJS NodeJS Apollo Jest Cypress

Betika - Front end engineer

October 2020 - September 2021, fully remote

Architected and led a 3-person front end team, replacing an underpeforming angular site with a fully modularised and modern react-based solution for a high traffic betting company based in South Africa, as well as upskilling the existing development team into the react ecosystem. As part of the team lead role, updated key stakeholders and discussed design of the solution with appropriate people within the business. Worked closely on a project to move non-private data to static storage (S3) in order to improve performance and lower costs.

Skills used: TypeScript React Docker NPM WebPack Babel React-Hooks React-Sagas AWS S3 Lambdas

Erlang Solutions - Front end tech lead

April - October 2020, fully remote

Worked as part of a 10-person team to deliver new functionality to a greenfield implementation of a high-traffic sports betting website, using VueJS and Vuex.

Skills used: TypeScript VueJS Docker NPM WebPack Babel Vuex

EnergyLinx (GoCompare group) - JavaScript consultant

January - April 2020, fully remote

Worked as the lead developer with a small (3 person) team on a complete rebuild of a React and TypeScript component based whitelabel system. Built an MVP with functioning cross-module themeing, configuration injection and a reference implementation as the sole developer, which was reviewed and discussed with the technical and design team on a continual basis.

Skills used: TypeScript React Docker NPM WebPack Babel

Earlier

2019 - AKQA - JavaScript consultant (6 months, fully remote)

2018 to 2019 - Erlang Solutions - JavaScript consultant (9 months, fully remote)

2018 - The Co-op Group - JavaScript consultant (6 months, part remote)

2017 to 2018 - Life's Great - JavaScript consultant (6 months, part remote)

2017 - Tyres on the Drive - JavaScript consultant (12 months, onsite)

2016 - The Hut Group - JavaScript developer (12 months, onsite)

2015 - Bet365 - JavaScript developer (6 months, onsite)

2013 to 2015 - On The Beach ltd. - Front end developer, Permanent

Freelance projects

I'm sometimes lucky enough to get to work on small projects, which can be quite varied. A few of my favourites have been:

Peratech - Independent Full-stack Consultant

2024, fully remote

Brought in as a one-person consultancy to lead the design and development of a bespoke production tracing portal for a global manufacturing firm. The system allows stakeholders to track the full lifecycle of an order - from initial request through to factory assembly and final shelf delivery. Worked closely with a single in-house developer and multiple non-technical stakeholders to define scope, timelines, and technical architecture.

  • Designed and implemented a custom end-to-end tracing portal using vanilla JavaScript and C# .NET, integrating deeply with existing factory systems
  • Developed a clean, minimal front-end experience optimised for reliability and clarity across industrial contexts
  • Wrote server-side JavaScript to coordinate between systems and ensure consistent data flow between UI and backend services
  • Delivered the project independently: managed all aspects of planning, architecture, and delivery without external team dependencies
  • Helped translate operational requirements into technical solutions, working closely with stakeholders to ensure usability and clarity of the portal
  • Created documentation and training material to support internal adoption and long-term maintainability of the tool
  • Improved backend integration reliability by shaping request/response conventions and advising on API design between JS frontend and .NET services

Skills used: Vanilla-JavaScript .NET/C#

Green Room Design – Full-stack & Systems Consultant

2023, hybrid remote/on-site

Brought in to develop an augmented reality-style display application for a global footwear brand, powering an in-store installation that overlaid animated graphics and text onto physical products using a transparent screen. Inherited a legacy Erlang-based platform from a previous vendor with no documentation or handover, requiring extensive reverse engineering and infrastructure updates.

  • Reverse-engineered an undocumented Erlang system to gain full understanding of display logic, integration points, and hardware interaction
  • Led the redesign and development of the AR display layer, carefully aligning animations and messaging with specific shoe features inside the box
  • Refactored the deployment pipeline to eliminate reliance on a Windows-based toolchain, moving to a fast, kiosk-style Linux system that reduced licensing costs and improved reliability
  • Prioritised accessibility and legibility on transparent media, iterating with designers to ensure high contrast, clear typography, and resilient layout behavior
  • Delivered build and deployment tooling to support fast iteration across multiple store locations and hardware setups
  • Provided architectural guidance and infrastructure improvements to stabilise the overall system and simplify long-term maintenance

Skills used: Erlang JavaScript Linux Kiosk-Systems Reverse-Engineering Deployment Automation Accessibility AR-Display-Systems Systemd Bash

Series-A Startup (NDA) – Cross-platform App Developer

2023, fully remote

Worked with an early-stage startup to deliver a cross-platform time tracking application targeting mobile and desktop users. The project focused on rapid iteration and delivery of core features across platforms using a unified codebase.

  • Built and deployed the app using Quasar Framework with Vue.js, targeting iOS, Android, and desktop via Capacitor and Cordova
  • Implemented core time tracking logic, persistent storage, and offline support to accommodate mobile-first usage patterns
  • Collaborated closely with the founding team to refine UX patterns and optimise for responsiveness and usability across devices
  • Contributed to build tooling and deployment workflows for multiple platforms from a single codebase

Skills used: Vue.js Quasar Capacitor Cordova JavaScript Cross-platform Mobile-App-Development

Something to Aim For / Us in the Making – Independent DevOps & Full-stack Engineer

2022, fully remote

Collaborated with a small team to deliver a mobile-first, video conferencing platform tailored for interactive entertainment events. The platform leveraged open-source tooling to enable high levels of audience participation, targeting the unique needs of a performing arts organisation. Took a lead role in DevOps and infrastructure, owning the entire deployment pipeline and live service delivery.

  • Spearheaded infrastructure design and deployment using Ansible to provision and manage environments across development, staging, and production
  • Built and maintained CI/CD pipelines using GitHub Actions to support frequent, stable releases across a distributed team
  • Set up and managed AWS services including EC2, Route 53, and Lambda to support performant, scalable service delivery
  • Implemented independent hosting of a private Docker registry to streamline image management and reduce external dependencies
  • Designed monitoring and recovery strategies to ensure high availability during live events, where system failure was not an option
  • Supported front-end and back-end teams by improving local development workflows, automating environment provisioning, and resolving deployment bottlenecks
  • Collaborated directly with creative stakeholders to balance performance, reliability, and cost-effectiveness in a limited-resource context

Skills used: Ansible AWS EC2 Lambda Route53 Docker GitHubActions CI/CD DevOps Linux Nginx Node.js WebRTC

Weee Recycle – Hardware-Integrated Software Consultant

2022, fully remote

Collaborated with a startup to design and develop a bespoke device for the secure decommissioning and backup of spinning disk drives, targeting enterprise data destruction and archival workflows.

  • Developed control software and automation logic for secure data handling and drive management
  • Worked closely with hardware engineers to integrate software with physical device operations
  • Focused on reliability, ease of use, and adherence to strict data handling requirements

Skills used: Hardware-Integration Secure-Storage Automation Linux Bash Low-level-DiskOperations

Various Web3 Startups – Web3 Frontend & Integration Engineer

2021–2023, fully remote

Worked with a range of early-stage Web3 startups to deliver dashboards, dApp interfaces, and blockchain-integrated web applications. Projects often involved rapid prototyping, direct smart contract interaction, and bespoke API development.

  • Built user-facing dashboards and admin panels to surface on-chain data in real time
  • Developed frontend integrations with smart contracts using Web3.js and Ethers.js, enabling wallet interactions, token transfers, and DeFi functionality
  • Designed lightweight APIs and data services to bridge blockchain data with traditional frontend needs
  • Provided technical guidance to non-Web3-native teams around contract interaction patterns, security considerations, and network behavior

Skills used: Web3.js Ethers.js JavaScript React Smart Contract Integration dApp Development Ethereum JSON-RPC

Freelance – E-commerce Developer

Ongoing (various projects), remote

Delivered a mix of Shopify reskins and full custom builds for small to medium-sized businesses, balancing performance, usability, and business needs. Projects often required integrating rich client-side functionality with the constraints of hosted platforms.

  • Designed and implemented full Shopify themes as well as reskins, tailored to brand and UX requirements
  • Built and embedded complex Vue.js applications within Shopify storefronts to support dynamic product configuration, bookings, and other interactive features
  • Integrated detailed analytics setups (GA, GTM, custom tracking) to support marketing, funnel optimisation, and customer insights
  • Advised clients on platform capabilities, limitations, and trade-offs to ensure scalable, maintainable solutions

Skills used: Shopify Vue.js Liquid JavaScript HTML/CSS Analytics Integration GA GTM E-commerce UXi

Skills

JavaScript

I've around 16 years experience with JavaScript, and consider myself highly proficient. I take an active interest in new developments, often spending my free time checking out new features and frameworks.

  • React (Redux/Apollo GraphQL/hooks/reselect/Jotai/React Native)
  • Vue (Vuex/Quasar/Vue Apollo/Vitest/Vite/Pinia)
  • CMS and product management platforms (Shopify/Strapi/Contentful/Wix)
  • Cross-platform wrappers (Cordova/Capacitor/Quasar/Electron/PhoneGap)
  • API integration (analytics/Facebook messenger platform/payment systems/GraphQL)
  • NodeJS (Express/Restify/Fastify/Hapi/Koa/Apollo/native HTTP/cloud functions/Hasura/Prisma)
  • Document DBs (Mongo/Couchbase/DynamoDB)
  • Client-side templating (Handlebars/Mustache/jst)
  • Module loading & dependency resolution
  • Testing & automation (Jasmine/Jest/Karma/Istanbul/Selenium/nyc/Vue test utils 2 & 3)
  • Build systems (Grunt/Gulp/Webpack/custom-built)
  • WebSockets (Pusher/native)
  • Modern ECMA script (Babel/Node)

DevOps

In the past few years, I've taken a keen interest in devops-related skills. Initially, this started as a passion project to containerise and self host infrastructure, but quickly developed into managing the full stack in my commerical roles.

  • Multiple cloud services (AWS/Azure/GCP)
  • Continuous integration (Jenkins/Travis/GitHub actions)
  • Docker & docker-compose
  • Ansible
  • Server administration (systemd, collectd, init.d)
  • Common web servers, certificates and proxying (nginx/Apache/caddy)
  • Building appliances/discreet servers (Raspberry Pi/Intel Atom SoC)
  • Versioning (npm/git tags/artifactory/docker images)
  • Linux/UNIX-like OSes (Debian/Arch/FreeBSD)
  • Grafana, telegraf and influxdb

HTML & CSS

Developing the front end of a project was my main focus for many years, picking up a history of tools and techniques. It's still something I find very satisfying, especially in first iterations of products.

  • Sass/SCSS/LESS
  • Responsive design
  • Bootstrap
  • Modular design & web components
  • BEM/SMACSS
  • Accessibility/Information hierarchy
  • Progressive enhancement
  • W3C Standards
  • Cross browser compatibility
  • HTML 4 & 5

Others

I've also picked up a few odds and ends that don't fit anywhere else, often from interested coworkers or personal projects.

  • UX and data-driven design
  • Git (GitHub/CLI/GitHooks/Workflows)
  • Agile, Kanban & Scrum
  • Project management tools (JIRA/Trello)
  • Blockchain (trading, bitcoin/iota/ethereum/bat/litecoin/monero theory and use, some experience with solidity)
  • Web3 technologies (Web3js/Ethers/Metamask)
  • Analytics (Google/server stats/pingdom/custom built)
  • AI/ML (model finetuning/local models/SKLearn/Keras)

Experience of working with

Working on many projects has given me contact with quite a few back end environments, with varying degrees of depth.

  • Java (Spring, some)
  • Golang (Iris, some)
  • Erlang (Phoenix, moderate)
  • C# (.NET, moderate)
  • Bash (day to day environment & scripting)
  • Rust (scripts/tools here and there)
  • Python (flask/sql alchemy/raspi-GPIO/scripting)
  • Ruby (Rails/cucumber/rspec/scripting)

References/recommendations

My latest references/recommendations can always be found on my linkedin, but here're a few recent ones:

Mint Velvet - Jon Ashcroft (Technical Development Lead)

September 2024

I am pleased to recommend Craig, who was a great addition to the team. From the first day, Craig demonstrated a high technical ability and during his time with us, punctually delivered several key projects.

Craig is very hands-on and efficient. He's keen to gain an understanding of the bigger picture and apply his proven experience to deliver considered solutions and raise the correct questions to help steer directions of technical work.

His adaptability and vast knowledge is an asset to any company. He's able to both own new projects and understand existing codebase with ease. It was a pleasure working with him!

Kloeckner - Jan Butzner (Product Manager Innovation & Design)

November 2023

I worked with Craig for over a year, very closely on a complex, high-stakes project involving Vue, GraphQL and such, with a lot of technical debt. First of all, it is a joy to work with and talk to Craig. He is very knowledgeable, intelligent, empathic and efficient. He not only managed to analyze the situation clearly, he also proactively suggested and made major improvements to the code base and was able to clearly communicate and explain it even to non-tech people.

We/I will dearly miss working with him and he was only "released" due to unrelated business decisions. Highly recommend hiring Craig, you will not regret it!

I'm not boring

I have quite a few hobbies outside of my development work, and try to keep myself as active as I can - summer or winter!

  • Working in digital means I'm especially concious of getting some "green time", from kayaking to hiking to exploring the odd underground bunker - I generally do a variety of things over the month, and in 2024 managed to cross off all 23 MBA bothies in Wales and England (I'm working on the ~80 in Scotland...)

  • Being interested in the DIY/open-source side of things, I attend events and spend a fair amount of time creating things myself - steel-framed furniture, a few hand tools, my own hammock... whatever my magpie brain has latched onto this week. I've not got around to presenting most of these at an event yet, because only the less interesting projects are ever truly "finished". That's right, I kaizen my own hobby projects, we're on hammock v1.7 at this point I think?

  • I also spend quite a lot of my free time tinkering and working on personal projects, such as building raspberry pi based camera systems, monitors, or arcade systems. I'm also passionate about self hosting as much of my personal infrastructure as I can (talk to me about this!) and dockerising all the things.