phonghtran

Side projects

Small tools I’ve built for my own life. Each one started as something annoying at home, at the gym, or out the door, and I still use most of them. They aren’t case studies, just the habit of noticing a need and shipping a fix.

Built with AI. I write the spec and prototype, direct a coding agent, and review what it produces before I trust it.

Runs on AI. Some tools use a model as a feature, which means deciding when it acts, when it asks, and what it’s allowed to cost.

Gia Phả family tree with an accent-free search for "dieu linh" highlighting Võ Thị Diệu-Linh. Names are invented.

Family & home

Gia Phả

For family

Several family lines, three spellings of every name, and relatives who want to look someone up without learning a genealogy app.

Design decision

Search ignores Vietnamese accents and matches nicknames, so "dieu linh" finds Diệu-Linh. Each family line gets its own band, and cross-family marriages are drawn in both.

Built with Claude Code

Vanilla JS · D3 · Firebase Auth · Firestore · since Oct 2026

Baby Timeline on iPhone: upcoming appointments and prep tasks such as finishing the hospital bag, counting down to the due date.

Family & home

Baby Timeline

For us two

Two new parents, one shared timeline from prep through the first months, and reminders that show up on both phones without a server to run.

Design decision

Designed as an HTML prototype first, then built as a native SwiftUI app synced over iCloud sharing. I reviewed the generated code and fixed two bugs it shipped with.

Built with Claude

SwiftUI · CloudKit · Local notifications · since Jul 2026

Workout Timeline log sheet for Dumbbell Step-ups, pre-filled with last session’s weight from the gym log.

Training

Workout Timeline

For me

A six-week strength program that doesn’t fall apart the first time I miss a day.

Design decision

You rate a set (👍 / 👎 / skip) before logging it, and the log sheet pre-fills with last time’s numbers from my gym log. Missed sessions move forward from today.

Built with Claude Code

Svelte 5 · Tailwind · Firestore · GitHub Actions · since Jul 2026

LinkButler chat proposing new tags and a note for a saved restaurant, with Apply and Dismiss buttons.

Everyday AI

LinkButler

For me

Restaurants and bars saved across Google Maps, Instagram and Yelp, and none of them findable on a Friday night.

Design decision

Paste any link and the AI fills in the place. Chat search handles "dinner under $30, somewhere new", and when the assistant wants to change something it proposes the edit and waits for me to confirm.

Built with Claude CodeRuns on Gemini

SvelteKit · Cloud Functions · Firestore · since May 2026

Keepsake log showing a sunscreen and a box of bandages, each with brand and name read from the photo.

Everyday AI

Keepsake

For me

Remembering the wine, snack or face cleanser I liked, without typing up a label in the store aisle.

Design decision

Snap a photo and Gemini reads the label into structured fields. There’s no server: App Check makes sure only my app can spend the AI budget.

Built with Claude CodeRuns on Gemini

Plain HTML/JS · Firebase AI Logic · Firestore · PWA · since Oct 2026

E-ink transit display listing the next subway and bus arrivals with minutes until each.

Ambient

Next Train, on the Wall

For us two

Knowing whether to run for the train or wait for the bus, without unlocking a phone on the way out the door.

Design decision

A tiny API that boils MTA subway and bus feeds down to the next few arrivals, rendered on an e-ink display by the door. You glance at it; nothing to tap.

Cloud Functions · MTA GTFS-RT · TRMNL · since Apr 2026

Baby Timeline and Keepsake are real screens. The others use made-up data, since the real ones hold my family’s details.

Also on the bench

Smaller builds, same habit.

Family & home

  • Kid PlanA Sunday email of what’s coming up, from newborn through college, timed by age and grade.
  • Food PickerEnds the "what should we eat" loop by picking one item from each category. Web and iOS.
  • OOO FriendA calendar for when friends are out of town, kept off my real calendar.

Training

  • Gym LogA searchable log of every set, which Workout Timeline reads for its suggestions.
  • Habit TrackerStarted in 2022 and rebuilt in 2026 with weekly streaks.

Everyday AI

  • Culture RadarRuns on ClaudeReads critics I trust, pulls out the works they discuss, and scores them against my taste profile in a daily digest.
  • would-likeRuns on GeminiA shared bucket list with friends. Paste an event link and the details fill themselves in.
  • Burnet TriviaRuns on GeminiParty games for group hangouts, joined by room code. Gemini writes the decoy lies in Two Truths and a Lie, the horoscopes, and the dream images.

Music & data

  • Concert PreviewUpcoming NYC shows near me, with a player that previews each artist’s newest release.
  • Annual Music RecapMy most-played songs by year, built from years of music library exports.