Things I've built.
All made because I needed them myself. You can try any of them right away without signing up.
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.
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.
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.
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.
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
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.
Fake Stack OverflowFSO
A Stack Overflow clone with a real backend (React, Express, SQLite). Post questions and answers; the data resets daily.
Kanade
Learn hiragana & katakana as if you were playing music: flashcards, 6-choice quizzes, focused review of misses, TTS pronunciation, and an activity heatmap.
Kazu
Master Japanese numbers, counters, and date/time readings through practice drills and quizzes.
Baybay
All 59 characters of Baybayin, the ancient Philippine script, taught with flashcards and quizzes.
Heartline
A personal dashboard that draws my Strava runs on a map as heart-rate-colored routes.
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.
Haru
Check off daily routines, light and easy: completion rings, a streak heatmap, and an endless-scroll calendar.
Jangbu
A light, pretty expense tracker that fits each day's income and spending onto a single calendar.
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.
Private.
Personal services for my own use. Sign in once and they all unlock for 30 days.
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.