진익근

필요한 기술을 빠르게 익혀 실제 문제 해결로 연결합니다.

React Native와 TypeScript로 앱을 개발해 왔고, 필요한 경우 Kotlin과 Swift 코드도 직접 다뤘습니다. 최근에는 업무 범위를 넓혀 NestJS 기반 서버 개발도 함께 맡고 있습니다. 익숙한 기술에만 머무르지 않고, 문제 해결에 필요한 영역을 배우고 검증해 실제 서비스에 적용해 왔습니다.

핵심 사례 보기

About

모바일 서비스의 개발과 운영을 함께 경험했습니다

신규 앱 출시부터 운영과 유지보수, Android와 iOS 빌드 및 배포까지 맡았습니다. 통합 서비스, 차량, 모빌리티 서비스와 물류 앱을 함께 개발하고 운영했습니다.

화면 구현과 API 연동뿐 아니라 인증, 결제, Push Notification, 사용자 위치와 지도, WebView, 전역 상태와 Native 빌드 환경 등을 담당했습니다. React Native만으로 구현하기 어렵거나 플랫폼 API를 직접 사용해야 하는 기능은 Kotlin과 Swift로 Native Module과 Native View를 만들어 적용했습니다.

문제가 발생했을 때 증상만 줄이는 데 그치지 않고 재현 조건과 내부 동작을 확인해 원인을 찾아왔습니다. 필요한 경우 기존 구현을 바꾸고, 같은 조건의 실기기 테스트와 수집된 오류 데이터를 바탕으로 개선 결과까지 검증해 왔습니다.

Key Achievements

문제의 원인을 찾고 개선 결과를 검증했습니다

01

KOKKOK Move

범용 위치 라이브러리를 서비스 요구사항에 맞는 Native Module로 전환

Problem

현재 위치 조회가 timeout으로 자주 실패했습니다. timeout과 캐시 유효 시간을 늘리면 오류 표시는 줄일 수 있었지만 대기 시간이 길어지고 오래된 좌표가 반환될 가능성이 커져 근본적인 해결이 아니었습니다.

Solution

  1. 라이브러리의 캐시 우선 조회와 지속 위치 업데이트 구조를 확인하고 앱에 필요한 단발성 조회와의 차이를 분석했습니다.
  2. Android는 FusedLocationProviderClient, iOS는 CLLocationManager를 사용한 Native Module을 직접 구현했습니다.
  3. 현재 위치를 먼저 요청하고 제한 시간 안에 응답하지 않을 때만 마지막 위치를 반환하도록 fallback 순서를 바꿨습니다.
  4. 권한 거부, 위치 서비스 비활성화와 timeout을 JavaScript에서 구분할 수 있도록 오류 계약을 정의했습니다.

Result

  • Android 조회 성공률을 72%에서 100%로 개선했습니다.
  • Android 응답 시간 중앙값을 67.3ms에서 41.8ms로 단축했습니다.
  • iOS는 캐시보다 현재 좌표를 우선해 위치의 최신성을 높였습니다.
02

KOKKOK

렌더링 문제와 화면 전환 문제를 분리해 병목 제거

Problem

상품 이미지가 많은 화면에서 스크롤과 화면 이동이 함께 느려졌습니다. 이미지 캐싱과 목록 렌더링 최적화로 스크롤은 개선됐지만 화면 전환 지연은 남아 있었습니다.

Solution

  1. 카테고리 변경 시 발생하던 불필요한 이미지 상태 갱신을 제거하고 렌더링 범위와 캐시 사용을 조정했습니다.
  2. 남은 지연을 화면 마운트, 이미지 디코딩, JavaScript 실행 부하와 Navigation 구조로 나눠 확인했습니다.
  3. JavaScript Stack과 Native Stack을 같은 화면과 조작 순서에서 비교한 뒤 화면 전환을 Native Stack으로 옮겼습니다.
  4. 기존 화면 이탈 방지 로직을 usePreventRemove에 맞게 변경하고 iOS 뒤로 가기 동작을 별도로 검증했습니다.

Result

  • Android 실기기 기준 평균 화면 전환 시간을 1.2초에서 0.8초로 단축했습니다.
  • 감각적인 판단 대신 동일 조건의 반복 측정으로 적용 근거를 확보했습니다.
03

KOKKOK Car

동시 인증 실패를 하나의 Token 재발급 흐름으로 직렬화

Problem

여러 API 요청이 동시에 401을 받으면 각 요청이 Token을 재발급해 요청마다 다른 인증 상태를 사용하거나 재발급 요청이 중복될 수 있었습니다.

Solution

  1. 첫 번째 401만 Token 재발급을 시작하고 이후 실패 요청은 대기열에 보관했습니다.
  2. 새 Token으로 원래 요청을 복구한 뒤 대기 중인 요청을 같은 인증 상태로 다시 실행했습니다.
  3. 재발급 실패 시 대기 요청과 인증 상태를 함께 정리하고 guest와 회원 Token 흐름을 나눠 처리했습니다.
  4. 인증과 무관한 초기 화면 API는 병렬로 실행해 순차 호출에 따른 대기를 줄였습니다.

Result

  • 동시 401 상황의 Token 경쟁 상태와 중복 재발급 가능성을 제거했습니다.
  • Token 재발급은 직렬로 처리하면서 인증과 무관한 초기 데이터 요청은 병렬로 유지했습니다.
04

KOKKOK Car / KOKKOK

차량 360도 뷰어와 연락처 선택을 Native로 구현

Problem

차량 360도 렌더링과 연락처 선택은 플랫폼 API와 화면 생명주기를 직접 다뤄야 했습니다. 플랫폼별 차이를 서비스 화면에서 각각 처리하면 비즈니스 로직까지 분기될 수 있었습니다.

Solution

  1. 차량 360도 뷰어는 iOS SceneKit과 Android OpenGL ES 기반 Native View로 구현했습니다.
  2. 연락처 선택은 iOS ContactsUI와 Android Contacts Provider를 사용해 플랫폼에 맞게 구현했습니다.
  3. Native View와 Module의 입력, 반환값과 오류를 공통 TypeScript 인터페이스로 노출했습니다.
  4. 3D 렌더링과 플랫폼 화면 호출은 Native에서 처리하고, 데이터 전달과 서비스 흐름은 React Native에서 처리했습니다.

Result

  • iOS와 Android에서 동일한 360도 이미지 조작과 연락처 선택 흐름을 제공했습니다.
  • React Native 화면에서는 플랫폼별 구현을 구분하지 않고 같은 인터페이스를 사용하도록 만들었습니다.

Migrations

기술 전환과 선택 이유

FromToReasonResult
범용 위치 조회 라이브러리Kotlin / Swift Native Module

캐시 우선과 지속 위치 업데이트 구조가 단발성 현재 위치 조회 요구사항과 맞지 않았습니다.

현재 위치 우선 조회와 timeout 시 캐시 fallback 구조로 변경했습니다.

JavaScript StackNative Stack

이미지와 목록을 최적화한 뒤에도 JavaScript 부하가 화면 전환에 영향을 주고 있었습니다.

Android 실기기 기준 평균 화면 전환 시간을 33% 단축했습니다.

react-native-push-notificationFirebase Messaging / Notifee

메시지 수신, 권한과 알림 표시 책임이 여러 위치와 Native 설정에 흩어져 있었습니다.

앱 상태별 메시지 수신과 알림 표시 및 클릭 경로를 분리했습니다.

분산된 환경 설정react-native-config / TypeScript 타입 생성

JavaScript, Android와 iOS의 설정값이 어긋나도 빌드 전에는 발견하기 어려웠습니다.

세 플랫폼이 같은 환경값을 읽고 실제 설정에서 TypeScript 타입을 생성하도록 정리했습니다.

Project Experience

서비스별 역할과 주요 기여

01
모빌리티 승객용 앱기능 추가 및 개선 / 운영 안정화

라오스 현지에서 운영되는 모빌리티 승객용 앱입니다. EV TukTuk 등의 차량을 호출하면 여러 기사가 요금을 제안하며, 배차 이후에는 차량의 이동 상태를 실시간으로 확인할 수 있습니다.

01

담당 범위

차량 호출부터 탑승과 운행 완료까지 이어지는 사용자 흐름을 개발하고, 기능 개선과 안정화를 담당했습니다.

02

서비스 주요 기능

  • 현재 위치 기반 출발지 및 목적지 설정
  • EV TukTuk 등의 차량 호출 및 기사 제안 요금 비교
  • 배차 기사 및 차량 정보
  • 차량 위치 및 이동 경로 실시간 추적
  • 호출 취소, 재호출 및 상태 알림
03

핵심 기여

01
현 위치 조회 성공률 72%에서 100%로 개선

동일 테스트 조건에서 Android 조회 성공률을 72%에서 100%로 개선하고 응답 시간 중앙값을 67.3ms에서 41.8ms로 단축했습니다. iOS는 캐시 우선 구조를 현재 위치 우선 구조로 바꿔 좌표의 최신성을 높였습니다.

기존 위치 라이브러리에서 timeout이 반복되어 주소 입력 흐름이 중단됐습니다. timeout과 maximumAge를 늘리는 초기 대응은 대기 시간과 캐시 반환 가능성만 높일 뿐 근본적인 해결이 아니었습니다.

  • 라이브러리 내부의 캐시 우선 조회와 위치 업데이트 방식을 확인하고 앱에 필요한 단발성 조회와의 차이를 분석했습니다.
  • Kotlin과 Swift로 Native Module을 작성하고 React Native에서 동일한 인터페이스로 사용할 수 있도록 연결했습니다.
  • 요청 시점마다 현재 위치를 단발성으로 조회해 좌표의 최신성을 높이고, 불필요한 지속 추적을 피했습니다.
  • 정해진 시간 안에 응답하지 않을 때만 마지막 위치를 fallback으로 사용했습니다.
  • 권한 거부, 위치 서비스 비활성화와 timeout을 JavaScript에서 구분할 수 있도록 오류 타입을 정리했습니다.
02
서버 시각 기준으로 호출 상태 일관성 확보

사용자 기기 설정과 무관하게 호출 상태를 서버 시각에 가깝게 판단하도록 바꾸고, 화면마다 달랐던 시간 계산 기준을 하나로 통일했습니다.

호출 만료와 기사 제안 제한 시간은 서버 상태와 일치해야 하지만 기존 구현은 사용자가 바꿀 수 있는 기기 시간을 기준으로 계산했습니다. 기기 시계가 실제 시간과 다르면 유효한 호출을 만료 처리하거나 끝난 제안을 남겨둘 수 있었습니다.

  • 버전 조회 요청 전후 시각으로 왕복 시간의 절반을 추정하고 서버 Timestamp와의 offset을 계산했습니다.
  • 계산된 offset을 전역 상태에 저장하고 호출 만료와 기사 제안 유효 시간이 같은 보정 함수를 사용하도록 변경했습니다.
  • 네트워크 왕복 시간이 완전히 대칭이라는 보장은 없으므로 절대 시각 동기화가 아닌 클라이언트 판단 오차를 줄이는 보정값으로 범위를 제한했습니다.
03
Push 수신과 알림 표시의 책임을 분리

앱 상태마다 달라지는 Push 처리 경로를 Firebase Messaging 수신과 Notifee 표시 단계로 나눠 추적할 수 있게 했습니다. 알림 이후 상태 갱신에서 발생할 수 있는 중복 목록 요청도 함께 차단했습니다.

기존 알림 라이브러리의 Native 설정과 권한 처리가 여러 위치에 흩어져 있어 앱 상태별 수신 경로를 추적하기 어려웠습니다. 메시지 수신과 사용자에게 알림을 표시하는 책임도 명확히 나뉘지 않았습니다.

  • react-native-push-notification을 Notifee로 전환하고 Firebase Messaging과 알림 표시의 역할을 분리했습니다.
  • Foreground, Background와 종료 상태를 각각 나눠 메시지 수신, 로컬 알림 표시와 알림 클릭 이후 이동 경로를 검증했습니다.
  • 기존 라이브러리의 Android 설정과 더 이상 필요하지 않은 미디어 접근 권한을 제거해 두 알림 체계가 공존하지 않도록 정리했습니다.
  • 알림에 의해 화면이 갱신될 때 FlatList 페이지네이션 요청이 중복되지 않도록 요청 중 상태와 다음 페이지 조건을 함께 확인했습니다.
04

사용 기술

React NativeTypeScriptKotlinSwiftNative ModuleMapsNotifeeAxios
02
모빌리티 기사용 앱기능 추가 및 개선 / 운영 안정화

KOKKOK Move를 통해 들어온 승객의 호출에 요금을 제안하고 운행을 진행하는 기사용 앱입니다. 호출 확인부터 위치 공유와 정산까지 실제 운행에 필요한 흐름을 지원합니다.

01

담당 범위

승객 호출 수신부터 운행 완료까지의 기능을 개발하고, 기능 개선과 안정화를 담당했습니다.

02

서비스 주요 기능

  • 승객 호출 수신 및 요금 제안
  • 배차 수락 및 운행 상태 관리
  • 승객 출발지 및 목적지 안내, 기사 위치 공유
  • 배정 차량 정보 및 배터리 QR 교체
  • 운행 내역 및 정산 정보
03

핵심 기여

01
FCM Token과 차량 정보의 상태 동기화

알림 수신을 일회성 이벤트 처리로 끝내지 않고 서버 Token 등록 결과, 인증 상태와 배정 차량 정보가 같은 흐름에서 갱신되도록 수정했습니다.

FCM Token 갱신 완료 여부와 차량 변경 알림의 결과가 전역 상태에 반영되지 않아 서버 등록 상태, 앱이 가진 차량 정보와 현재 화면이 서로 달라질 수 있었습니다.

  • updateFcmToken 이후 fcmUpdated 값이 누락되던 문제를 수정했습니다.
  • 차량 변경 FCM을 수신했을 때 차량 정보와 화면 상태가 갱신되는 흐름을 보완했습니다.
  • 로그인 dispatch 흐름과 인증 정보 갱신 action, reducer의 이름과 역할을 정리했습니다.
02
배터리 QR 중복 스캔 방지와 교체 흐름 개선

QR 오류, 교체 성공과 화면 복귀의 다음 행동을 명확히 구분하고 오류 안내 중 중복 스캔이 발생할 수 있는 흐름을 차단했습니다.

배터리 QR이 유효하지 않거나 교체가 완료된 상황을 Toast로만 안내해 사용자가 다음 행동을 명확히 알기 어려웠고, 오류 안내 중에도 카메라 스캔이 계속될 수 있었습니다.

  • QR 스캔 결과 검증과 배터리 조회 실패를 오류 모달 흐름으로 통합했습니다.
  • 오류 모달이 표시되는 동안 카메라를 비활성화해 같은 QR이 반복 처리되지 않도록 했습니다.
  • 배터리 교체 성공 시 완료 모달을 표시하고 확인 후 이전 화면으로 이동하도록 상태 전이를 정리했습니다.
  • 스캔 결과 배열의 첫 값이 없을 수 있는 상황과 화면 복귀 시 상태 초기화를 보완했습니다.
04

사용 기술

React NativeTypeScriptReduxFCMFirebase
03
통합 서비스 앱초기 구축 / 신규 기능 개발 / 운영

음식 배달과 마트 배송, 쇼핑, 상품권 선물, 음식점 예약 등 일상에 필요한 서비스를 하나로 연결한 라오스 O2O 앱입니다. 여러 서비스를 오가며 상품을 찾고 주문과 결제까지 하나의 앱에서 진행할 수 있습니다.

01

담당 범위

프로젝트 초기 구조와 개발 및 운영 환경을 구성하고, 여러 서비스의 주요 기능 개발부터 출시 이후 유지보수까지 담당했습니다.

02

서비스 주요 기능

  • 음식점 배달 주문 및 포장 주문
  • 마트 배송 주문 및 픽업 주문
  • 쇼핑 상품 탐색 및 배송 주문
  • 전화번호 기반 상품권 선물
  • 음식점 예약 및 웨이팅
03

핵심 기여

01
렌더링 병목을 분리해 화면 전환 시간을 33% 단축

동일한 Android 실기기와 조작 시나리오에서 평균 화면 전환 시간을 1.2초에서 0.8초로 단축했습니다. 눈으로 느껴지는 개선에 그치지 않고 원인별 실험과 반복 측정으로 변경 근거를 남겼습니다.

상품 이미지가 많은 화면에서 스크롤과 화면 전환이 함께 느려졌습니다. 이미지 캐싱과 목록 렌더링 범위 조정으로 스크롤은 개선됐지만 화면 전환 지연은 남아 있어 두 문제의 원인을 분리해 확인했습니다.

  • 카테고리 변경 때마다 이미지 placeholder 상태가 바뀌며 발생하던 불필요한 렌더링을 제거하고 이미지 캐시와 목록 렌더링 범위를 조정했습니다.
  • 남은 지연을 화면 마운트, 이미지 디코딩, JavaScript 실행 부하와 Navigation 구조로 나누고 로그와 반복 조작으로 후보를 좁혔습니다.
  • JavaScript Stack과 Native Stack을 동일한 화면에서 비교한 뒤 화면 전환 책임을 Native로 옮겼습니다.
  • 전환 과정에서 기존 이탈 방지 로직을 usePreventRemove에 맞게 재작성하고 iOS 뒤로 가기와 커스텀 전환 동작을 별도로 검증했습니다.
02
결제 재시도를 서버가 식별할 수 있도록 요청 단위를 설계

중복 결제 방지를 클라이언트의 탭 제어에만 맡기지 않고 서버가 같은 거래를 판별할 수 있는 구조로 바꿨습니다. 네 개의 서로 다른 결제 흐름에도 같은 실패 처리 기준을 적용했습니다.

모바일 결제는 중복 탭이나 불안정한 네트워크에서의 재시도 때문에 같은 요청이 다시 전송될 수 있습니다. 버튼 비활성화만으로는 화면 생명주기와 재시도 로직, 서버의 처리 상태까지 통제할 수 없어 서버와 공유하는 요청 식별자가 필요했습니다.

  • 결제 화면 진입 시 거래 단위를 식별하는 UUID를 생성하고 Food, Mart, e-Gift와 IB Cool 결제 요청의 Idempotency-Key로 전달했습니다.
  • 한 거래 안의 재시도에는 같은 키를 유지하고 새로운 거래가 시작될 때만 키가 바뀌도록 생명주기를 화면 상태와 맞췄습니다.
  • 중복 처리 중인 요청과 같은 키에 다른 요청값이 들어온 경우를 별도 오류로 분류해 사용자의 다음 행동을 구분했습니다.
  • 동시에 여러 오류가 발생해도 공통 오류 화면과 결제 모달이 겹치지 않도록 표시 우선순위를 정리했습니다.
03
연락처 선택 기능을 iOS와 Android에서 직접 구현

플랫폼별 Native 구현은 분리하되 React Native 화면에서는 하나의 인터페이스로 호출하도록 만들었습니다. 권한 거부, 선택 취소와 화면 종료도 구분해 처리할 수 있도록 했습니다.

e-Gift 수신자를 연락처에서 선택해야 했지만 iOS와 Android의 권한, 화면 호출 방식과 반환 데이터가 달랐습니다. React Native 화면에서 플랫폼별 차이를 각각 처리하지 않도록 호출 방식과 반환 형식을 통일할 필요가 있었습니다.

  • iOS는 ContactsUI와 CNContactPickerViewController, Android는 ContactsContract와 ActivityResultLauncher로 연락처 선택 화면을 구현했습니다.
  • New Architecture의 Codegen Spec을 계약으로 두고 두 플랫폼의 결과를 같은 타입과 Promise 인터페이스로 노출했습니다.
  • 동시에 선택 화면을 두 번 열지 못하도록 진행 중인 요청을 관리하고 선택 취소, 화면 종료, 권한 거부를 서로 다른 실패로 반환했습니다.
  • 전화번호 정규화와 검증은 JavaScript 경계에서 처리해 플랫폼별 반환 형식 차이를 서비스 로직에서 제거했습니다.
04
환경 설정과 버전 전환에서 플랫폼 간 불일치를 줄임

환경을 바꿀 때 수정 지점을 줄이고 JavaScript 타입, Android와 iOS 빌드 설정이 같은 기준을 사용하도록 정리했습니다. 버전 전환도 빌드 성공만 확인하지 않고 주요 흐름의 호환성 검증까지 포함해 진행했습니다.

환경값이 JavaScript, Android와 iOS 설정에 각각 존재하면 한쪽만 수정된 채 빌드될 수 있습니다. React Native와 주요 의존성 업그레이드까지 겹치면서 설정값과 Native 빌드의 호환성을 함께 관리해야 했습니다.

  • react-native-config를 기준으로 JavaScript와 Native가 같은 환경값을 읽도록 연결하고 Maps API Key를 개발과 운영 빌드에 맞게 분리했습니다.
  • .env와 아이콘 설정에서 TypeScript 타입을 생성해 선언과 실제 설정값이 어긋나는 문제를 개발 단계에서 확인하도록 했습니다.
  • React Native 0.86.3과 주요 의존성을 올리며 iOS 빌드 설정, 보안 취약 의존성과 기존 사용자 흐름의 회귀 여부를 함께 점검했습니다.
04

사용 기술

React NativeTypeScriptTanStack QueryReact NavigationReanimatedWebViewi18nextKotlinSwiftNative ModuleDatadog
04
신차 및 중고차 거래 서비스 앱초기 구축 / 신규 기능 개발 / 운영

신차와 중고차를 한곳에서 탐색하고 비교할 수 있는 차량 거래 서비스입니다. 원하는 조건으로 차량을 찾고 상세 정보와 판매자 정보를 확인한 뒤 문의하여 거래를 진행할 수 있습니다.

01

담당 범위

프로젝트 초기 구조와 개발 및 운영 환경을 구성하고, 주요 사용자 기능 개발부터 출시 이후 유지보수까지 담당했습니다.

02

서비스 주요 기능

  • 신차 및 중고차 검색과 상세 정보
  • 관심 차량 및 최근 본 차량
  • 중고차 비교
  • 차량 내외부 360도 이미지 뷰어
  • 판매 지점 연락 및 일대일 문의
03

핵심 기여

01
3D 렌더링을 플랫폼별 Native View로 분리

iOS와 Android의 3D 렌더링 기능을 활용하고 React Native는 이미지 URL과 속성 전달을 담당하도록 구성했습니다. 두 플랫폼 모두 같은 PanoramaView 인터페이스로 360도 이미지를 표시하고 조작할 수 있도록 했습니다.

차량 실내 이미지를 구면에 투영하고 터치로 회전시키는 360도 뷰어는 일반 React Native 이미지 컴포넌트만으로 구현하기 어려웠습니다. 플랫폼별 3D 렌더링 기능을 사용하면서 React Native 화면에서는 같은 방식으로 다룰 필요가 있었습니다.

  • iOS에서는 SceneKit의 SCNView 기반 View를 RCTViewManager로 노출했습니다.
  • Android에서는 GLSurfaceView와 OpenGL ES 기반 View를 SimpleViewManager로 등록했습니다.
  • JavaScript에서는 requireNativeComponent를 사용해 동일한 PanoramaView 인터페이스로 연결했습니다.
  • 이미지 URL과 속성은 React Native가 전달하고 렌더링과 터치 조작은 Native가 담당하도록 역할을 나눴습니다.
02
동시 401 요청을 하나의 Token 재발급 흐름으로 직렬화

동시에 발생한 인증 실패를 하나의 갱신 흐름으로 직렬화해 중복 발급과 요청마다 다른 Token을 사용하는 경쟁 상태를 막았습니다. 인증과 무관한 초기 데이터 요청은 병렬화해 불필요한 대기를 줄였습니다.

여러 API 요청이 동시에 401을 받으면 각 요청이 개별적으로 Token을 재발급하고 재시도하면서 인증 상태가 충돌할 수 있었습니다.

  • 첫 401 응답에서 하나의 Token 재발급만 실행하도록 흐름을 정리했습니다.
  • 재발급 중 발생한 다른 실패 요청은 대기시킨 뒤 새로운 Token으로 다시 요청하도록 구성했습니다.
  • 새 Token 발급 후 원래 요청을 먼저 복구하고 대기 중인 요청을 같은 Token으로 순차 재실행했습니다.
  • 재발급 실패 시 대기 중인 요청과 인증 상태가 함께 정리되도록 예외 흐름을 확인했습니다.
  • 서로 독립적인 메인 화면 API 요청은 병렬로 실행해 순차 호출로 인한 대기 구간을 줄였습니다.
03
신규 앱의 개발 및 배포 환경과 오류 추적 체계 구축

기능 개발부터 개발 및 운영 빌드, 오류 추적과 배포까지 필요한 환경을 구성했습니다. 출시 이후에는 플랫폼 정책과 의존성 변경에 맞춰 설정을 지속적으로 업데이트했습니다.

신규 앱을 출시하려면 화면 개발뿐 아니라 개발 및 운영 환경 분리, 오류 추적과 배포 경로도 함께 준비해야 했습니다.

  • 프로젝트 구조, 공통 스타일, Navigation과 환경 설정 기준을 만들고 차량 탐색, 비교와 문의 기능을 그 위에 구현했습니다.
  • Firebase, FCM, Sentry와 CodePush를 연결해 알림 수신, 오류 추적과 배포 이후 수정 경로를 함께 구성했습니다.
  • iOS Scheme별로 Firebase 설정이 선택되도록 개발과 운영 빌드를 분리했습니다.
  • React Native와 주요 의존성 업그레이드 이후 Firebase PrivacyInfo, Sentry ANR 수집과 기존 기능의 호환성을 점검했습니다.
04

사용 기술

React NativeTypeScriptReduxSceneKitOpenGL ESFirebaseFCMSentryCodePush
05
물류 운영 앱유지보수

KOKKOK Logistics

KOKKOK Logistics 앱 아이콘

화주와 운전자를 연결해 화물의 운송 과정을 관리하는 물류 서비스입니다. 실시간 위치와 상하차 상태, 현장 기록을 바탕으로 배송 진행 상황을 확인할 수 있습니다.

01

담당 범위

유지보수를 맡아 버그 수정과 버전 업그레이드, Android 및 iOS 빌드와 배포를 담당했습니다.

02

서비스 주요 기능

  • 배정 운송 업무 목록
  • 실시간 위치 및 배송 진행 현황
  • 상하차 상태 관리
  • 현장 사진 및 서명 기록
03

사용 기술

React NativeTypeScriptNew ArchitectureHermesXcodeCocoaPodsTestFlight

Skills

개발과 운영에 활용한 기술

Mobile

React Native / TypeScript / React Navigation / Reanimated / React Native Maps / WebView

State and Data

TanStack Query / Redux Toolkit / Redux Persist / Axios / i18next

Native and Build

Kotlin / Swift / Native Module / Android Gradle / Xcode / CocoaPods

Operations

Firebase / FCM / Sentry / Datadog / Notifee / CodePush / TestFlight