Hi, I'm Clayborne Lee

Everyday problems,
solved by building.

When the tool I need doesn't exist, I build it, whether that's a Japanese flashcard app or a commute-range map. Planning, design, development, and server operations, all on my own.

Python · FastAPI React · Next.js AWS · Docker 🎓 CS @ Stony Brook Uni 🗽 From New York 📍 Melbourne, 2026.9 →
GitHub LinkedIn SEEK

Things I've built.

All made because I needed them myself. You can try any of them right away without signing up.

🎓 CSE416 team project → rebuilt solo

Globird

An AI travel planner. Claude drafts a day-by-day itinerary as schema-validated JSON that you can route on a region-aware map, save, and export. React 18, Express 5, SQLite, Google sign-in.

globird.clayborne.devCode

MOIYOBeta

An open-chat app for gamers: create or join rooms to trade games and chat in real time, with Google sign-in and live member counts.

moiyo.clayborne.dev

PAN PLAYBeta

A cooking-playground app: cook recipes step by step in your kitchen world, collect dishes and coins, and chat in cooking rooms. Google sign-in, installable PWA.

panplay.clayborne.dev

TrainoBeta

A running companion that turns training into a game: raise your Traino, clear AI-suggested routes for points, track your week, and run with a crew. Google sign-in, installable PWA.

traino.clayborne.dev

tonggeun-mel

30/45/60-minute commute isochrone map of Melbourne, built from GTFS data for the full train and tram network (1,842 stops), with Dijkstra routing and live timetable refinement.

tonggeun-mel.clayborne.devCode

tonggeun

Draws 30/45/60-minute commute isochrones over Seoul-area rail and walking, so you can see every reachable neighborhood at a glance when picking a home or a job.

tonggeun.clayborne.devCode
🎓 CSE316 assignment

Fake Stack OverflowFSO

A Stack Overflow clone with a real backend (React, Express, SQLite). Post questions and answers; the data resets daily.

fso.clayborne.devCode

Kanade

Learn hiragana & katakana as if you were playing music: flashcards, 6-choice quizzes, focused review of misses, TTS pronunciation, and an activity heatmap.

kanade.clayborne.devCode

Kazu

Master Japanese numbers, counters, and date/time readings through practice drills and quizzes.

kazu.clayborne.devCode

Baybay

All 59 characters of Baybayin, the ancient Philippine script, taught with flashcards and quizzes.

baybayin.clayborne.devCode

Heartline

A personal dashboard that draws my Strava runs on a map as heart-rate-colored routes.

heartline.clayborne.devCode

Pacer

A running plan that rebuilds itself each week: hit your kilometre target and it grows, miss and it waits, with scheduled cutback weeks and 19 badges. The long-term goal is a sub-20 5K.

pacer.clayborne.devCode

Haru

Check off daily routines, light and easy: completion rings, a streak heatmap, and an endless-scroll calendar.

haru.clayborne.devCode

Jangbu

A light, pretty expense tracker that fits each day's income and spending onto a single calendar.

jangbu.clayborne.devCode

Korea RescueEN · KO · JA · ZH

Your first day in Korea, sorted: eSIM, transit & payment cards, KTX, and identity-verification workarounds. A survival guide for foreign travelers, in four languages.

korea.clayborne.devCode

Private.

Personal services for my own use. Sign in once and they all unlock for 30 days.

🔒 Locked Sign in

Sign in to see the services here.

This site itself
is part of the portfolio.

Every app here is served from a single AWS EC2 instance behind one Caddy container. Thanks to Route 53 wildcard DNS and Caddy's automatic HTTPS (Let's Encrypt), shipping a new static app takes nothing more than a git clone and 3 lines of config. Most apps are plain static files with no build step; the heavier ones (the AI travel planner, the Q&A demo, a private diary) run as Node services behind the same proxy, each under a systemd memory cap. The whole thing fits in under 1 GB of RAM.

1EC2 instance
18HTTPS domains
4backend services
<1GBRAM for everything
Browser ↓ *.clayborne.dev (Route 53) Elastic IP → Security group (80·443) ↓ EC2 t3.micro · Ubuntu 24.04 ↓ Docker ─ Caddy ├ auto TLS ×18 (Let's Encrypt) ├ gzip + file_server (static apps) ├ reverse_proxy → Node ×3 + auth (systemd) └ /srv/<app> ← git pull = deployed