Skip to content

omarzer0/AZKeepIt

Repository files navigation

AZKeepIt

Jetpack Compose Note Keeping app

Preview

AZKeepItVideo1.mp4
AZKeepItVideo2.mp4
AZKeepItVideo3.mp4

Features:

  • Note:

    • Create notes and Save them locally
    • Add Title and Content
    • Select note color
    • Lock note with a password
    • Add Images to note
    • Delete Note
    • Add or Remove Note from Folder (Note has 0 or 1 Folder "One to one relation")
    • Save changes when the back button pressed
    • Doesn't save empty note
  • Folder:

    • Create Folders to group notes
    • Delete Folder
    • Rename Folder
    • Delete all folder notes
    • Add Multiple notes to Folder (Folder has 0 to many Notes "One-to-many relation")
  • Search:

    • Search Notes by either title or content

Tech stack & Open-source libraries

  • Minimum SDK level 21

  • Kotlin based, Coroutines together with Flow for asynchronous streams and one side viewModel communication.

  • Dagger Hilt for dependency injection.

  • DateTimeFormatter for parsing date-time objects.

  • Compose:

    • Jetpack Compose for the UI.
    • Compose Destination KSP library that hides the complex, non-type-safe and boilerplate code you would have to write otherwise.
    • Compose Pager Provides paging layouts for Jetpack Compose.
    • Accompanist: A group of libraries that aim to supplement Jetpack Compose with features that are commonly required by developers
    • Coil Compose: An image loading library for Android backed by Kotlin Coroutines for loading async images for compose.
    • System UI controller Provides easy-to-use utilities for updating the System UI bar colors within Jetpack Compose.
    • Extended Icons Provides a full set of Material icons to be used with Compose.
  • JetPack:

    • Lifecycle - Dispose of observing data when the lifecycle state changes.
    • ViewModel - UI-related data holder, lifecycle aware.
    • Room: Persistence library that provides an abstraction layer over SQLite database.
    • SaveStateHandler to handle process death and pass data between composables.
  • Architecture:

    • Clean Architecture divided into three layers (Data, Domain and UI).
    • MVI Architecture (Model-View-Intent).
    • Repository pattern.
    • Use ViewModels to handle Non-UI actions and Expose only one UI state for each screen to have single source of truth.
    • UI passes actions to ViewModels and observe on single UI state.

About

Jetpack Compose Note Keeping app

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages