de808cfbcf553a944174d15d14619c78aead4528
핫딜 알람 (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
./gradlew assembleDebug
Release APK
./gradlew assembleRelease
설치 (Windows ADB)
/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 |
백그라운드 작업 |
테스트
# Unit Test
./gradlew test
# UI Test
./gradlew connectedAndroidTest
라이선스
MIT License
Description