Skip to content

najin1027/JokeMon_Android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

농담몬 - 심심할 때 웃긴 AI 랜덤 유머·농담 생성기

AI 기반 농담 생성 & 음성 재생 Android 앱
Jetpack Compose + MVI + Firebase Functions + OpenAI + ElevenLabs

1024-500

참여 인원

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 구조 적용

기술 스택

Android / UI

  • Kotlin
  • Jetpack Compose
  • Material3
  • MVI 아키텍처

Data / Service

  • Retrofit, OkHttp
  • Firebase Functions (Serverless API Gateway)
  • OpenAI API (Text Generation)
  • ElevenLabs API (TTS)
  • Room
  • Data Stroe , Shared Preference

Architecture / State

  • Coroutine + Flow (State Flow , Shared Flow)
  • Hilt DI
  • Repository Pattern

ETC

  • Firebase Crashlytics
  • Firebase Analytics

🏗 아키텍처 구조

presentation (Compose UI, Intent, State)

└── viewmodel (MVI)

data

└── repository

└── source (remote/local)


주요 화면

joke_mon_screen_shot_1   joke_mon_screen_shot_2 joke_mon_screen_shot_3   joke_mon_screen_shot_4 joke_mon_screen_shot_5   joke_mon_screen_shot_6

개발 포인트

1) Jetpack Compose + MVI 아키텍처 적용

  • 모든 화면은 단일 상태(State)로 구성
  • Intent → Reducer → State 업데이트 구조
  • Preview 기반 빠른 UI 빌드

2) 서버리스 중계 구조

  • Firebase Functions를 사용해서
  • 앱에서 직접 OpenAI/ElevenLabs 호출 X
  • → Token 보호 + 네트워크 안정성 확보

3) Room 기반 히스토리/즐겨찾기 구현

  • 최근 생성된 농담 저장
  • key 기반 중복 방지 로직 적용

테스트

프로젝트는 **포괄적인 단위 테스트(Unit Test)**를 포함하고 있습니다.

테스트 통계

  • 총 테스트 파일: 8개
  • 총 테스트 케이스: 약 80개
  • 커버리지: Repository 100%, ViewModel ~90%

테스트 실행

# 전체 테스트 실행
./gradlew test

# Debug 빌드 테스트
./gradlew testDebugUnitTest

작성된 테스트

Repository 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages