127 lines
3.2 KiB
Markdown
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
|