projects.tsx
3D

// projects.tsx

Things I've built

Side projects and product work, ordered by how much of me is in them.

Featured3

Flipzone

Live

Full-stack e-commerce with OAuth, discovery and order tracking

A feature-rich e-commerce platform built around product discovery. OAuth-based authentication, dynamic browsing with filters, search and comparison tools, plus cart and wishlist management — backed by order tracking and reviews for the whole post-purchase loop.

  • OAuth-based authentication flow with persistent sessions
  • Faceted filtering, search and side-by-side product comparison
  • Cart and wishlist management with optimistic updates
  • Order tracking and a review system for post-purchase interaction
  • Next.js
  • TypeScript
  • MongoDB
  • Tailwind CSS
Talkitive interface

Talkitive

Live

Real-time messaging with read receipts and presence

A secure real-time messaging app built on Pusher, with read receipts, online/offline presence indicators, group chats, customizable profiles and file uploads through the Cloudinary CDN.

  • Real-time delivery over Pusher with message read receipts
  • Online/offline presence indicators and group chat support
  • Authentication via NextAuth with Google and GitHub providers
  • Image and file uploads served through the Cloudinary CDN
  • Chat room and channel management with customizable user profiles
  • Next.js
  • TypeScript
  • Tailwind CSS
  • MongoDB
  • Prisma
  • NextAuth.js
  • Pusher
  • Cloudinary
This Portfolio interface

This Portfolio

In progress

A gamified 3D space station you can actually walk around

The site you're on. A dual-mode portfolio: an explorable 3D orbital station with mini-games, and a fully accessible VS Code-themed 2D mode containing exactly the same content. Built with Next.js, React Three Fiber and a single typed data layer feeding both.

  • Shared, zod-validated data layer consumed by both the 2D and 3D modes
  • Third-person exploration with Rapier physics and quality-tiered rendering
  • Three mini-games gating progression through the station
  • Capability detection routes low-power devices to the 2D mode automatically
  • Every piece of content is reachable without WebGL
  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Vercel

More work3

FIFA Points Table Simulator interface

FIFA Points Table Simulator

Live

Round-robin tournament management FIFA itself doesn't offer

A points table simulator for round-robin tournaments, working around FIFA's own tournament limitations. Handles score tracking, live points table updates and pre-made fixture generation so a group of players can run a fair league.

  • Next.js
  • Tailwind CSS
  • MongoDB
  • Redux Toolkit
  • +1 more
Tars Image Gallery interface

Tars Image Gallery

Live

Responsive image gallery on the Unsplash API

An image gallery web app built on the Unsplash API, focused on fast browsing and a clean responsive grid.

  • Next.js
  • Tailwind CSS
  • Vercel
Yang Form interface

Yang Form

Live

Build and share forms for data collection

A web app for creating custom forms for data collection, with responses persisted to Firebase.

  • React
  • Tailwind CSS
  • Redux Toolkit
  • Firebase
  • +1 more