Skip to content

AI 가 일기 내용을 한 줄로 요약해주고, 그 날의 감정 이모티콘을 추천해줍니다.

Notifications You must be signed in to change notification settings

JungWooGeon/Diary

Repository files navigation

💡 AI 일기장

AI를 사용하여 편리하고 똑똑하게 작성하는 감정 일기장 앱



🔥 Google Play

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

About

AI 가 일기 내용을 한 줄로 요약해주고, 그 날의 감정 이모티콘을 추천해줍니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages