Files
hotdeal_alarm/README.md
2026-03-04 01:32:28 +09:00

127 lines
3.2 KiB
Markdown

# 핫딜 알람 (HotDeal Alarm)
Android 핫딜 모니터링 앱 - 뽐뿌, 클리앙, 루리웹, 쿨엔조이의 핫딜을 실시간으로 수집하고 키워드 알림을 제공합니다.
## 지원 사이트
| 사이트 | 게시판 | 색상 |
|--------|--------|------|
| **뽐뿌** | 뽐뿌게시판, 해외뽐뿌, 알리뽐뿌, 재태크포럼 | 핑크 |
| **클리앙** | 사고팔고, 알뜰구매 | 초록 |
| **루리웹** | 핫딜/예판 유저, 핫딜/예판 업체 | 파랑 |
| **쿨엔조이** | 알뜰구매 | 주황 |
## 주요 기능
### 🔍 핫딜 수집
- 4개 사이트 동시 모니터링
- 각 사이트별 최대 20개씩 수집
- 사이트별 색상 구분 (뱃지)
- 게시판 표시 이름 (예: ppomppu8 → 알리뽐뿌)
### 🔔 알림 시스템
- 키워드 기반 필터링
- 키워드 매칭 시 즉시 알림
- 일반 핫딜도 알림 제공
- 알림 ON/OFF 설정 가능
### 🎨 UI/UX
- Material Design 3
- 사이트 필터 (전체/개별 사이트)
- 제목 검색 기능
- 다크 모드 지원
- 로딩 스켈레톤
- 애니메이션 효과
### ⚙️ 설정
- 사이트/게시판 ON/OFF
- 키워드 추가/삭제
- 폴링 주기 설정
- 알림 설정
## 기술 스택
| 분야 | 기술 |
|------|------|
| **언어** | Kotlin 1.9.22 |
| **UI** | Jetpack Compose |
| **아키텍처** | MVVM + Clean Architecture |
| **DI** | Hilt |
| **DB** | Room 2.6.1 |
| **백그라운드** | WorkManager 2.9.0 |
| **네트워크** | Jsoup 1.17.2 |
| **비동기** | Coroutines + Flow |
## 프로젝트 구조
```
com.hotdeal.alarm/
├── data/
│ ├── local/db/ # Room (Entity, DAO, Database)
│ ├── remote/scraper/ # 사이트별 스크래퍼
│ └── remote/interceptor/# OkHttp 인터셉터
├── domain/
│ └── model/ # HotDeal, SiteType, Keyword 등
├── presentation/
│ ├── main/ # 메인 화면, ViewModel
│ ├── deallist/ # 핫딜 목록, 필터
│ ├── settings/ # 설정 화면
│ └── components/ # DealItem, EmptyState 등
├── worker/ # HotDealPollingWorker
├── service/ # NotificationService
└── di/ # Hilt 모듈
```
## 빌드 방법
### 요구사항
- Android Studio Hedgehog+
- JDK 17
- Android SDK 35
### Debug APK
```bash
./gradlew assembleDebug
```
### Release APK
```bash
./gradlew assembleRelease
```
### 설치 (Windows ADB)
```bash
/mnt/c/Users/$USER/AppData/Local/Android/Sdk/platform-tools/adb.exe \
install app/build/outputs/apk/debug/app-debug.apk
```
## 안티 차단 (Anti-Bot)
- **요청 간격**: 2~4초 랜덤 대기
- **User-Agent 회전**: 5개 브라우저 랜덤 선택
- **Referer 헤더**: 각 사이트별 적절한 Referer 설정
- **독립적 실행**: 한 사이트 실패필도 나머지 정상 작동
## 권한
| 권한 | 용도 |
|------|------|
| `INTERNET` | 웹 스크래핑 |
| `POST_NOTIFICATIONS` | 알림 표시 (Android 13+) |
| `RECEIVE_BOOT_COMPLETED` | 부팅 시 자동 시작 |
| `FOREGROUND_SERVICE` | 백그라운드 작업 |
## 테스트
```bash
# Unit Test
./gradlew test
# UI Test
./gradlew connectedAndroidTest
```
## 라이선스
MIT License