
May 12, 2026
DailyBrain
저장소: octxxiii/DailyBrain
DailyBrain - 매일 뇌 훈련 퀴즈 앱
📱 프로젝트 개요
DailyBrain는 사용자가 매일 10문제씩 퀴즈를 풀어 뇌를 훈련시킬 수 있는 완전 오프라인 Android 앱입니다. 광고 시청을 통해 추가 문제를 더 풀 수 있으며, 리더보드와 결과 공유 기능으로 경쟁과 바이럴 확산을 지원합니다.
주요 기능
- 🎯 매일 새로운 퀴즈 10문제 제공
- ⏰ 30초 타임 어택: 문제당 30초 제한 시간으로 긴장감 있는 경험
- ✅ 즉각적인 피드백: 정답/오답 확인 및 상세 해설 제공
- 📊 상세 통계: 정답률, 연속 출석, 총 게임 수 추적
- 🎁 보너스 퀴즈: 광고 시청으로 추가 5문제 제공 (무제한 반복 가능)
- 🏆 로컬 리더보드: 주간/월간 순위로 경쟁하며 동기 부여
- 📤 결과 공유: 아름다운 점수 이미지를 생성하여 소셜 미디어 공유
- 🎯 데일리 챌린지: 매일 3개의 특별 챌린지로 보상 획득
- 🔔 푸시 알림: 데일리 퀴즈 리마인더로 놓치지 않게 알림
- 🔥 연속 출석 추적: 매일 플레이하여 Streak 유지
- 🏅 성취 시스템: 다양한 성취 배지 획득
- 🌙 다크 모드 지원: 눈이 편안한 다크 테마
- 📱 완전 오프라인: 인터넷 없이도 언제 어디서나 플레이 가능
🛠 기술 스택
- 언어: Kotlin 1.9.22
- UI: Jetpack Compose 1.6+
- 아키텍처: MVVM + Clean Architecture
- DI: Hilt (Dagger)
- 데이터베이스: Room 2.7
- 백그라운드 작업: WorkManager 2.9
- 네트워크: OkHttp 5.0
- 광고: Google Mobile Ads SDK 23.x
- 분석: Firebase Analytics + Remote Config
- 최소 SDK: 24 (Android 7.0)
- Target SDK: 35 (Android 15)
📁 프로젝트 구조
DailyBrain/
├── app/ # Android 앱 소스 코드
│ ├── data/ # 데이터 모델, DB, Repository
│ ├── domain/ # 비즈니스 로직 (UseCase)
│ ├── ui/ # UI 컴포넌트 및 화면
│ └── di/ # 의존성 주입
├── docs/ # 프로젝트 문서
│ ├── release/ # 출시 관련 문서
│ ├── setup/ # 설정 및 개발 가이드
│ ├── screenshots/ # 스크린샷 관련 문서
│ ├── admob/ # AdMob 설정 문서
│ └── play-console/ # Google Play Console 가이드
├── scripts/ # 자동화 스크립트
│ └── screenshots/ # 스크린샷 촬영 스크립트
├── screenshots/ # 앱 스크린샷 이미지
├── logs/ # 앱 로그 파일
└── README.md # 프로젝트 개요
📚 문서 디렉토리
- 출시 준비:
docs/release/ - Google Play Console 설정:
docs/play-console/(Step 1부터 시작) - 스크린샷 가이드:
docs/screenshots/ - AdMob 설정:
docs/admob/ - 개발 가이드:
docs/setup/
자세한 내용은 각 디렉토리의 README.md를 참조하세요.
🚀 시작하기
1. 프로젝트 클론
git clone https://github.com/yourusername/DailyBrain.git
cd DailyBrain
2. Firebase 설정 (선택사항)
참고: 현재 버전은 완전 오프라인 작동하며 Firebase는 선택사항입니다.
Firebase를 사용하려면:
- Firebase Console에서 새 프로젝트 생성
- Android 앱 추가 (패키지명:
com.dailybrain3.app)google-services.json파일 다운로드app/디렉토리에 파일 복사
3. AdMob 설정
- AdMob Console에서 앱 등록
- 광고 단위 생성:
- 배너 광고
- 전면 광고
- 보상형 전면 광고
app/src/main/AndroidManifest.xml에 AdMob 앱 ID 설정:
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-4947118780414885~9066800170"/>
AdSystem.kt에 광고 단위 ID 설정
4. 퀴즈 데이터 설정
퀴즈 데이터는 앱 내부 assets 폴더에 저장되어 완전 오프라인으로 작동합니다:
app/src/main/assets/quizzes.json파일에 퀴즈 데이터 저장- JSON 형식은 기존 샘플 데이터 참고
- 필요시
QuizRepository.kt에서 데이터 로딩 로직 수정
5. 빌드 및 실행
./gradlew assembleDebug
# 또는 Android Studio에서 Run 버튼 클릭
📢 광고 정책
광고 배치 규칙
| 위치 | 광고 형식 | 표시 시점 | 빈도 제한 |
|---|---|---|---|
| 퀴즈 화면 하단 | 배너 | 항상 표시 | 화면당 1개 |
| 10문제 완료 후 | 전면 광고 | 결과 화면 진입 시 | 세션당 1회 |
| 추가 문제 | 보상형 전면 | 사용자 클릭 시 | 무제한 (문제가 있는 한) |
광고 정책 준수사항
- ✅ 사용자 액션 이후에만 광고 표시
- ❌ 광고 클릭 강요 금지
- ✅ 명확한 광고 표시
- ✅ 앱 실행 후 5분간 광고 없음
- ❌ 반복적인 경로 금지
- ❌ 과도한 광고 빈도 금지
🧪 테스트
광고 테스트
개발 중에는 테스트 광고 ID가 설정되어 있습니다:
- 테스트 기기 등록하여 실제 광고 테스트
- Firebase Test Lab에서 다양한 기기 테스트
오프라인 테스트
- 한 번 실행하여 퀴즈 로드 확인
- 비행기 모드 활성화
- 다시 실행하여 캐시된 퀴즈 확인
⚙️ 환경 설정
필요 요구사항
- Android Studio Hedgehog 이상
- JDK 11 이상
- Android SDK 35
권한
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
📊 분석 이벤트
주요 사용자 액션 추적:
quiz_start: 퀴즈 시작quiz_complete: 퀴즈 완료ad_reward_earned: 보상 광고 시청 완료extra_play_clicked: 추가 문제 버튼 클릭share_result: 결과 공유leaderboard_viewed: 리더보드 조회challenge_completed: 데일리 챌린지 완료achievement_unlocked: 성취 배지 획득
🎯 최신 업데이트 (v1.0.2)
Phase 1 기능 추가
- ✨ 결과 공유 기능: 점수를 이미지로 생성하여 소셜 미디어 공유
- 🏆 로컬 리더보드: 주간/월간 순위로 경쟁하며 동기 부여
- 🔔 푸시 알림: WorkManager 기반 데일리 퀴즈 리마인더
- 🎯 데일리 챌린지: 매일 3개의 특별 챌린지로 보상 획득
ASO 최적화
- 📱 앱 이름 최적화: "DailyBrain - 매일 뇌 훈련 퀴즈"
- 🔍 키워드 최적화: "퀴즈", "두뇌 훈련", "상식 퀴즈", "데일리 퀴즈" 등
- 📝 앱 설명 개선: 핵심 기능 강조 및 사용자 가치 명확화
⚠️ 주의사항
- 광고 ID 변경: 프로덕션 배포 시 반드시 실제 광고 ID로 변경
- API 키 보안: Firebase 설정 파일은 공개 저장소에 커밋하지 않음
- 퀴즈 데이터: 앱 내부 assets에 저장된 퀴즈 데이터 관리
- 정책 준수: Google Play 정책 및 AdMob 정책 준수
- WorkManager: 푸시 알림을 위해 WorkManager 초기화 필요 (DailyBrainApplication에서 처리)
📄 라이선스
이 프로젝트는 MIT 라이선스에 따라 배포됩니다.
🤝 기여하기
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
📧 문의
프로젝트 관련 문의사항은 Issues 섹션을 이용해주세요.