Desktop-to-Web CRM Migration
2025 — PresentSmartDoctor · Module design & implementation, plus the runtime foundation
A long-running migration of the desktop CRM's core screens to the web (React). Starting with the monthly reservation calendar, I designed and built my modules and improved query performance by splitting month-wide fetches into per-week cached requests. Because the web app runs inside a desktop webview, I also built the runtime foundation — authentication (refresh tokens), the native bridge, and WebView2 runtime deployment. Later I established an 'add API → standalone web app → webview embed' pattern and ported three desktop-only screens.
Cross-stack development spanning the web, API, and desktop codebases
React / TypeScript / Zustand / Kotlin / C# / WebView2
Proprietary — code not public
Clinical Records Screen
2026SmartDoctor · The largest module in the web migration
Built a new clinical records screen covering diagnosis and prescription input, consultation-fee calculation, treatment-pass usage, and record saving. Handled fine-grained input UX and data integrity together: prescription autocomplete with input debouncing, automatic consultation-fee assignment and release, guards against duplicate saves from repeated clicks, and a refactor that made the form the single source of truth.
Owned the largest module of the migration (~60 tickets in a quarter)
React / TypeScript / Kotlin / WebView2
Proprietary — code not public
Call Center Consultation Management
2026SmartDoctor · Frontend and backend API together
A new web module for collecting, assigning, and tracking consultation leads at clinic call centers. It talks to the telephony middleware over WebSocket to create leads from incoming calls automatically, and provides three intake channels — bulk Excel upload, individual registration, and incoming-call auto-creation — plus server-side filtering. Fixed field-reported issues in short cycles, including a race condition that duplicated leads on a single call and reconnection instability.
Contributed to adoption by a large plastic-surgery clinic running a call center
React / TypeScript / Kotlin / WebSocket / MSSQL
Proprietary — code not public
Payment Terminal Integration
2026SmartDoctor · Across desktop, web, and backend
Integrated external payment terminals into the CRM checkout flow. Built a WebSocket client with automatic reconnection for the desktop (.NET) and a payment-session state machine for the web, and solved the multi-pod failure — where the payment plugin and the CRM connected to different pods and couldn't find each other — by replacing the in-memory session registry with a Kafka fan-out relay.
Proposed and designed the session routing for multi-pod environments
Kafka / WebSocket / C# / React / Zustand
Proprietary — code not public
64-bit Migration of the Desktop CRM
2025SmartDoctor · Proposed and led
What blocked the CRM's 64-bit migration was the set of 32-bit-only DLLs for carrier telephony and payment terminals. I designed a structure that isolates them in a separate 32-bit process communicating with the main app over IPC, complete with lifecycle management, automatic restarts, and error logging. I also collected the OS bitness distribution of real installations via Sentry to ground the migration decision in data.
Cleared the path to 64-bit while keeping legacy integrations compatible
C# / .NET / WPF / IPC / Sentry
Proprietary — code not public
DUR (Drug Safety Review) Integration & Verification Tool
2026SmartDoctor · Web + backend, plus a purpose-built verification CLI
Built the drug-utilization-review flow that checks prescriptions and diagnoses against HIRA (Korea's health-insurance review agency), from the web popup to the backend broker integration. Implemented every check type for prescriptions and wrote a case-based (YAML) CLI tool that regression-verifies the integration's correctness.
Kotlin / React / AWS S3 / SQLite
Proprietary — code not public