Caleb Kim
in
Caleb Kim in
Caleb KimForma
01 CONTEXT02 SOLUTION03 UNDER THE HOOD04 DECISIONS05 REFLECTION
Caleb KimForma·CASE STUDY
CASE STUDY · BUILD — DESIGNED & CODED

Forma

LIVE SOLO · CLIENT BUILD

Founding designer — patient platform built 0 → 1.

The site, end to end — programs, intake, consent, payment, booking.
TL;DR — A SCREENER CAN STOP HERE

Forma Medical Wellness is a live telehealth platform for a New York practice — treatment programs, a rule-based eligibility questionnaire, clinical intake, two-document e-sign consent, Stripe consultation checkout, and an in-app scheduler that creates the Zoom visit. Built 0 → 1, solo, self-hosted on AWS where the HIPAA BAA is free. Live at formamedicalwellness.com — pre-patient-launch pending legal and clinical sign-off.

78PAGES — NEXT BUILD
4LANGUAGES — EN · KO · ES · ZH
$120CONSULT FEE — LIVE STRIPE
ROLESolo — design + build (client work)
TIMELINE2026 — initial build → Aug iterations
TEAMSolo + AI pair · one clinician client
TOOLSNext.js 15 · Supabase · Drizzle · Stripe · Zoom · SendGrid · AWS Amplify
01 — CONTEXT

A real telehealth front door, without enterprise SaaS prices

The client is an ER doctor whose hours change weekly, and his practice needed intake, consent, payment, and scheduling without living inside a clunky EHR — or paying enterprise prices for a “HIPAA-eligible” stack. The app handles PHI, so the host needs a signed BAA: enterprise-only at Vercel and Render, free and self-serve at AWS.

✦ NORTH STAR

“The compliance-and-cost problem was really a hosting problem.”

Homepage treatment section — GLP-1 weight care
Treatment programs up front — GLP-1 weight care by generic name, per the client's compliance call.
02 — SOLUTION

Ship fast, then replace the rented parts with owned ones

A visitor browses programs, passes an eligibility questionnaire, completes intake, e-signs two consents, pays the consult fee, and books a Zoom visit — while the clinician sets weekly hours and reviews everything from an admin dashboard. The approach: ship fast, then replace rented parts with owned ones — the EHR calendar became a from-scratch scheduler.

The rule-based eligibility questionnaire, start to finish — no AI, just honest rules.
The Forma homepage in Korean
The same homepage in Korean — one of four languages, cookie-switched, no flash.
Clinician dashboard — appointments, intakes, consents
The clinician dashboard — intakes, signed consents, and booked visits in one view.
INSIGHTOwn the scheduler“My hours change every week because I'm an ER doctor” — the client's constraint killed the embedded EHR calendar. A from-scratch availability setter + slot picker + Zoom meeting creation replaced it.
INSIGHTBMI is clinician-onlyHeight and weight are collected in intake, but the computed BMI shows only in the admin view — no discouraging on-screen number for the patient.
03 — UNDER THE HOOD

The same screens, flipped over

No AI at runtime — the questionnaire is rule-based and every flow deterministic, which is what a medical intake should be. Toggle any screen below to see the code behind it.

FRONTENDNext.js 15 · React 19 · Tailwind 4
BACKENDSupabase Postgres · Drizzle ORM · Auth.js
INTEGRATIONSStripe · Zoom S2S OAuth · SendGrid
HOSTINGAWS Amplify SSR — free HIPAA BAA
KEY SCREEN A · SCHEDULER
Set my hours — the clinician's weekly availability screen
Same screen, both faces — weekly hours in, bookable Zoom visits out.
KEY SCREEN B · PAYMENT GATE
The consultation checkout — $120, Stripe live mode
Same screen, both faces — pay the consult fee, then pick a slot.
04 — DECISIONS

What I said no to

✕ REJECTEDVercel / Render hostingPHI needs a signed BAA — Enterprise-only there, free and self-serve on AWS via Artifact.
✕ REJECTEDThe embedded EHR calendarCharmHealth's flow was painful for weekly-changing hours — replaced by the in-app scheduler.
✕ REJECTEDDocuSignA timestamped typed-name signature stored in the DB is ESIGN-valid, free, and self-contained — no extra vendor, no extra BAA.
✕ REJECTEDVenmo for medication paymentsProhibited by the platform's AUP and not HIPAA-appropriate — the licensed pharmacy should bill the patient directly. Final call rests with counsel.
A NOTE ON HONESTY

“Every screenshot and recording here uses test accounts only — patient-facing software means real people's health data, and none of it belongs in a portfolio.”

05 — REFLECTION

The expensive bugs live in the boundaries

The expensive bugs lived in the boundaries, not the product code — Amplify quietly withholding env vars from the SSR runtime silently opened the payment gate, and a day went to Wix overriding a DNS record until one “Unassign” click freed it. On a regulated, self-hosted stack: verify the deployed thing, not the local one.

SAY HELLO Like what you see? Let's talk. bycalkim@gmail.com →
UP NEXT Gina's KLIVE The site and day book a Korean head spa runs its whole day on. →
LAST DEPLOYED AUG 2026 · NYC
ESC
↑↓ navigate↵ openESC close