AI를 사용하여 편리하고 똑똑하게 작성하는 감정 일기장 앱
https://play.google.com/store/apps/details?id=com.pass.diary
- android, android studio
- kotlin
- MVI, Clean Architecture, Hilt, Room, DataStore, Retrofit, Coroutine, Junit, MockK
- Google STT (SpeechRecognizer), Naver CLOVA Summary API, Google OAuth(Firebase Authentication), Google Drive API
- 일기 쓰기 / 수정
- 음성으로 내용 입력 (AI)
- 일기 내용 요약하여 제목으로 작성하기 (AI)
- 이모티콘(기분, 감정 등)
- 내용
- 이미지 (미구현)
- 일기 조회 (월별)
- 달력으로 보기
- 타임라인으로 보기
- 디자인 기능
- 일기장 테마 설정 (분홍, 검정 등) (미구현)
- 다크모드 설정 (미구현)
- 여러 폰트 설정
- 다양한 기능
- 감정 통계
- 일기장 잠금 기능 (미구현)
- 알림 기능 (미구현)
- 추가 사항
- 위젯 기능 (미구현)
- 한 주의 시작 요일 설정 (일요일 / 월요일) (미구현)
│── presentation
│ ├── ui
│ │ └── theme
│ │ ├── Color.kt
│ │ ├── Theme.kt
│ │ └── Type.kt
│ ├── state
│ │ ├── AddDiaryState.kt
│ │ ├── LoginState.kt
│ │ ├── MainState.kt
│ │ ├── SettingState.kt
│ │ ├── TimelineState.kt
│ │ └── WorkState.kt
│ ├── view
│ │ ├── activity
│ │ │ ├── MainActivity.kt
│ │ │ └── AddDiaryActivity.kt
│ │ ├── composable
│ │ │ └── ...
│ │ └── screen
│ │ ├── MainScreen.kt
│ │ ├── TimelineScreen.kt
│ │ ├── CalendarScreen.kt
│ │ ├── AddDiaryScreen.kt
│ │ ├── AnalysisScreen.kt
│ │ ├── SettingsScreen.kt
│ │ └── Constants.kt
│ ├── viewmodel
│ │ ├── AddDiaryViewModel.kt
│ │ ├── AnalysisViewModel.kt
│ │ ├── CalendarViewModel.kt
│ │ ├── SettingsViewModel.kt
│ │ ├── ThemeViewModel.kt
│ │ └── TimelineViewModel.kt
│ ├── intent
│ │ ├── AddDiaryIntent.kt
│ │ ├── AnalysisIntent.kt
│ │ ├── CalendarIntent.kt
│ │ ├── SettingsIntent.kt
│ │ └── TimelineIntent.kt
│ ├── di
│ │ └── AppModule.kt
│ └── DiaryApplication.kt
│
├── domain
│ ├── entity
│ │ └── Diary.kt
│ ├── repository
│ │ ├── diary
│ │ │ └── DiaryRepository.kt
│ │ ├── google
│ │ │ └── GoogleManagerRepository.kt
│ │ └── settings
│ │ └── SettingsRepository.kt
│ └── usecase
│ ├── diary
│ │ ├── AddDiaryUseCase.kt
│ │ ├── DeleteDiaryUseCase.kt
│ │ ├── GetAllDiariesUseCase.kt
│ │ ├── GetDiariesByMonthUseCase.kt
│ │ ├── SummaryDiaryUseCase.kt
│ │ └── UpdateDiaryUseCase.kt
│ ├── google
│ │ ├── BackupDiariesToGoogleDriveUseCase.kt
│ │ ├── isLoggedInUseCase.kt
│ │ ├── LogInForGoogleUseCase.kt
│ │ ├── LogOutForGoogleUseCase.kt
│ │ └── RestoreDiariesForGoogleDriveUseCase.kt
│ └── settings
│ └── font
│ ├── GetCurrentFontUseCase.kt
│ ├── GetCurrentTextSizeUseCase.kt
│ ├── UpdateCurrentFontUseCase.kt
│ └── UpdateCurrentTextSizeUseCase.kt
│
└── data
├── di
│ ├── DataBaseModule.kt
│ ├── NetworkModule.kt
│ └── RepositoryModule.kt
├── db
│ ├── diary
│ │ ├── DiaryDao.kt
│ │ └── DiaryDataBase.kt
│ └── entity
│ └── DiaryEntity.kt
├── mapper
│ └── DiaryMapper.kt
├── remote
│ ├── dto
│ │ ├── SummaryRequest.kt
│ │ └── SummaryResponse.kt
│ └── service
│ └── SummaryService.kt
└── repository
├── diary
│ └── DiaryRepositoryImpl.kt
├── google
│ └── GoogleManagerRepositoryImpl.kt
└── settings
└── SettingsRepositoryImpl.kt