Josh Lee
Get in touch

I build interactive experiences that earn their place.

Web development for the design-led team

Josh Lee

Full-stack developer with a background in games, which taught me how to use pacing, feedback and a clear next move to bring visitors to the signup or sale.

I own projects and keep them moving. Finding answers, flagging risks early, and don't wait to be asked.

Tech & tools

  • TypeScript
  • React
  • Figma
  • Next.js
  • Motion
  • Tailwind
  • Supabase
  • Claude
  • Unity

Recent work

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Shotpot is a SaaS product that began with dozens of discovery calls with race organisers and photographers to understand the problem space. Every screen and flow got wireframed in Figma for fast iterations, and I conducted user-testing sessions with photographers (the end users) to refine the UX.

Built with Next.js and Supabase. The whole app's UI lives in Storybook as pure React components. Comprehensive unit testing (Jest), Playwright e2e tests with a full-journey smoke test that runs on CI before promoting a build to production.

Spent a silly amount of time getting the gallery view (the core of the product) highly performant with thousands of photos with a virtualization/windowing engine for seamless browsing.

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Shotpot is a SaaS product that began with dozens of discovery calls with race organisers and photographers to understand the problem space. Every screen and flow got wireframed in Figma for fast iterations, and I conducted user-testing sessions with photographers (the end users) to refine the UX.

Built with Next.js and Supabase. The whole app's UI lives in Storybook as pure React components. Comprehensive unit testing (Jest), Playwright e2e tests with a full-journey smoke test that runs on CI before promoting a build to production.

Spent a silly amount of time getting the gallery view (the core of the product) highly performant with thousands of photos with a virtualization/windowing engine for seamless browsing.

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Shotpot is a SaaS product that began with dozens of discovery calls with race organisers and photographers to understand the problem space. Every screen and flow got wireframed in Figma for fast iterations, and I conducted user-testing sessions with photographers (the end users) to refine the UX.

Built with Next.js and Supabase. The whole app's UI lives in Storybook as pure React components. Comprehensive unit testing (Jest), Playwright e2e tests with a full-journey smoke test that runs on CI before promoting a build to production.

Spent a silly amount of time getting the gallery view (the core of the product) highly performant with thousands of photos with a virtualization/windowing engine for seamless browsing.

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Shotpot is a SaaS product that began with dozens of discovery calls with race organisers and photographers to understand the problem space. Every screen and flow got wireframed in Figma for fast iterations, and I conducted user-testing sessions with photographers (the end users) to refine the UX.

Built with Next.js and Supabase. The whole app's UI lives in Storybook as pure React components. Comprehensive unit testing (Jest), Playwright e2e tests with a full-journey smoke test that runs on CI before promoting a build to production.

Spent a silly amount of time getting the gallery view (the core of the product) highly performant with thousands of photos with a virtualization/windowing engine for seamless browsing.

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Shotpot is a SaaS product that began with dozens of discovery calls with race organisers and photographers to understand the problem space. Every screen and flow got wireframed in Figma for fast iterations, and I conducted user-testing sessions with photographers (the end users) to refine the UX.

Built with Next.js and Supabase. The whole app's UI lives in Storybook as pure React components. Comprehensive unit testing (Jest), Playwright e2e tests with a full-journey smoke test that runs on CI before promoting a build to production.

Spent a silly amount of time getting the gallery view (the core of the product) highly performant with thousands of photos with a virtualization/windowing engine for seamless browsing.

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Shotpot is a SaaS product that began with dozens of discovery calls with race organisers and photographers to understand the problem space. Every screen and flow got wireframed in Figma for fast iterations, and I conducted user-testing sessions with photographers (the end users) to refine the UX.

Built with Next.js and Supabase. The whole app's UI lives in Storybook as pure React components. Comprehensive unit testing (Jest), Playwright e2e tests with a full-journey smoke test that runs on CI before promoting a build to production.

Spent a silly amount of time getting the gallery view (the core of the product) highly performant with thousands of photos with a virtualization/windowing engine for seamless browsing.

More projects

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation

Editor interface

ShotpotPhoto gallery SaaS for race events

  • Next.js
  • TypeScript
  • Supabase
  • Figma
  • Tailwind
  • Product design
  • User research
  • Test automation