Skip to content

Satellites demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack (Room, ViewModel) and Compose based on MVI architecture.

License

Notifications You must be signed in to change notification settings

iamkurtgoz/satellitesapp

Repository files navigation

Satellites

License API Build Status

🗡️ Satellites demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack (Room, ViewModel) and Compose based on MVI architecture.

Download

Go to the Releases to download the latest APK.

Tech stack & Open-source libraries

  • Minimum SDK level 24.
  • Kotlin based, utilizing Coroutines + Flow for asynchronous operations.
  • Jetpack Libraries:
    • Jetpack Compose: Android’s modern toolkit for declarative UI development.
    • Lifecycle: Observes Android lifecycles and manages UI states upon lifecycle changes.
    • ViewModel: Manages UI-related data and is lifecycle-aware, ensuring data survival through configuration changes.
    • Navigation: Facilitates screen navigation, complemented by Hilt Navigation Compose for dependency injection.
    • Room: Constructs a database with an SQLite abstraction layer for seamless database access.
    • Hilt: Facilitates dependency injection.
  • Architecture:
    • MVI Architecture (Model - View - Intent): The MVI (Model-View-Intent) architecture treats user interactions or events as "Intents," which then lead to a state change observed by the "View." This approach centralizes all application state in one place, allowing for a single source of truth. MVI is particularly beneficial for managing complex user interactions, as it promotes consistent and understandable flows, improves testability, and simplifies debugging.
  • Gson: Converts from json to object and from object to json.
  • Kotlin Serialization: Kotlin multiplatform / multi-format reflectionless serialization.
  • ksp: Kotlin Symbol Processing API for code generation and analysis.
  • Turbine: A small testing library for kotlinx.coroutines Flow.

Module Graph

%%{
  init: {
    'theme': 'base',
    'themeVariables': {"primaryTextColor":"#fff","primaryColor":"#5a4f7c","primaryBorderColor":"#5a4f7c","lineColor":"#f5a623","tertiaryColor":"#40375c","fontSize":"12px"}
  }
}%%

graph LR
  subgraph :core
    :core:navigation["navigation"]
    :core:dummy["dummy"]
    :core:local["local"]
    :core:common["common"]
    :core:common-ui["common-ui"]
    :core:designsystem["designsystem"]
    :core:resources["resources"]
  end
  subgraph :feature
    :feature:list["list"]
    :feature:detail["detail"]
  end
  :core:navigation --> :domain
  :core:dummy --> :data
  :core:local --> :data
  :feature:list --> :core:common
  :feature:list --> :core:common-ui
  :feature:list --> :core:navigation
  :feature:list --> :domain
  :feature:list --> :core:designsystem
  :feature:list --> :core:resources
  :feature:detail --> :core:common
  :feature:detail --> :core:common-ui
  :feature:detail --> :core:navigation
  :feature:detail --> :domain
  :feature:detail --> :core:designsystem
  :feature:detail --> :core:resources
  :core:resources --> :core:common
  :core:common-ui --> :core:designsystem
  :core:common-ui --> :domain
  :core:common-ui --> :core:common
  :core:common-ui --> :core:resources
  :app --> :data
  :app --> :domain
  :app --> :core:designsystem
  :app --> :core:common
  :app --> :core:common-ui
  :app --> :core:resources
  :app --> :core:navigation
  :app --> :core:local
  :app --> :core:dummy
  :app --> :feature:list
  :app --> :feature:detail
  :data --> :domain
  :data --> :core:common
  :data --> :core:resources
  :domain --> :core:common
  :core:designsystem --> :domain
Loading

Find this repository useful? ❤️

Support it by joining stargazers for this repository. ⭐
Also, follow me on GitHub for my next creations! 🤩

License

    Copyright 2024 Mehmet KURTGOZ

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

About

Satellites demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack (Room, ViewModel) and Compose based on MVI architecture.

Resources

License

Stars

Watchers

Forks