Giter Site home page Giter Site logo

kaaveh / composenews Goto Github PK

View Code? Open in Web Editor NEW
276.0 6.0 46.0 21.16 MB

A playground about best practices, using updated libraries and solutions in the Android world!

License: Apache License 2.0

Kotlin 99.07% Ruby 0.22% Shell 0.71%
android architecture jetpack-compose best-practices hacktoberfest

composenews's Introduction

ComposeNews

This repo is a playground about best practices, using updated libraries and solutions in the Android world!

Check the apk from here

⚙️ Architecture

Architecture diagram

The main architecture of code based on MVI + CLEAN architecture. The division criteria is a hybrid strategy based on Feature + Layer by module. For the detail of architecture, please read this article.

🚦 Navigation

For the detail of navigation implementations, please read this article.

📱 Previewing

For the detail of handling preview of composable functions in this code-base, please read this article.

🛠 Technologies

  • Jetpack Compose
  • CLEAN architecture
  • MVI architectural pattern
  • Coroutine Flow
  • SQLDelight database
  • Dagger Hilt
  • Navigation
  • Ktor client
  • Work manager
  • Unit test
  • Support large screens
  • Monochromatic app icon
  • Version catalog & Convention Plugin (For the detail, please read this article)
  • CI
  • Git Hooks
  • GitHub Actions
  • Static Analysis(Kotlinter, Detekt) (For the detail, please read this article)

We are porting the project to KMP. Here's the steps:

  • GSON → Kotlinx Serialization
  • ROOM → SQLDelight
  • Retrofit → Ktor
  • JUnit → Kotest
  • Dagger-Hilt → Koin
  • Jetpack Compose → Compose Multiplatform

📸 Screenshots

Light theme

Dark theme

Dynamic theme

Large screen support (Foldable, Tablet, and Desktop)

Additional Resources

  • Git Hooks - Learn about Git hooks used in this project for code formatting and analysis.
  • GitHub Actions - Explore the GitHub Actions workflows used to validate the code.
  • Static Analysis - Discover how static analysis tools like Detekt and Ktlint are used in this project for code quality assurance.

🤝🏻 Contribute

Any PRs are very welcome! 😍 You can fix a bug, add a feature, optimize performance and even propose a new cool approach in code-base architecture. Feel free and make a PR! 😌

We use static analysis tools like Detekt and Ktlint in this project. Please either set up Git Hooks on your project or run Static Analysis before creating PR.

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.