Skip to main content
← back

/projects

Selected work.

Web products and side projects I've built and shipped — from client sites to a Discord app. The AI agents live on the home page; this is everything else.
2026Client site · lead-gen

A&R Carpet Cleaning

arcarpetcleaning.ca

A marketing + booking site for a local carpet-cleaning business — built to turn visitors into booked jobs and shipped to a custom domain in a weekend.

  • Server-action quote form — no third-party form service, submissions land straight in the inbox
  • Honeypot + rate-limiting stops spam without CAPTCHA friction for real customers
  • Tuned for speed on mobile data — fast LCP on a throttled connection
Next.jsTypeScriptTailwind
2026Rebuild · marketing site

MMSU Driving School

new-mmsu.vercel.app

A driving school's dated, static page rebuilt end-to-end into a modern, fully responsive React site — easier to read, faster, and simple to extend without a developer on hand.

  • Rebuilt from scratch in React + TypeScript with a clean component architecture
  • Scroll-linked motion and section reveals on the hero and content
  • Responsive from 320px up with lazy-loaded, optimised media
ReactTypeScriptFramer Motion
2026Discord bot · PWA

Daily Dose of Val

how it works

A Discord bot that shows your Valorant daily store, wallet, bundles, and night market right inside Discord — so you never open the game just to check the shop.

  • Password-free login — you authenticate on Riot's own page, credentials never touch the bot
  • AES-256 encrypted sessions with silent hourly token refresh — stay logged in for weeks
  • Companion PWA with an Android share-target for one-tap redirect submission
PythonNext.js
2023Android app

Shield VPN

A native Android VPN client shipped to APKPure — OpenVPN protocols, one-tap region switching, and no ads.

  • Native Java + XML layouts targeting Android 8+ for broad device support
  • OpenVPN with a vendor server list and one-tap region switching
  • Split-tunnel toggle to route only selected apps through the VPN
JavaKotlin