Code Monkey home page Code Monkey logo

anestevez / soreh Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 139.16 MB

Soreh is a simple compose demo app based on modern Android application tech-stacks and CLEAN architecture. In Soreh app you can find superheroes and villains from different publishers and their statistics.

Kotlin 100.00%
caching-strategies clean-architecture compose-navigation end-to-end-testing error-handling hilt hilt-testing instrumentation-tests jetpack-compose material3-components

soreh's Introduction

Soreh

Soreh is a simple compose demo app based on modern Android application tech-stacks and CLEAN architecture.
In Soreh app you can find superheroes and villains from different publishers and their statistics.


             

             

Features

  • Four screens
    • Main - A carousel showing 10 random characters
    • Search - A screen to search by name, with filters and different sorting criteria (FlowRow and Material3 components: SearchBar, BottomSheetScaffold, FilterChip, RangeSlider, ExposedDropdownMenuBox, ExposedDropdownMenu, DropdownMenuItem)
    • Tops - The top 10 of the most complete characters of some of the most important publishers/universes
    • Favorites - A screen to save your favorite characters
  • Splash screen that remains until the worker completes the network caching
  • Single source of truth (Room)
  • Unidirectional Data Flow
  • Error handling (Result)
  • SnackbarHost - To show errors on the screen
  • Offline mode
  • User events in ItemUIState
  • Day/Night theme
  • Pager custom transitions
  • Pager indicator custom transitions
  • Dynamic background color - Based on the dominant colors of the character images.
  • Implicit intents - To view or share the complete info of a character
  • CLEAN Architecture - UI, Domain and Data layer (google way)
  • Multi-module project. One module per CLEAN Architecture layer
  • Firebase Analytics with CompositionLocalProvider
  • Firebase Crashlytics integrated with Timber
  • Baseline Profiles - By shipping a Baseline Profile in an app or library, Android Runtime (ART) can optimize specified code paths through Ahead-of-Time (AOT) compilation, providing performance enhancements for every new user and every app update.
  • Unit Tests
    • Repository
    • ViewModel
  • Integration tests with fake data sources.
  • Instrumentation Tests with Hilt
    • End-to-end for "Search" feature
    • Worker

Preview

Pager Transition, Dynamic Background Color & Implicit Intent



Pager & Pager Indicator Transition



Search with Filters & Sorting Criteria



Splash Screen & Carousel



Tech stack & Open-source libraries

  • Jetpack Compose - Android's modern toolkit for building native UI.
  • Firebase Analytics - Google Analytics for Firebase provides free, unlimited reporting on up to 500 distinct events. The SDK automatically captures certain key events and user properties, and you can define your own custom events to measure the things that uniquely matter to your business.
  • Firebase Crashlytics - Firebase Crashlytics, a real time crash reporting tool, helps you prioritize and fix your most pervasive app crashes based on the impact on real users.
  • Splash Screen - SplashScreen API lets apps launch with animation, including an into-app motion at launch, a splash screen showing your app icon, and a transition to your app itself.
  • ViewModel - State Holder. Responsible for the production of UI state, contains the necessary logic for that task.
  • Lifecycle - Lifecycle-aware components.
  • Navigation Compose - The Navigation component provides support for Jetpack Compose applications. You can navigate between composables while taking advantage of the Navigation component’s infrastructure and features.
  • WorkManager - The WorkManager API makes it easy to schedule deferrable, asynchronous tasks that must be run reliably.
  • Room - Database.
  • Kotlin Coroutines - A concurrency design pattern to simplify code that executes asynchronously.
  • Kotlin Flows - In coroutines, a flow is a type that can emit multiple values sequentially, as opposed to suspend functions that return only a single value. For example, you can use a flow to receive live updates from a database.
  • Dagger-Hilt - Dependency injection.
  • Coil - An image loading library for Android backed by Kotlin Coroutines.
  • Retrofit2 & Moshi - REST API consumption.
  • MockWebServer - A scriptable web server for testing HTTP clients.
  • Timber - A logger with a small, extensible API which provides utility on top of Android's normal Log class.
  • ComposeLoading - Loading spinners in Android Jetpack Compose.
  • Placeholder - A library which provides a modifier for display 'placeholder' UI while content is loading.
  • Compose Material Design 3 components - Modular and customizable Material Design UI components for Android.
  • Mockito - Mocking framework for unit tests.
  • Turbine - A small testing library for kotlinx.coroutines Flow.
  • Leakcanary - A memory leak detection library.

Architecture

CLEAN Architecture




MVVM Architecture & Repository Pattern




Network Caching




API

The SuperHero API exposes SuperHeroes and Villians data from all universes under a single REST API.
Soreh uses the SuperHero API. Get your API_KEY SuperHeroAPI and paste it to the gradle.properties file to try the app.

soreh's People

Contributors

anestevez avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.