Skip to content

Hi! DiaryMoodApp is an app to store your notes and track your mood.

Notifications You must be signed in to change notification settings

xdiach00/DiaryMoodApp

Repository files navigation

Diary Mood App

Go to Code Documentation
Download latest APK - v1.1.0-beta for debugging

App Description

Hi! DiaryMoodApp is an app to store your notes and track your mood.

Dark Theme Home Screen Light Theme Home Screen
Home Screen in Dark and Light modes

  • You can add note, choose your mood from a list by simply left/right swiping an emoji, set a custom date and time of current note by clicking on a calendar icon at the Top bar (and restore this date).
Dark Theme Write Screen Light Theme Write Screen Dark Theme Write Screen date selection
Write Screen in Dark and Light modes

  • Date filtering for your diaries (notes) is available!
Dark Theme Home Screen Filtered
Home Screen filtered by date in Dark mode

  • Using a side menu, you can change to statistics tab or easily erase all your diaries or log out!
Dark Theme Side menu Dark Theme Side menu
Side menu in Dark and Light modes

  • Statistics screen displays your tracked mood as a Line Chart. You can also filter statistics by date, in this case it will be displayed as a Column Chart.
Dark Theme Stats Light Theme Stats filtered
Statistics tab in Dark and Light modes

  • Settings tab allows you to change app theme mode, delete all added diaries and sign out.
Dark Theme Stats Light Theme Stats filtered
Statistics tab in Dark and Light modes

  • Each note is synchronised with cloud NoSQL MongoDB (not crypted 😖)
MongoDB collection
MongoDB stores an array of links to the Firebase for images

  • Images are uploaded to Firebase storage (not cryptedx2 😖)
Firebase images
Images are stored in the user's id package

  • Application allows users to simply log in using their Google account.
Dark Theme Authorization Screen Light Theme Authorization Screen
Authorization Screen in Dark and Light modes

Code Documentation

Go to App Description

Summary

The application is developed in the Kotlin language using the latest technology and recommendations by Google. The application is based on a multi-modular MVVM architecture according to SOLID principles using Koin (replaced Dagger Hilt in c4653c6) for dependency injection. The UI is implemented using Jetpack Compose and Material Design 3 design system. Kotlin Coroutines and Flows are used to work with asynchronous tasks.

Building

To build this app on your own PC, you need to create a file core/util/src/main/java/com/xdiach/util/PrivateConstants.kt with the following content:

object PrivateConstants {
    const val APP_ID = "<Mongo Atlas APP ID>"
    const val CLIENT_ID = "<OAuth Google Cloud Key>"
}

Create a project in MongoDB

Get OAuth Google Cloud key

Dependencies

Project uses the following libraries: