개요
알바 시장에서 구직자와 사업주 간 매칭 경험은 오랫동안 비효율적인 게시판 검색에 의존해왔다. AlbaNow는 이 문제를 위치 기반 실시간 매칭으로 해결한다. 구직자는 현재 위치를 기준으로 반경 내 알바 공고를 카카오맵 위에서 직관적으로 탐색하고, 사장님은 모바일에서 바로 공고를 등록하고 지원자를 관리한다.
기술적으로는 React Native 0.63 기반 단일 코드베이스로 Android와 iOS를 동시 지원하며, 카카오·구글·네이버 OAuth 로그인을 단일 인증 체계로 통합했다. Node.js/Express 메인 API 서버와 PHP 결제 서버를 분리하여 결제 장애가 핵심 기능에 영향을 미치지 않도록 설계했다.
알바생/사장님 역할 분리 탭 네비게이터, 출퇴근 관리, FCM 푸시 알림, 쿠폰·바우처 결제까지 실제 서비스 수준의 완성도를 갖춘 프로젝트다.
주요 기능
위치 기반 공고 탐색
react-native-geolocation-service로 실시간 GPS 위치를 획득하고, 서버에서 Haversine 공식으로 반경 내 공고를 필터링한다. 카카오맵 커스텀 네이티브 모듈로 주변 공고를 지도 위 마커로 시각화하여 거리감을 직관적으로 제공한다.
소셜 로그인 통합 인증
카카오·구글·네이버 OAuth 플로우를 JWT 기반 단일 인증 체계로 통합했다. 각 플랫폼의 SDK를 커스텀 React Native 네이티브 모듈로 직접 구현하여 Android 네이티브 브릿지와 연동한다.
나이스 본인인증 연동
나이스 본인인증 C 바이너리(CPClient_64bit)를 Node.js child_process로 실행하고 암·복호화를 처리한다. 알바 플랫폼의 신뢰성을 위한 필수 검증 단계다.
알바 공고 전체 관리 플로우
공고 등록부터 지원 접수, 합격/불합격 통보, 출퇴근 확인(attendance)까지 채용 전 과정을 앱 내에서 완결한다. Sequelize ORM으로 40개 이상의 MySQL 테이블 관계를 모델링했다.
FCM 푸시 알림 및 결제
Firebase Cloud Messaging으로 지원 결과, 출퇴근 요청 등 실시간 이벤트를 알린다. 쿠폰·바우처 결제는 PHP 결제 서버를 별도로 분리하여 운영한다.
기술적 도전
커스텀 네이티브 모듈 직접 구현
도전: 카카오 로그인, 카카오맵, 네이버 로그인은 공개 React Native 라이브러리가 없거나 요구사항과 맞지 않았다.
해결: Android Java와 iOS Objective-C 네이티브 코드를 직접 작성하고 Client/modules/ 하위에 로컬 패키지로 관리했다. Android 브릿지(ReactContextBaseJavaModule)와 iOS 브릿지(RCT_EXPORT_MODULE)를 각각 구현하여 JavaScript에서 네이티브 SDK를 직접 호출한다.
다중 OAuth와 JWT 단일 통합
도전: 카카오·구글·네이버 각각의 OAuth 응답 형식이 다르고, 자체 회원가입과도 통합해야 했다.
해결: 각 OAuth 인증 완료 후 서버에서 자체 JWT를 발급하는 통합 레이어를 구성했다. Server/AlbaNowServer/middleware/auth.js에서 JWT 검증을 단일화하여 클라이언트는 소셜 로그인 방식에 무관하게 동일한 API를 호출한다.
나이스 C 바이너리 Node.js 연동
도전: 나이스 본인인증 SDK가 C 바이너리 형태로만 제공되어 Node.js에서 직접 호출할 수 없었다.
해결: child_process.exec으로 CPClient_64bit 바이너리를 실행하고 stdout으로 암·복호화 결과를 수신하는 래퍼 레이어를 구현했다.
아키텍처
Client-Server (REST API) + 별도 PHP 결제 서버 구조다. 모노레포 내에 세 가지 독립적 실행 단위를 분리했다.
albanow/
├── Client/ # React Native 앱 (Android/iOS)
│ ├── src/general_user/ # 알바생 탭 (home/map/management/mypage)
│ ├── src/corporate_user/ # 사장님 탭 (home/map/management/mypage)
│ ├── src/auth/ # 로그인·회원가입 플로우
│ └── modules/ # 커스텀 네이티브 모듈
│ ├── react-native-albapung-kakao-login/
│ ├── react-native-albapung-kakao-map/
│ └── react-native-naver-login/
├── Server/
│ ├── AlbaNowServer/ # Node.js Express 메인 API
│ │ ├── api/ # 라우터 (auth/jobSearch/attendance 등)
│ │ ├── models/ # Sequelize ORM (40+ 테이블)
│ │ └── middleware/auth.js # JWT 인증 미들웨어
│ └── AlbaNowPaymentServer/ # PHP 결제 서버
└── db/ # MySQL 스키마 SQL