
오하아사는 일본 방송사의 운세 데이터를 매일 자동 수집·번역해 사용자가 자신의 별자리 운세와 12개 별자리 전체 순위를 한눈에 확인할 수 있도록 만든 토스 미니앱입니다. React 19, Fastify, SQLite 기반으로 프론트엔드부터 백엔드, 배포까지 1인 개발했으며, Toss AIT와 TDS를 활용해 모바일 웹뷰 환경에 최적화된 UX를 설계했습니다. Playwright 크롤링, OpenAI 번역, Node-cron 스케줄러를 연결한 일배치 파이프라인과 캐시·폴백 구조를 함께 구성해 매일 최신 운세를 안정적으로 제공하고 있습니다.
2026.03. - 진행 중
개인 프로젝트
- • 접속 경로: 토스 앱 > 미니앱 > 오하아사
- • 깃허브 링크

운세 데이터 크롤링 및 번역 시스템 구현
- • 다중 사이트 크롤링 설계 및 구현
TV Asahi와 Asahi 신문에서 운세 데이터를 Playwright로 크롤링하고, 데이터를 병합하여 일관된 포맷으로 저장
- • 자동 번역 파이프라인 구축
OpenAI GPT를 활용해 일본어 운세 텍스트를 한국어로 번역하고, DB에 저장하여 실시간 운세 제공
- • 스케줄러 기반 자동화
Node-cron으로 매일 정기 크롤링 실행, 최신 데이터를 유지하며 수동 시드 API로 긴급 업데이트 지원
- • 데이터 정합성 및 에러 처리
크롤링 실패 시 재시도 로직과 데이터 검증으로 안정성 확보, SQLite 트랜잭션으로 데이터 무결성 유지
- • 다중 사이트 크롤링 설계 및 구현

Toss AIT 기반 웹 앱 최적화 및 배포
- • TOSS AIT 프레임워크 적용
모바일 웹뷰 환경에 최적화된 Toss의 웹 프레임워크로 앱 구조 구축, Granite 빌드 도구 사용
- • CORS 및 환경 설정
Fastify CORS 설정으로 웹뷰 호환성 확보, Railway 배포를 위한 환경 변수 및 Dockerfile 구성
- • UI 컴포넌트 및 페이지 구성
Toss TDS 컴포넌트를 활용한 반응형 UI 구현, 별자리 선택/결과/랭킹/상세 페이지 라우팅
- • 운세 데이터 구조화 및 API 설계
랭킹, 메시지, 행운 아이템/색상, 운세 점수(금전/연애/직장/건강)를 포함한 타입 정의 및 Fastify 라우트 구축
- • TOSS AIT 프레임워크 적용