Skip to main content

Nowon Lee

Frontend Engineer

I observe how services behave, trace problems to their causes, and fix them. I want to help make web services easier to use and their information more accurate.

In TypeScript and React services, I have improved real-time updates, progress reporting during document generation, and dashboard accuracy, and resolved authentication issues. I continue to check the user experience after deployment.

Experience

2025 — Present

AI Factory

Frontend Engineer

I handled frontend development for public-sector web services. I improved information accuracy, progress updates during document generation, interface responsiveness while processing API responses, and deployment reliability.

Fixing incorrect dashboard values and improving transfer efficiency

I fixed missing and incorrect measurements over time so dashboard users could accurately check server status. I aligned metric names and labels with actual responses and corrected ratio calculations. I also traced why measurements that should stay separate were being combined and updated how they are identified.

I changed queries to fetch only values after the previous request time, reducing data transferred over 10 minutes from 96.5 MB to 41 KB. I designed and implemented a Next.js API so the browser would not call Prometheus directly. I compared the deployed dashboard with actual responses to verify the displayed values.

Verified in productionNext.js, Prometheus, Recharts

Improving progress updates and status displays during document generation

I designed the frontend so users could keep track of the current stage and elapsed time during document generation, which takes 5–10 minutes. I added a confirmation step before leaving the page or canceling generation.

After SSE events, the client checks the server status again so the page reflects the actual state even if events arrive out of order or the connection fails. I reduced API requests to check document generation status from 150–200 to 30 or fewer. After deployment, I verified that generation and cancellation states matched the progress shown on the page.

For 5–10 minute tasksReact, SSE, Next.js

Improving responsiveness during large API responses and keeping real-time charts continuous

For API responses of up to 330 MB, I reduced the maximum interval between frame updates from 1,316.6 ms to 16.8 ms. I designed a module that moves API requests, JSON parsing, and display-value conversion into a Web Worker and applied it across multiple pages to keep them responsive while processing responses.

I merged historical values loaded after refresh with new streamed values on the same time basis, keeping the chart continuous without duplicates. I recombined split JSON fragments with the next chunk so real-time updates could continue.

Response size and format retainedWeb Worker, REST, Server Sent Event

Validating 70+ key flows with consistent authentication recovery

I made more than 70 key authenticated-user flows repeatably testable before release. This coverage surfaced a mismatch between credentials retained in the browser and an expired server session.

I applied the same recovery behavior before users accessed pages that require login and when authentication failed during use, so users received a consistent response. I handled root-cause analysis and deployed the shared recovery behavior to the QA environment.

Pre-deployment verificationPlaywright, Authentication, QA

Packaging the frontend as a library for integration into another app

I configured a Vite library build so a previously standalone frontend could be used in another app. I organized type declarations, CSS, and provider integration to keep the UI and behavior consistent in the host app.

Integration into another appVite, TypeScript, React, CSS

2022 — 2024

Crust Universe / Quarkonix

Frontend Engineer

I made pages reflect user requests immediately, reduced the time it took for the first page to appear, and addressed issues that prevented real-time information from being shown. I documented the loading improvements so other projects could use the same approach.

Showing requested changes immediately and accurately

I made the page respond to user requests immediately, without waiting for a server response. I addressed mismatches between information on the page and server values, and reduced the request count by removing duplicate requests.

Production serviceReact, TypeScript, Optimistic Update

Shortening initial load and sharing a reusable setup

I reduced the time it took for pages to become visible to users. I documented the steps so other frontend projects could apply the same improvements.

Service deliveryVite, React, Lazy Loading

Restoring real-time information updates

I used Chrome DevTools to find and fix intermittent WebSocket disconnections that stopped real-time information from updating.

Production serviceWebSocket, Chrome DevTools

Open Source

v7.13.1

React Router

Fixed optional URL parameters incorrectly matching paths that lacked a `/` separator.

I added tests to check that URLs with a suffix beginning with "." still match as before.

v1.2.0

Outline

Fixed an editor defect that prevented Delete or Backspace from removing the final character before an inline image.

Verified deletion inside and outside tables while preserving regular text deletion.

Projects

Background

Dankook University
Applied Computer Engineering
2016 — 2022
Engineer Information Processing
Human Resources Development Service of Korea
2022
TOEIC Speaking
IH
2025

Contact