AI 기반 농담 생성 & 음성 재생 Android 앱
Jetpack Compose + MVI + Firebase Functions + OpenAI + ElevenLabs
2명 - 앱 개발 1명 , 디자인 1명
농담몬은 OpenAI API를 이용해 농담을 생성하고,
ElevenLabs TTS API를 통해 생성된 농담을 음성으로 재생할 수 있는 Android 앱입니다.
UI는 Jetpack Compose 기반으로 구현했으며,
아키텍처는 MVI 패턴을 기반으로 설계했습니다.
또한 API 호출은 App → Firebase Functions → OpenAI/ElevenLabs 구조로 구성해
보안 및 안정성을 강화했습니다.
- AI 농담 생성 (OpenAI API)
- 생성된 농담을 음성으로 재생 (ElevenLabs API)
- 닉네임 변경 , 캐릭터 선택 기능
- 즐겨찾기 / 최근 농담 저장 (Room)
- 클립보드 복사, 스낵바, 애니메이션 제공
- Jetpack Compose 기반 최신 UI 구조 적용
- Kotlin
- Jetpack Compose
- Material3
- MVI 아키텍처
- Retrofit, OkHttp
- Firebase Functions (Serverless API Gateway)
- OpenAI API (Text Generation)
- ElevenLabs API (TTS)
- Room
- Data Stroe , Shared Preference
- Coroutine + Flow (State Flow , Shared Flow)
- Hilt DI
- Repository Pattern
- Firebase Crashlytics
- Firebase Analytics
presentation (Compose UI, Intent, State)
└── viewmodel (MVI)
data
└── repository
└── source (remote/local)
- 모든 화면은 단일 상태(State)로 구성
- Intent → Reducer → State 업데이트 구조
- Preview 기반 빠른 UI 빌드
- Firebase Functions를 사용해서
- 앱에서 직접 OpenAI/ElevenLabs 호출 X
- → Token 보호 + 네트워크 안정성 확보
- 최근 생성된 농담 저장
- key 기반 중복 방지 로직 적용
프로젝트는 **포괄적인 단위 테스트(Unit Test)**를 포함하고 있습니다.
- 총 테스트 파일: 8개
- 총 테스트 케이스: 약 80개
- 커버리지: Repository 100%, ViewModel ~90%
# 전체 테스트 실행
./gradlew test
# Debug 빌드 테스트
./gradlew testDebugUnitTestRepository Tests (3개)
- LikeRepositoryImplTest: 즐겨찾기 Repository (8개 테스트)
- HomeRepositoryImplTest: 홈 Repository (7개 테스트)
- RecentJokeRepositoryImplTest: 최근 농담 Repository (9개 테스트)
ViewModel Tests (5개)
- HomeViewModelTest: 홈 화면 MVI 로직 (9개 테스트)
- LikeViewModelTest: 즐겨찾기 화면 로직 (12개 테스트)
- RecentJokeViewModelTest: 최근 농담 화면 로직 (11개 테스트)
- SearchViewModelTest: 검색 화면 로직 (15개 테스트)
- MyPageViewModelTest: 마이페이지 로직 (8개 테스트)
- JUnit4, Mockito-Kotlin
- Kotlinx Coroutines Test
- Turbine (Flow Testing)
- AndroidX Core Testing
- 위젯 기능 추가 예정
https://play.google.com/store/apps/details?id=com.joke.mon
나진석
Android Developer
email : na0736@gmail.com / github : https://github.com/najin1027





