ASH STREET ADV

Ashley “Ash” Street · Senior frontend developer, Toronto I build the interface people touch, and the machinery that ships it.

I’m a senior frontend engineer, ten years in. Most recently I led frontend on the airmiles.ca redesign, rebuilt core parts of MyTELUS, and built the CI/CD platform about 250 engineers ship through. I do my best work when a problem is a bit on fire.

Skip to the case files

Playable handheld menu

A handheld console in translucent smoky-purple plastic. Its screen is this site’s menu.
Ash.StreetLV 10+
↑↓ Move▼ Touch belowA Open

Touch a file

Toronto · Files 0/7

    • 10+years shipping production software
    • ~250engineers on the CI/CD platform I built
    • 10→<3minpipeline time after I fixed the runners
    • AAAWCAG level we got AIR MILES to, ahead of a deadline

    01 · Case files

    What I built, and what it changed.

    Each one is what was broken, what I did about it, and what happened next. Four have a demo you can play with, and all seven are hidden in the career map.

    File 01 · AMIGGI2024–2026

    I got our pipelines from ten minutes to under three

    10 → <3minutes per pipeline

    The fix was less clever than people expected. The runners didn’t have enough memory.

    At AMIGGI I was one of two people on the platform team, so the GitLab CI/CD setup was mine to design from scratch. About 250 engineers across 500+ repositories ship through it.

    Builds were slow, so I went looking. The runners weren’t big enough for the jobs we were giving them. I gave them more memory, then refactored our Dockerfiles to cache layers properly, and pipelines dropped from around ten minutes to under three.

    I also built the React/Next.js and TypeScript templates new apps start from, with the project structure, component patterns, testing and build config already in place.

    • GitLab CI/CD
    • Docker
    • React / Next.js
    • TypeScript
    • Kubernetes / EKS
    • AWS

    Try it · Pipeline race

    File 02 · TELUS2022–2024

    I rebuilt the MyTELUS billing card

    1 cardfor every billing state

    Billing was hard to find, and it wasn’t as accessible as the rest of the site. I refactored our BFF so it returned one reusable shape of billing data, then built a new accessible billing card that renders every customer state from it.

    Try it · Flip the account state

    • React
    • TypeScript
    • Node BFF
    • GraphQL
    • Accessibility
    File 03 · TELUSProduction debugging

    I found the bug in a $2M report

    $2M+initiative, reported correctly

    An analytics number for an initiative funded at more than $2 million looked wrong. I traced it back through the app and found the metric was read with a hard-coded key, ['value'] in brackets, instead of the parameter being passed in. I fixed it and validated the numbers in production.

    One pair of quotes. Two million dollars of reporting.

    Try it · Find the bug

    • Analytics
    • Production debugging
    • Full stack
    File 04 · AIR MILESLead, 2021–2022

    I led frontend on the airmiles.ca redesign

    AAAWCAG, ahead of a compliance deadline

    I was the hands-on tech lead for the AIR MILES modernization. I set the React component strategy, built the component library with design, designed the Node.js backend-for-frontend, and implemented the OAuth login end to end.

    We built accessibility into the components themselves, which is how we reached WCAG AAA before the compliance deadline. Colour contrast was the hard part. Not every pair of brand colours holds up at AAA, and I pushed back a lot until that landed with design.

    • React
    • Component library
    • Node BFF
    • OAuth
    • WCAG AAA

    Try it · AA vs AAA

    File 05 · ToolingOpen source

    I scripted the GitLab migration, then gave it a GUI

    457repositories migrated

    The migration, and the management of the whole GitLab instance, ran on scripts I wrote. Repodex is the GUI I built on top of them in Python and Flask, so migrations, audits and drift checks could be run and checked from one place.

    • Scripting
    • Python
    • Flask
    • GitLab
    Read the source ↗ (opens in a new tab)
    File 06 · Critical Mass2018–2019

    I built the Nissan Kicks configurator’s frontend

    CQ5.5 → React

    Nissan’s vehicle configurator was running on a legacy CQ5.5 setup. We rebuilt it on a newer AEM architecture with a React frontend, and I owned the frontend of the Kicks configurator, from the React components to the vehicle-data APIs. It shipped to WCAG AA, tested with Jest.

    • React
    • styled-components
    • AEM
    • AWS Lambda
    • WCAG AA
    File 07 · Side projectNow

    I built the stats app for my own league

    20 cols → cards

    I play in Toronto United Flag Football, and the league kept its stats in a 20-column table. I replaced it with searchable, sortable player cards, and it grew into Afterwhistle, a multi-tenant stats platform where adding a new league is a config change.

    • React
    • TypeScript
    • Node
    • Multi-tenant
    Visit tuff.afterwhistle.ca ↗ (opens in a new tab)

    02 · Save history

    Swansea, London, Toronto.

    I started at agencies in London, moved to product teams in Toronto, and most recently built the platform underneath them. Same route as the career map, minus the walking.

    1. 2024–2026 AMIGGILead DevOps / Platform Engineer · Consolidated Communications / Fidium

      I set up the frontend architecture for new React/Next.js apps and built the CI/CD platform, templates and standards they run on.

    2. 2022–2024 TELUSSenior Full Stack Developer · MyTELUS

      I built core React features for the MyTELUS redesign, worked on authenticated journeys and accessibility, and mentored junior and intermediate engineers.

    3. 2021–2022 AIR MILESLead Software Engineer · LoyaltyOne

      I led frontend on the airmiles.ca redesign, ran Scrum, and covered product management during a parental leave.

    4. 2019–2021 Canopy GrowthFrontend / Web Engineer · Tokyo Smoke

      I owned the Tokyo Smoke Shopify storefront in a regulated market, including the age gate.

    5. 2018–2019 Critical MassFrontend Developer · Toronto

      I rebuilt Nissan vehicle configurators in React on AEM.

    6. 2017–2018 AmazeFrontend Developer · London

      I built Lexus and Toyota experiences on Sitecore, and wrote my first professional React on Toyota’s Takumi Cats.

    7. 2014–2017 DigitasLBiFrontend Developer · London

      I built components for Project Helios, one platform for Nissan, Renault and Infiniti across Europe, all the way down to IE8.

    8. 2011–2015 Swansea UniversityB.A. (Hons) Creative Digital Media · 2:1

      Where I started making things for screens.

    03 · Capabilities

    What I bring.

    Frontend is my specialty. The platform work is why the things I build get to production quickly and stay fast once they’re there.

    Specialty

    The interface

    I build interfaces that are obvious to use and easy to change later.

    • React
    • TypeScript
    • Next.js
    • Component architecture
    • Component libraries
    • Design systems
    • State management
    • Accessibility, WCAG AA–AAA
    • Responsive and cross-browser
    • Figma collaboration
    Underneath

    The machinery

    I build the plumbing that gets the interface to production, quickly and without drama.

    • Node.js
    • GraphQL / Apollo
    • REST
    • Backend-for-frontend
    • OAuth
    • GitLab CI/CD
    • GitHub Actions
    • AWS / EKS
    • Docker
    • Terraform
    • Jest · RTL · Cypress
    • Grafana · CloudWatch · Splunk
    Around it

    The people part

    I lead from inside the code, mentor, and turn half-defined problems into something a team can own.

    • Hands-on tech lead
    • Mentoring
    • Product, UX and backend partnership
    • Scrum and delivery, when needed
    • AI-assisted development, with review and CI gates

    04 · Profile · Save data

    The person holding the controller.

    I’m direct and pragmatic, and happiest when there’s a useful prototype on the table. The rest is below.

    • RouteSwansea → Toronto

      I’m British-born. I studied in Wales, worked in London, then moved to Toronto and swapped drizzle for actual winter.

    • PositionCentre

      I play centre in Toronto United Flag Football. Every play starts with my snap. No pressure.

    • InventoryMagic: The Gathering

      I collect Magic: The Gathering cards. The binder situation is under control. Mostly.

    • Head of securityFreya

      My Rottweiler. Reports to no one. She’s in the career map if you find her.

    • LikesUseful prototypes

      And chaotic problems that need calming down.

    • FeedbackDirect, both ways

      I’d rather hear it straight, and I give it the same way.

    05 · Contact

    Press start.

    If you’ve got an interface that’s grown teeth, a pipeline that takes a coffee break every build, or a problem nobody wants to own, I’d like to hear about it.