Skip to content

Weather Android App written in Jetpack Compose and Kotlin, the example of MVI architectural design pattern, clean code structure with clear separation of concerns

License

Notifications You must be signed in to change notification settings

natasam/ModernArchWeatherApp

Repository files navigation

ModernArchWeatherApp - Modern Architecture Android App with Kotlin & Jetpack Compose 🚀

  • Welcome to BrutalWeatherApp Android application, developed with Modern Android Architecture in mind, Kotlin, and the power of Jetpack Compose. Clean code structure with clear separation of concerns and unidirectional data flow. UI is inspired by the Neubrutalism Style.

This Project Is Built To Demonstrate Usage Of Google's Recommended Android Development Tools - (Coroutines, Hilt, Modern Architecture Components, Udf, Room, Retrofit, Material Components, Accompanist Lib, and version catalog.

The UI is done with simplicity, in the Neobrutalism style, as the focus and the emphasis are placed on robust and clean project architecture.

GitHub top language Static Badge GitHub

What is included:

  • Unidirectional Data Flow: Ensuring a consistent and predictable behavior. A robust pattern that simplifies user interactions and data updates.
  • Separated Concerns: Each layer has its distinct responsibility, promoting clarity and simplicity.
  • Single Source of Truth: All layers rely on one authoritative data source, eliminating inconsistencies.
  • Domain Layer: An optional layer that encapsulates all the business logic, making the app robust and efficient, making the app's core functions clear and concise.
  • Loose Coupling and DI: Used Dependency Injection pattern ensuring that components are independent yet interconnected, enhancing flexibility.

Api 📦

Technologies used 📚

  • Kotlin - Kotlin is an official programming language for Android development.
  • Jetpack Compose - Jetpack Compose is Android’s recommended modern toolkit for building native UI.

Libraries 📚

Architecture 🏗️

  • Modern, recommended by Google, App architecture with Unidirectional Data Flow.

  • Data, Domain, and UI Layer.

  • In Android, a repository is typically a producer of UI data that has the user interface (UI) as the consumer that ultimately displays the data. Other times, the UI layer is a producer of user input events and other layers of the hierarchy consume them. Layers in between the producer and consumer usually act as intermediaries that modify the stream of data to adjust it to the requirements of the following layer.

  • Learn more about the recommended Modern App Architecture .

Architecture Diagram


Crazy Design 🖼 - Focus is on the architecture but still...

Neubrutalism Style

  • Neobrutalism, often referred to as "Brutalist Web Design," is a design movement that has its roots in Brutalist architecture. The term "Brutalism" originates from the French word "brut," meaning "raw." In architecture,** Brutalism is characterized by raw, unadorned, and often monolithic concrete structures. ** Similarly, in UI/UX design, Neobrutalism emphasizes rawness, simplicity, and a certain kind of unpolished aesthetic.
  • Neubrutalism is more than just a design trend; it's a statement. It challenges the norms of what an app or website should look like and offers a fresh perspective.
  • Neubrutalism is "ugly" on purpose, but some may find it beautiful and bold.

Screens 🖼

Android App architecture Android App architecture Android App architecture
Forecast Screen Search city screen Error screen

Video 👀

Android App architecture Android App architecture


✍️ Contact


📝 License

MIT License

Copyright (c) 2023 Natasa Misic

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the "Software"), 
to deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included 
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Weather Android App written in Jetpack Compose and Kotlin, the example of MVI architectural design pattern, clean code structure with clear separation of concerns

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages