I worked on GRAP from 2018 through 2020. The app was used across a range of industries — Heesung Catalysts, Amazing Brewery, Samsung Electronics, Lock&Lock, a major religious organization, and others. I had to maintain both versions: the old build had to keep shipping while the new one was constructed in parallel, with separate codebases and architectures for the same product.
The application is written in Swift, with the third-party layer carrying a substantial Objective-C surface from the canonical Korean iOS toolchain of that era. Networking, real-time messaging, in-app image rendering, capture and album, identity, push and telemetry, keychain, attributed text, and the RxSwift family that binds it all together.
Real-time messaging ran over MQTT locked down with mutual TLS — the client carries its own certificate, and during development the encryption was verified at the packet level. The same app carried live translation for cross-border teams: messages, posts, and comments could be translated in place, with the result shown for review before sending. And where a stock library fell short, we forked it and carried the patch ourselves — the camera-and-album picker among them.
I handled dozens of store releases across those two years, including same-day emergency builds when a client-facing crash demanded it. The push-certificate lifecycle was mine end to end — renewed annually against a runbook I wrote — and when a toolchain update broke crash-report symbolication, I automated the symbolication process. Four languages shipped in production.
The backend was led by a strong Slovenian engineer, and our daily working language was English — every protocol question turned into a written design conversation that ended in an explicit contract. Working with a capable cross-border counterpart over a written-English protocol shaped how I think about engineer-to-engineer collaboration to this day. (See Visuals · The Interview No. 004 — The Mission Song for the longer narrative of this period.)
When the company was acquired into Kakao Enterprise, GRAP and Kakao Work continued to operate as independent products. There was a stretch where I was running both at the same time — same office, two product lines, two release calendars.
