한국어 우선 사주 서비스 V1 모노레포입니다.
웹(Next.js) 중심으로 입력 -> 미리보기 -> 페이월 -> 모의결제 -> 잠금해제 리포트 흐름을 제공하고, Expo(iOS) 앱에서 동일 여정을 최소 구현합니다.
apps/web: Next.js App Router 웹 앱apps/mobile: Expo React Native 앱 (iPhone-ready)packages/api: Fastify API (모의결제/리포트 포함)packages/shared: 웹/모바일/API 공통 타입
- 한국어 중심, 전문가/사실형 톤, 확률 기반 문장
- 신뢰 UI: 과장 표현 지양, 면책/법적 고지 분리
- 공유 문구: Instagram/Kakao 스타일 복사 기능
- API 클라이언트 계층 + 로딩/에러/재시도 상태
- 분석 이벤트 추상화 (console + optional
window.posthog)
# Node 20+ 권장
node -v
# pnpm 설치 (없다면)
npm i -g pnpm
pnpm install
cp .env.example .envpnpm dev:api- 기본 주소:
http://localhost:3001 - 엔드포인트:
GET /healthPOST /fortune/mockPOST /report/previewPOST /checkout/createPOST /checkout/confirmGET /report/:orderId
pnpm dev:web- 기본 주소:
http://localhost:3000 - 주요 페이지:
/랜딩(요금제/FAQ/신뢰)/free-fortune입력/result무료 미리보기 + 공유/paywall결제 시뮬레이션/report/[orderId]잠금해제 리포트/terms,/privacy,/disclaimer
pnpm dev:mobile- Expo DevTools에서 iOS/Android/Web 선택 가능
- API URL은
EXPO_PUBLIC_API_URL환경변수 사용
# Xcode 설치 + Simulator 실행 상태 필요
pnpm --filter @saju/mobile ios- 또는
pnpm dev:mobile실행 후 터미널에서i키 입력 - iOS 시뮬레이터에서 동일 여정:
- 입력 -> 미리보기 -> 페이월 -> 잠금해제 리포트
.env.example 참고:
NEXT_PUBLIC_API_URL=http://localhost:3001EXPO_PUBLIC_API_URL=http://localhost:3001
- 결제는 모의결제로만 동작 (실제 PG 연동 없음)
- 주문/리포트 저장소는 API 프로세스 메모리(Map) 기반
- 서버 재시작 시 주문/리포트 데이터 초기화
- 인증/회원/실제 영수증 발급 미구현
- 코드 레벨 구현 완료:
- 웹/모바일 사용자 여정
- API 신규 엔드포인트
- 공통 타입 및 응답 계약
- 법적 페이지/신뢰 카피 반영
pnpm미설치 환경으로 실제 실행/타입체크 미검증- 시도 결과:
pnpm: command not found
- 시도 결과:
- 미검증 항목:
- Next.js 런타임 화면 동작
- Fastify 런타임 호출
- Expo iOS 시뮬레이터 실기동
- 카피는 "사주는 빅데이터" 포지셔닝을 반영하되 과도한 확정 표현을 피함
- 의료/법률/투자 관련 의사결정 단독 근거 사용 금지 고지 포함