junsobi

삼성화재 컨시어지

삼성화재의 두 사용자 앱과 어드민 시스템에 적용되는 웹·모바일 디자인 시스템과 배포 체계입니다.

Mon Jun 01 2026

Figma
React
React Native
TypeScript
Tailwind CSS
NativeWind
Storybook
AWS S3
CloudFront
임직원 앱과 주문 상태, 배달원 앱 화면을 함께 배치한 삼성화재 컨시어지 대표 이미지
커피와 도시락 주문, 전산소모품 신청, 택배 확인 기능이 있는 임직원 앱 홈 화면
주문 단계와 메뉴, 결제 금액을 확인하는 임직원 앱 주문 상태 화면
배달 상태별 업무와 담당 구역을 확인하는 배달원 앱 업무 목록 화면

프로젝트 요약

기간
2026.06–현재
소속과 역할
WALDLUST · Frontend developer, Design system engineer, Release engineer
담당 범위
Figma 토큰과 컴포넌트를 웹·React Native에 구현하고 두 앱의 네이티브 구성과 OTA·내부 배포 경로를 구축했습니다.
배경과 과제
웹과 모바일이 같은 디자인 언어를 쓰면서도 각 플랫폼의 렌더링 방식과 두 앱의 출시 실패 범위를 분리해야 했습니다.

설계와 구현

  • semantic token 이름과 공개 component variant 계약은 맞추되 웹과 모바일 renderer는 분리했습니다.
  • 두 사용자 앱은 독립된 iOS·Android 프로젝트와 출시 경로를 갖도록 구성했습니다.
  • 웹 번들과 네이티브 변경을 구분해 OTA와 내부 스토어 전달 경로를 나눴습니다.

적용 결과

  • 같은 의미 토큰과 공개 variant를 웹과 모바일에서 일관되게 사용할 수 있게 했습니다.
  • 두 앱이 각자의 네이티브 설정과 출시 주기를 유지하도록 실패 범위를 분리했습니다.
  • S3·CloudFront OTA와 내부 스토어 전달 경로를 구현하고 검증했습니다.

관련 링크

삼성화재 컨시어지에서는 Figma의 디자인 언어를 웹과 React Native 코드의 계약으로 옮겼습니다. 같은 의미 토큰과 공개 variant를 쓰되, DOM과 네이티브 뷰의 차이를 감추려고 한 renderer에 억지로 묶지는 않았습니다.

동시에 서로 다른 사용자군을 위한 App A와 App B의 iOS·Android 프로젝트를 분리했습니다. 공통 런타임, API, 디자인시스템과 실제로 함께 쓰는 기능만 package로 올리고, 각 앱의 설정과 출시 주기는 독립적으로 유지했습니다.

Figma를 코드 계약으로 옮기기

Figma semantic token을 웹의 Tailwind CSS와 모바일의 NativeWind에 각각 대응시켰습니다. token 이름과 component variant는 맞췄지만, 웹과 모바일 renderer는 따로 구현해 플랫폼별 접근성과 상호작용을 그대로 살렸습니다.

의미 토큰이 웹과 모바일 구현으로 연결되는 구조도

컴포넌트 상태는 웹 Storybook과 앱 안의 갤러리에서 확인했습니다. overlay는 controlled contract로 다루고, 웹에서는 keyboard·focus·prefers-reduced-motion을 함께 점검했습니다. 사례 화면에는 임직원 앱의 주문 흐름과 배달원 앱의 업무 목록을 담았습니다.

두 앱의 실패 범위 나누기

App A와 App B는 각각 네이티브 프로젝트와 출시 경로를 갖습니다. 공통 package의 변경이 두 앱에 미치는 범위를 먼저 확인하고, 앱별 설정이 섞이지 않도록 한 곳의 manifest를 Gradle·Xcode·runtime 설정의 기준으로 사용했습니다.

변경에 맞는 전달 경로

웹 번들은 S3·CloudFront 기반 OTA 경로로, 네이티브 변경은 iOS·Android 내부 스토어 경로로 전달하도록 구현했습니다. OTA는 변경할 수 없는 번들을 기준으로 release·disable·rollback 흐름을 두었고, 스토어 전달 전에는 빌드 결과와 signing 상태를 확인했습니다.

변경 종류에 따라 OTA와 내부 스토어 전달로 나뉘는 흐름도