Skip to content

seoys/PinPick

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PinPick

md/design.md 기반으로 생성된 PinPick 초기 구현입니다.

구조

  • backend/: Node.js + TypeScript + Express + MongoDB + Redis
  • flutter_app/: Flutter + Riverpod + go_router 클라이언트
  • md/design.md: 원본 설계 문서

백엔드

주요 기능

  • MongoDB 컬렉션
    • users: 이메일, 보유 카드(my_cards, 최대 3개)
    • cards: 카드 마스터 + 비정형 혜택 텍스트
  • Redis 키
    • user:{user_id}:strategy:{YYYY-MM}
    • TTL: 40일
  • API
    • GET /api/strategy/monthly?userId=<id>
    • GET /api/cards?company=...&keyword=...
    • POST /api/cards
    • GET /api/users/:userId/cards
    • POST /api/users/:userId/cards/:cardId
    • DELETE /api/users/:userId/cards/:cardId
  • 카드 추가/삭제 시 해당 월 전략 캐시 무효화(DEL) 처리

실행

cd backend
cp .env.example .env
npm install
npm run dev

Flutter 앱

주요 화면

  • SearchCardScreen: 카드사 선택 + 카드명 검색 + 수동 입력 필드
  • CardDetailScreen: 카드 혜택 확인 + 로그인 분기 + 내 카드 등록
  • MainDashboardScreen: 등록 카드 가로 리스트 + 월간 전략 위젯
  • LoginScreen: 데모 로그인

실행

cd flutter_app
flutter pub get
flutter run --dart-define=API_BASE_URL=http://localhost:4000

환경 변수

백엔드 .env 예시:

PORT=4000
MONGODB_URI=mongodb://localhost:27017/pinpick
REDIS_URI=redis://localhost:6379
AI_PROVIDER_BASE_URL=https://api.openai.com/v1
AI_PROVIDER_API_KEY=
AI_PROVIDER_MODEL=gpt-4o-mini

AI_PROVIDER_API_KEY가 비어 있으면 백엔드에서 규칙 기반 fallback 전략 문구를 생성합니다.

테스트

설계서 검증 항목을 반영한 단위 테스트가 포함되어 있습니다.

cd backend
npm test

About

핀셋으로 혜택만 'Pick' 한다는 의미와 카드를 'Pick' 한다는 중의적 표현입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors