Available for contract work

Full-stack
developer &
UX engineer.

I build thoughtful, user-friendly web applications.

About

I'm a full-stack engineer working in React/TypeScript and Python (Django REST Framework, FastAPI), with UX training in user research and Figma prototyping. My background also includes data science work, including a DISC personality classifier built with BERT and XGBoost on the Enron email corpus.

My best work happens with non-technical domain experts. Unknot, a conflict resolution research platform, came out of a partnership with a workplace conflict specialist whose methodology I translated into a guided data-capture flow. I pick up unfamiliar domains quickly and build the right tool for them.

I'm a former university badminton captain with a coaching certificate, currently in the longest break between games of my life. Working on fixing that.

Frontend
TypeScriptReactTailwind
Backend
DjangoDjango REST Framework (DRF)FastAPIGoPostgreSQL
Infrastructure
DockerAuth0NginxHetznerVercel
AI Workflow
Claude CodeFigma MCP

Selected work

Unknot - Conflict Resolution Research Platform screenshot

Unknot - Conflict Resolution Research Platform

A structured research platform for capturing workplace conflict data, built in collaboration with a workplace conflict specialist. Participants follow a guided four-step flow with progressive disclosure, load-balanced content distribution to keep data coverage even, and session-based anonymous identity with optional Auth0 OIDC.

ReactTypeScriptTailwindDRFPostgreSQLAuth0 (OIDC)NginxDocker
DISC Classifier - DISC Personality Email Classifier screenshot

DISC Classifier - DISC Personality Email Classifier

A multi-label classifier that predicts DISC personality types from email text using BERT embeddings and XGBoost. Trained on the Enron corpus via a pseudo-labelling pipeline and served through a FastAPI endpoint. Built as an end-to-end ML project: dataset construction, embedding, training, and serving.

PythonBERTXGBoostTensorFlowFastAPIDocker
EatSafe - Allergen Checker (UX Research) screenshot

EatSafe - Allergen Checker (UX Research)

A UX case study for a food-safety app concept: photograph a dish and flag likely allergens. Designed the flow in Figma and built the first screens in React Typescript via Figma MCP, then ran validation research that surfaced a fundamental trust barrier and ended in a recommendation not to build.

FigmaUser JourneyUser ResearchFigma MCPCursorReactTypeScriptTailwind
Miles & Miles - Car Rental Booking Flow (UX Engineering) screenshot

Miles & Miles - Car Rental Booking Flow (UX Engineering)

A multi-screen car rental booking flow designed in Figma and converted to React components using Claude Code with the Figma MCP server. A happy-path prototype built using Claude Code with the Figma MCP Server, featuring reusable UI components, form validation, date and time modal pickers, and React Router navigation with disabled-state management.

FigmaFigma MCPClaude CodeReactTypeScriptTailwind
NotFbook - A social network with real-time chat and notifications screenshot

NotFbook - A social network with real-time chat and notifications

A team-built real-time social network covering authentication, WebSocket live private and group messaging, notification infrastructure, and frontend state managed across multiple React contexts. I was mostly responsible for the frontend.

ReactGoWebSocketSQLiteCSS Modules
GoPulse - Secure Forum with Custom Infrastructure screenshot

GoPulse - Secure Forum with Custom Infrastructure

A forum with a custom rate-limiting system built from scratch using Go channels and goroutines. Provisions HTTPS certificates automatically via Let's Encrypt ACME, with environment-adaptive TLS that supports both managed-platform and bare-metal deployment.

GoSQLiteLet's Encrypt ACMEGCP
Tetris - Tetris with Leaderboard screenshot

Tetris - Tetris with Leaderboard

Full-stack Tetris with a vanilla JS engine with DOM-based rendering and a requestAnimationFrame game loop and a decoupled Go backend for score persistence, a leaderboard with real-time search, and Jest testing boundary conditions, consecutive and non-consecutive clears, and scoring rules.

JavaScriptGoJestTailwindCSS 3
Thymynd - Decision-Support Concept Site screenshot

Thymynd - Decision-Support Concept Site

A mobile-responsive concept site for a personalised decision-making platform spanning education, social services, and justice sectors. Built in collaboration with the same workplace conflict specialist behind Unknot, as the first project in an ongoing partnership.

HTML5CSS3JavaScript

Contact

Currently taking on one new contract. The fastest way to reach me is the email below, I read everything within a day.

davidchoy.dev@gmail.com