Reindeers Delivery - Carrier Mobile App
React Native (Expo) 기반 배송 관리 및 추적 모바일 애플리케이션
📋 목차
프로젝트 개요
Reindeers Delivery는 배송 기사(Carrier)가 배송 관리 및 실시간 위치 추적을 할 수 있는 모바일 애플리케이션입니다.
개발 기간
- 개발 시작일: 2025-10-25
- 개발 종료일: 2025-10-27
핵심 목표
- ✅ 예외 처리 없는 단일 코드베이스 (웹/모바일/에뮬레이터 구분 없음)
- ✅ 실시간 위치 추적 (5-10분 간격)
- ✅ 백그라운드에서도 작동 (앱 최소화 시)
- ✅ 수동 새로고침 방식 (서버 과부하 방지)
앱 정보
- 앱 이름: Delivery
- Bundle ID: com.reindeers.delivery
- Expo SDK: 54.0.20
- React Native: 0.81.5
주요 기능
🚚 배송 관리
- 3단계 워크플로우:
- Pending: 배송 대기 중
- Delivery: 배송사 인계 (Vendor에서 픽업 완료)
- Handover: 최종 인도 (Buyer에게 배송 완료)
- 탭 기반 배송 목록 (각 상태별 카운트 표시)
- 상세 배송 정보 (픽업/배송 주소, 화물 정보)
- Pull-to-refresh 수동 새로고침
📦 화물 추적
- 상세 상품 정보 (상품명, SKU 코드, 수량, 무게)
- 주문당 다중 아이템 지원
- 총 중량 및 수량 요약
📍 위치 및 내비게이션
- 실시간 GPS 추적 (5분 간격)
- 백그라운드 위치 추적 (앱 최소화 시에도 작동)
- Google Maps, Kakao Navi, T map 연동
- 픽업/배송 위치 마커 표시
- API 서버로 위치 전송 (
/logistics/carrier-employee-gps)
✍️ 전자 서명
- 2단계 서명 프로세스:
- Pickup (픽업 시):
- Carrier (배송 기사)
- Vendor (판매자)
- Delivery (배송 시):
- Carrier (배송 기사)
- Vendor (판매자)
- Pickup (픽업 시):
- 서명 이미지를 base64로 저장
- 서버 업로드 후 PDF 생성
📄 문서 관리
- 3가지 문서 타입:
- PO (Purchase Order): 구매 주문서
- IN (Invoice): 송장
- DO (Delivery Order): 배송 주문서
- 외부 브라우저/앱에서 PDF 보기
- 문서 서명 상태 추적
📸 사진 촬영
- 배송 증빙용 다중 사진 촬영
- 갤러리 및 카메라 통합
- 사진 미리보기 및 삭제
- 서버 업로드
🔐 인증
- 이메일/비밀번호 로그인
- JWT 토큰 기반 인증
- 토큰 만료 시 자동 재시도
🔄 동기화 및 캐싱
- 배송 목록: 수동 새로고침만 지원 (서버 과부하 방지)
- 위치 추적: 자동 전송 (5분 간격)
- 오프라인 지원: 로컬 캐싱 (AsyncStorage)
- 동기화 큐: 네트워크 재연결 시 자동 재시도
기술 스택
Core Framework
React Native 0.81.5: Cross-platform mobile app framework
- New Architecture 활성화 (
newArchEnabled: true) - Hermes JavaScript engine 사용
- iOS 14.0+ / Android 6.0+ (API 23+) 지원
- New Architecture 활성화 (
Expo SDK 54.0.20: React Native 개발 플랫폼
- Managed workflow (자동 네이티브 빌드 관리)
- Development Build 필수 (Expo Go 미지원)
- EAS Build를 통한 프로덕션 빌드
TypeScript 5.9.2: 정적 타입 시스템
- Strict mode 활성화 (타입 안정성 강화)
- 모든 코드에 타입 정의 적용
React 19.1.0: UI 렌더링 라이브러리
- Context API 기반 상태 관리 (AuthContext)
- Hooks 패턴 (useState, useEffect, useContext)
Navigation & Routing
@react-navigation/native 7.1.18: 화면 네비게이션 라이브러리
- Stack Navigation (화면 스택 관리)
- Route params를 통한 데이터 전달
- Deep linking 지원
@react-navigation/native-stack 7.5.1: Native Stack Navigator
- iOS/Android 네이티브 전환 애니메이션
- 메모리 효율성 향상
UI & Design System
@expo-google-fonts/inter: Inter 폰트 패밀리
- Regular (400), Medium (500), SemiBold (600), Bold (700)
- 전역 기본 폰트 설정 (Text, TextInput)
@expo/vector-icons 15.0.3: 아이콘 라이브러리
- Ionicons 사용 (iOS 디자인 가이드라인 준수)
- 1000+ 벡터 아이콘 제공
Design System:
- iOS Human Interface Guidelines (HIG) 기반
- Material Design 색상 팔레트 참고
- 일관된 spacing, typography, shadow 시스템
Maps & Location Tracking
react-native-maps 1.20.1: 지도 UI 컴포넌트
- Google Maps (Android) / Apple Maps (iOS)
- Marker, Polyline, Region 관리
- 실시간 트럭 위치 표시
expo-location 19.0.7: GPS 위치 추적
- Foreground/Background 위치 추적
- 5분 간격 자동 위치 전송
- 정확도: 5자리 소수점 (위도/경도)
expo-task-manager 14.0.8: 백그라운드 작업 관리
- 앱 최소화 시에도 위치 추적 유지
- Foreground Service (알림 표시)
- 중요: Expo Go 미지원, Development Build 필수
Camera & Media
expo-camera 17.0.8: 카메라 제어
- QR 코드 스캔 (배송 시작 시)
- 배송 증빙 사진 촬영
- 권한 관리 (iOS/Android)
expo-image-picker 17.0.8: 이미지 선택
- 카메라 촬영 / 갤러리 선택
- 다중 이미지 선택 지원
- 이미지 압축 (quality: 0.8)
react-native-view-shot 4.0.3: 화면 캡처
- 서명 이미지 추출 (Canvas → PNG)
- Base64 인코딩 지원
react-native-svg 15.14.0: SVG 렌더링
- 서명 캔버스 구현 (Path 드로잉)
- 벡터 그래픽 지원
Storage & Persistence
@react-native-async-storage/async-storage 2.2.0: 로컬 저장소
- 배송 목록 캐싱 (오프라인 지원)
- 동기화 큐 저장 (네트워크 재연결 시 재시도)
- Key-Value 기반 비동기 스토리지
expo-secure-store 15.0.7: 암호화 저장소
- JWT 액세스 토큰 / 리프레시 토큰 저장
- 사용자 인증 정보 (employee_id, name)
- iOS Keychain / Android Keystore 사용
Network & HTTP
axios 1.12.2: HTTP 클라이언트
- JWT 인터셉터 (자동 토큰 갱신)
- 요청/응답 로깅 (개발 모드)
- Timeout 설정 (15초)
- Base URL 환경 변수 관리
@react-native-community/netinfo 11.4.1: 네트워크 상태 모니터링
- 오프라인/온라인 감지
- 동기화 큐 트리거 (재연결 시)
- WiFi/Cellular 구분
Utilities & System
expo-keep-awake 15.0.7: 화면 절전 방지
- 배송 중 화면 자동 꺼짐 방지
- 앱 실행 시 자동 활성화
react-native-safe-area-context 5.6.1: 안전 영역 관리
- iPhone Notch/Dynamic Island 대응
- Android Navigation Bar 대응
expo-clipboard 8.0.7: 클립보드 접근
- 주소 복사 기능
expo-file-system 19.0.17: 파일 시스템 접근
- 이미지 캐싱 및 임시 파일 관리
Architecture & Services
Service Layer Pattern:
realtimeLocationService: 5분 간격 GPS 추적, 백그라운드 작업 관리syncQueueService: 오프라인 작업 큐, 자동 재시도 (30초 간격)routeCacheService: 배송 목록 캐싱, 7일 자동 정리
State Management:
- React Context API (AuthContext)
- 로컬 상태 관리 (useState)
- 전역 인증 상태 공유
API Integration:
- RESTful API
- JWT 기반 인증 (액세스/리프레시 토큰)
- Multipart/form-data (이미지 업로드)
Platform Support
- iOS: 14.0+ (Xcode 15+, CocoaPods 1.15+)
- Android: 6.0+ (API 23+, Android Studio 2024+)
- Node.js: 18.x+ (LTS)
- Build Tools:
- EAS Build (프로덕션)
- Development Build (개발/테스트)
- Expo Go 미지원 (네이티브 모듈 사용으로 인해)
Performance Optimization
- 이미지 최적화: 0.8 quality 압축
- 위치 정확도: 5자리 소수점 (불필요한 정밀도 제거)
- 수동 새로고침: 서버 과부하 방지
- 로컬 캐싱: 네트워크 요청 최소화
- 동기화 큐: 배치 처리 (재연결 시 일괄 전송)
프로젝트 구조
reindeers-delivery/
├── assets/ # 정적 에셋
│ └── images/
│ └── logo/
│ ├── applogo.png # 앱 아이콘 (splash-icon.png 복사본)
│ ├── header.png # 헤더 로고 (변경하지 않음)
│ └── loading.png # 스플래시/로딩 화면
├── src/
│ ├── components/ # 재사용 가능한 UI 컴포넌트
│ │ ├── AppHeader.tsx # 공통 헤더 (로고, 뒤로가기)
│ │ ├── ConfirmModal.tsx # 확인 모달
│ │ ├── SignatureCanvas.tsx # 서명 캔버스
│ │ ├── SignatureModal.tsx # 서명 모달
│ │ └── SkeletonLoader.tsx # 로딩 스켈레톤
│ ├── constants/ # 상수 정의
│ │ └── colors.ts # 색상, 타이포그래피, 그림자
│ ├── contexts/ # React Context
│ │ └── AuthContext.tsx # 인증 상태 관리
│ ├── mock/ # Mock 데이터
│ │ └── sampleData.ts # 개발용 샘플 데이터 (빈 배열)
│ ├── navigation/ # 네비게이션 설정
│ │ └── AppNavigator.tsx # 메인 네비게이터
│ ├── screens/ # 화면 컴포넌트
│ │ ├── DeliveryDetailScreen.tsx # 배송 상세 (서명, ETA 입력)
│ │ ├── DeliveryListScreen.tsx # 배송 목록 (탭)
│ │ ├── LoginScreen.tsx # 로그인
│ │ ├── MapScreen.tsx # 지도 화면
│ │ ├── PhotoCaptureScreen.tsx # 사진 촬영
│ │ └── QRScanScreen.tsx # QR 코드 스캔
│ ├── services/ # 서비스 레이어
│ │ ├── api.ts # API 클라이언트 (axios)
│ │ ├── realtimeLocationService.ts # 실시간 위치 추적
│ │ ├── routeCache.ts # 경로 캐싱
│ │ └── syncQueue.ts # 동기화 큐
│ ├── types/ # TypeScript 타입 정의
│ │ └── index.ts # 전역 타입
│ └── utils/ # 유틸리티 함수
│ └── secureStorage.ts # Secure Storage wrapper
├── App.tsx # 앱 진입점
├── index.ts # Expo 등록
├── app.json # Expo 설정
├── package.json # 의존성
├── tsconfig.json # TypeScript 설정
└── README.md # 이 파일
삭제된 파일 (사용하지 않음):
- assets/splash-icon.png # applogo.png로 복사 후 삭제
- assets/logo.png # 사용되지 않아 삭제
- assets/adaptive-icon.png # 사용되지 않아 삭제
설치 및 실행
사전 요구사항
- Node.js 18+
- npm 또는 yarn
- iOS: Xcode (macOS only)
- Android: Android Studio
설치
# 의존성 설치
npm install
# iOS Pod 설치 (macOS only)
cd ios && pod install && cd ..
개발 서버 실행
⚠️ 중요: Expo Go vs Development Build
Expo Go는 지원하지 않습니다!
이 앱은 다음 기능을 사용하므로 Development Build가 필수입니다:
- ✅ 백그라운드 위치 추적 (
expo-task-manager) - ✅ New Architecture (
newArchEnabled: true) - ✅ 네이티브 모듈 (
react-native-maps,react-native-svg)
옵션 1: Development Build (로컬) - 추천
# iOS
npx expo run:ios
# Android
npx expo run:android
# 개발 서버 시작
npx expo start --dev-client
옵션 2: EAS Build (클라우드)
# EAS CLI 설치
npm install -g eas-cli
eas login
# Development Build 생성
eas build --profile development --platform ios
eas build --profile development --platform android
# 빌드 완료 후 다운로드 및 설치
# 개발 서버 시작
npx expo start --dev-client
캐시 삭제 후 실행 (이미지 변경 시 필수)
# 모든 프로세스 종료
lsof -ti:8081 | xargs kill -9
pkill -9 -f "expo start"
pkill -9 -f "metro"
# 캐시 삭제
rm -rf .expo node_modules/.cache
# 재시작
npx expo start --clear
개발 환경
Mock Data 모드
현재 실제 API와 연동되어 있습니다 (USE_MOCK_DATA = false).
Mock 모드로 전환하려면:
// src/services/api.ts
const USE_MOCK_DATA = true; // false에서 true로 변경
테스트 로그인 (개발 모드 전용)
Email: 1111
Password:
API Base URL
// src/services/api.ts
const API_BASE_URL = 'https://app.reindeers.kr/api';
환경별 설정
- 개발:
__DEV__ === true - 프로덕션:
__DEV__ === false
API 연동
인증
모든 API 요청에는 자동으로 Authorization 헤더가 포함됩니다:
Authorization: Bearer <token>
주요 엔드포인트
1. 로그인
POST /auth/carrier/login
Body: { email: string, password: string }
Response: {
token: string,
profile: {
id: number,
email: string,
name: string,
avatar: string,
locale: string
}
}
2. 로그아웃
POST /auth/logout
Headers: { Authorization: Bearer <token> }
3. 배송 주문 목록
GET /logistics/carrier/delivery-orders
Query: { page?: number, per_page?: number }
Response: {
data: DeliveryOrder[],
meta: { total: number, ... }
}
4. 배송 주문 상세
GET /logistics/carrier/delivery-orders/:id
Response: DeliveryOrder
5. 이미지 업로드
POST /logistics/carrier/file-upload
Body: FormData {
file: Blob,
type: 'SIGNATURE' | 'PHOTO',
alt?: string
}
Response: {
imageId: string,
url: string
}
6. 서명 이미지 등록
POST /logistics/carrier/delivery-orders/:orderId/signatures
Body: {
imageIds: string[],
target: 'CARRIER' | 'VENDOR'
}
7. 사진 이미지 등록
POST /logistics/carrier/delivery-orders/:orderId/photos
Body: {
imageIds: string[]
}
8. 배송 완료
POST /logistics/carrier/delivery-orders/:orderId/complete
9. GPS 위치 전송
POST /logistics/carrier-employee-gps
Body: {
latitude: number, // 소수점 5자리
longitude: number // 소수점 5자리
}
타입 정의
// src/types/index.ts
export interface DeliveryOrder {
id: string;
orderNumber: string;
status: 'PENDING' | 'DELIVERY' | 'HANDOVER';
// 픽업 정보
pickupLocation: Location;
pickupDate: string;
pickupTime: string;
// 배송 정보
deliveryLocation: Location;
deliveryDate: string;
deliveryTime: string;
eta?: string; // 예상 도착 시간 (HH:mm 형식)
// 화물 정보
cargo: CargoItem[];
totalWeight: number;
totalQuantity: number;
// 문서
documents?: {
po?: Document;
invoice?: Document;
deliveryOrder?: Document;
};
// 서명
signatures?: {
carrier?: string; // image URL or base64
vendor?: string;
};
// 사진
photos?: string[]; // image URLs
}
export interface Location {
address: string;
detailAddress?: string;
lat: number;
lng: number;
contact: {
name: string;
phone: string;
};
}
export interface CargoItem {
id: string;
name: string;
sku: string;
quantity: number;
weight: number;
unit: string;
}
export interface Document {
id: string;
type: 'PO' | 'IN' | 'DO';
url: string;
signedAt?: string;
}
알려진 이슈 및 해결방법
1. Expo Go에서 앱이 크래시되거나 열렸다 닫혔다 반복
원인:
- Expo Go는 백그라운드 위치 추적(
expo-task-manager)을 지원하지 않음 - New Architecture(
newArchEnabled: true)를 지원하지 않음 - 네이티브 모듈(
react-native-maps,react-native-svg)이 제한적
해결방법: ✅ Development Build 사용 (필수)
npx expo run:ios # 또는
npx expo run:android
2. iOS Simulator에서 앱이 열리지 않음
증상:
Error: xcrun simctl openurl ... exited with non-zero code: 1
Couldn't communicate with a helper application.
원인:
- Simulator의 helper application 통신 오류
해결방법:
# 방법 1: Simulator 재시작
killall Simulator
open -a Simulator
# 방법 2: 다른 디바이스로 시도
npx expo run:ios --device
# 방법 3: 실제 기기 사용
3. CocoaPods UTF-8 Encoding 오류
증상:
WARNING: CocoaPods requires your terminal to be using UTF-8 encoding.
Unicode Normalization not appropriate for ASCII-8BIT
해결방법:
export LANG=en_US.UTF-8
cd ios && pod install
4. 이미지 캐시 문제 (변경된 이미지가 보이지 않음)
원인:
- Metro Bundler 캐시
- Expo Go 앱 캐시
- React Native 이미지 캐시
해결방법:
# 서버 측 캐시 삭제
lsof -ti:8081 | xargs kill -9
pkill -9 -f "expo"
rm -rf .expo node_modules/.cache
npx expo start --clear
# 디바이스(Expo Go) 캐시 삭제
# 1. 앱에서 프로젝트를 길게 눌러 삭제
# 2. QR 코드 재스캔
# 또는 Expo Go 앱 재설치
5. TypeScript 오류 (tsconfig.json)
증상:
Argument for '--module' option must be: 'none', 'commonjs', ...
원인:
- VSCode의 TypeScript 서버가 일시적으로 잘못된 검증 수행
해결방법:
# VSCode 재로드
Cmd + Shift + P → "Reload Window"
# 또는 TypeScript 서버 재시작
Cmd + Shift + P → "TypeScript: Restart TS Server"
6. react-native-svg 의존성 오류
증상:
Unable to resolve "react-native-svg" from "src/components/SignatureCanvas.tsx"
원인:
- 패키지가 삭제되었거나 설치되지 않음
해결방법:
npm install react-native-svg
cd ios && pod install
7. CameraView children 경고
증상:
WARN The <CameraView> component does not support children.
This may lead to inconsistent behaviour or crashes.
위치:
원인:
- CameraView 내부에 View 컴포넌트들이 children으로 있음 (공식적으로 지원되지 않음)
해결방법:
- 현재는 작동하므로 우선순위 낮음
- 필요시 카메라 오버레이를 CameraView 외부로 분리
8. 모달 디자인 불일치
해결됨:
- ✅ 모든 모달에
borderTopLeftRadius: 20,borderTopRightRadius: 20추가 - ✅ 모든 모달에
backgroundColor: Colors.white추가 - ✅ iOS/Android 플랫폼별 하단 패딩 적용 (
Platform.OS === 'ios' ? 34 : 20)
9. 삭제된 이미지 파일 참조
해결됨:
- ✅ splash-icon.png → applogo.png, logo.png, adaptive-icon.png로 복사 후 원본 삭제
- ✅ 사용되지 않는 이미지 삭제: logo.png, adaptive-icon.png
- ✅ 모든 이미지 참조 확인 완료
디자인 시스템
색상 팔레트
// src/constants/colors.ts
export const Colors = {
// Primary
primary: '#007AFF', // iOS Blue
primaryDark: '#0051D5',
primaryLight: '#5AC8FA',
// Secondary
secondary: '#5856D6', // iOS Purple
// Status Colors
success: '#34C759', // iOS Green
warning: '#FF9500', // iOS Orange
error: '#FF3B30', // iOS Red
info: '#5AC8FA', // iOS Light Blue
// Delivery States
pending: '#FF9500', // Orange (대기)
delivery: '#007AFF', // Blue (배송 중)
handover: '#34C759', // Green (완료)
// Background
background: '#F2F2F7', // iOS Light Gray
white: '#FFFFFF',
// Text
text: {
primary: '#000000',
secondary: '#3C3C43',
tertiary: '#8E8E93',
disabled: '#C7C7CC',
},
// Borders
border: '#C6C6C8',
separator: '#E5E5EA',
};
타이포그래피
export const Typography = {
// Large Title
largeTitle: 34,
// Titles
title: {
large: 22,
medium: 20,
small: 17,
},
// Body
body: {
large: 17,
medium: 15,
small: 13,
},
// Caption
caption: {
large: 13,
medium: 12,
small: 11,
},
// Button
button: {
large: 17,
medium: 15,
small: 13,
},
};
그림자
export const Shadows = {
small: {
shadowColor: '#000',
shadowOffset: { width: 0, height: 1 },
shadowOpacity: 0.18,
shadowRadius: 1.0,
elevation: 1,
},
medium: {
shadowColor: '#000',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.2,
shadowRadius: 4,
elevation: 3,
},
large: {
shadowColor: '#000',
shadowOffset: { width: 0, height: 4 },
shadowOpacity: 0.25,
shadowRadius: 8,
elevation: 5,
},
};
폰트
- Family: Inter (400 Regular, 500 Medium, 600 SemiBold, 700 Bold)
- Default: Inter_400Regular (모든 Text, TextInput에 자동 적용)
향후 작업
🔴 우선순위 높음
실시간 위치 추적 안정화
- 현재: 5분 간격 백그라운드 추적 구현 완료
- TODO: 배터리 최적화, 오프라인 대응
오프라인 지원 강화
- 현재: 동기화 큐 구현 완료
- TODO: 서명/사진 로컬 저장 후 재연결 시 자동 업로드
에러 핸들링 개선
- 현재: 기본 에러 처리만 구현
- TODO: 사용자 친화적 에러 메시지, 재시도 로직
🟡 우선순위 중간
알림 기능
- TODO: 새 배송 주문 푸시 알림
- TODO: 배송 상태 변경 알림
배송 히스토리
- TODO: 완료된 배송 내역 조회
- TODO: 통계 및 리포트
다국어 지원
- 현재: 한국어/영어 혼재
- TODO: i18n 라이브러리 도입
🟢 우선순위 낮음
UI/UX 개선
- TODO: 다크 모드 지원
- TODO: 애니메이션 추가
성능 최적화
- TODO: 이미지 레이지 로딩
- TODO: 리스트 가상화 (react-native-flash-list)
테스트
- TODO: Unit 테스트
- TODO: E2E 테스트
개발 가이드라인
Code Style
- TypeScript strict mode 활성화
- ESLint 규칙 준수
- Prettier 포맷팅
- 한글 주석 허용 (로직 설명)
Commit Convention
feat: 새로운 기능 추가
fix: 버그 수정
docs: 문서 수정
style: 코드 포맷팅 (기능 변경 없음)
refactor: 코드 리팩토링
test: 테스트 추가
chore: 빌드 설정, 패키지 업데이트 등
Branch Strategy
main: 프로덕션develop: 개발feature/*: 새 기능fix/*: 버그 수정
문제 해결 체크리스트
새로운 개발자가 프로젝트를 이어받을 때 확인할 사항:
✅ 환경 설정
- [ ] Node.js 18+ 설치 확인
- [ ] Expo CLI 설치 확인
- [ ] iOS: Xcode 설치 (macOS)
- [ ] Android: Android Studio 설치
- [ ]
npm install실행 - [ ]
cd ios && pod install실행 (iOS)
✅ 실행 확인
- [ ]
npx expo run:ios또는npx expo run:android실행 (Expo Go 사용 금지) - [ ] Development Build 정상 설치 확인
- [ ] 로그인 화면 표시 확인
- [ ] 배송 목록 로딩 확인
- [ ] 위치 권한 요청 확인
✅ 주요 기능 테스트
- [ ] 로그인/로그아웃
- [ ] 배송 목록 조회 (Pull-to-refresh)
- [ ] 배송 상세 조회
- [ ] 서명 기능 (Carrier, Vendor)
- [ ] 사진 촬영
- [ ] 지도 보기
- [ ] QR 스캔
- [ ] GPS 위치 전송 (콘솔 로그 확인)
✅ API 연동 확인
- [ ] API Base URL 설정 확인
- [ ] 토큰 인증 작동 확인
- [ ] 에러 응답 처리 확인
- [ ] 네트워크 오류 처리 확인
✅ 알려진 이슈 재현
- [ ] Expo Go에서 크래시 여부 확인 (예상: 크래시)
- [ ] Development Build에서 정상 작동 확인
- [ ] 백그라운드 위치 추적 작동 확인
- [ ] 이미지 캐시 문제 재현 (이미지 변경 후 캐시 삭제)
- Email: ed@reindeers.com
- Project: Reindeers Delivery
- Team: Reindeers co., ltd.
- API: https://api.reindeers.com (비공개)
라이선스
Proprietary - Reindeers Corporation. All rights reserved.
Comments
Post a Comment