Overseas stock trading service
We handled feature development and maintenance for a brokerage's stock trading app that local investors overseas use to check quotes, place orders, manage holdings, and follow market news. If quotes and orders look out of sync, investors stop trusting the app, and if sign-in fails they cannot even start trading. We built a new sign-in flow using a code sent by text message and an address entry that follows the local administrative divisions, and tracked down and fixed defects that appeared when moving between live quotes, the watchlist, and order screens. We maintained it in the same period as the same firm's app for another country, separating fixes shared by both from handling needed only in this one.
A sign-in that shows the next step even when the code is late
Signing in to the stock trading app ends with entering a code received by text message. Every state a user actually meets, from requesting the code to entering, verifying, expiring, resending, and hitting the attempt limit, became its own step in the screen flow. The screen shows the time left and when a resend becomes possible, clears the entered code on resend, and blocks the same request from going out twice. Error messages and button states differ by situation, so even when the network drops or the server is slow, the user knows what to do next.

Address entry where choosing a region narrows the next list
Addresses where the trading app is used are organized into four administrative levels: province, city, district, and ward. Instead of typing an address as free text, the user picks it through dependent menus in which choosing a region lists only the areas beneath it. Changing a higher level clears any lower choice that no longer fits, so a combination that does not exist cannot remain. Local spellings of place names, the order of selection, and required fields were all adapted to the app's screens.

A trading flow kept in sync as users move between screens
In the stock trading app, live quotes, the watchlist, entering an order, and switching order screens form one continuous flow. Investors place an order right where they are watching the quote, and orders for both cash and margin accounts go through the same app. We analyzed and fixed issues along that flow. The focus was on what directly decides whether investors trust the app: the timing of incoming quote updates, state that no longer matched after returning from another screen, and handling of error responses. On top of this flow sits an order screen where the trading mode changes without leaving the menu and entering a target amount fills in the quantity.

Shared fixes and country-only handling, split while running two apps
Maintenance of the stock trading app ran in the same period as the same firm's investment app for another country. Comparing code and feature differences between the two, we separated fixes that went into both from handling needed only in this country's app. After each new requirement went in, we also checked that the existing sign-in, order, and quote flows were unaffected.

Highlights
SMS-code sign-in covering request, resend, and attempt limits
Local address entry that narrows down through province, city, district, and ward
Trading-screen maintenance that fixed state mismatches on quote updates and screen return
Insights
GA4 client_storage: 'none'은 정말 쿠키를 막을까?
두 달 전 이 블로그에 「GA4 쿠키 없이 쓰기」라는 글을 썼습니다. clientstorage: 'none' 으로 쿠키 저장을 끄고, 자체 분석이 쓰던 익명 ID 를 clientid 로 넘기면 쿠키 0개로 GA4 를 쓸 수 있다는 내…
GA4 Measurement Protocol: gtag.js 없이 서버에서 이벤트 보내기
랜딩 페이지의 전송량을 파일 단위로 쪼개 보다가, 가장 큰 파일이 우리 코드가 아니라는 것을 알았습니다. Google Analytics 의 gtag.js 였고, 방문 한 번에 176KB 를 받고 있었습니다. 페이지 전체가 1,094K…
중소 제조업 AI 도입 순서: DX를 먼저 끝내야 할까?
공장을 가진 중소·중견 제조기업 16만여 곳 가운데 스마트공장을 도입한 곳은 19.5%입니다. 회사가 작을수록 이 비율은 더 떨어집니다. 중소벤처기업부가 2025년 4월에 낸 제1차 스마트제조혁신 실태조사 결과입니다. 그림: 기업 규…
Next.js loading.tsx와 404: 버튼이 화면보다 먼저 살아나게 하기
관리 화면 왼쪽 위에 사이드바를 접고 펴는 ☰ 버튼이 있습니다. 폭 하나 바꾸는 버튼인데, 대시보드에서 누르면 2초 넘게 아무 반응이 없었습니다. 레이아웃만 바꾸는 일이 왜 이렇게 오래 걸리는지부터 들여다봤습니다. Next.js 16…



