# App Architecture

Published articles for App Architecture.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Heroku Eventing: A Router for All Your Events

DevFeed: [Heroku Eventing: A Router for All Your Events](<https://devfeed.tech/articles/heroku-eventing-a-router-for-all-your-events-26429.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/heroku-eventing-router-for-your-events/>)

Author: Kim Harrison

Published: 2025-03-04T15:01:00Z

Content type: release

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [Heroku](<https://devfeed.tech/topics/heroku.md>), [event driven](<https://devfeed.tech/topics/event-driven.md>), [Publish-subscribe pattern](<https://devfeed.tech/topics/pubsub.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [API](<https://devfeed.tech/topics/api.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [event-driven](<https://devfeed.tech/tags/event-driven.md>), [events](<https://devfeed.tech/tags/events.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [news](<https://devfeed.tech/tags/news.md>), [observability](<https://devfeed.tech/tags/observability.md>), [performance-optimization](<https://devfeed.tech/tags/performance-optimization.md>), [product-features](<https://devfeed.tech/tags/product-features.md>)

### AI overview

Heroku introduces Heroku Eventing, a pilot tool for managing, subscribing to, and publishing events across services. It provides a unified API, centralized event management, integrations with Heroku Kafka and Postgres, secure credential storage, and monitoring across connected sources.

### Source excerpt

Managing event-driven architecture can be challenging. For many organizations, this includes a diverse set of eventing services and buses, often across multiple organizations. Developers must manage authentication and pub/sub services across teams and applications. We're thrilled to introduce Heroku Eventing, a powerful tool designed to help teams manage events more efficiently and securely. This new [...] The post Heroku Eventing: A Router for All Your Events appeared first on Heroku.

## Mastering API Gateway Integration: Salesforce, Heroku, and MuleSoft Anypoint Flex Gateway

DevFeed: [Mastering API Gateway Integration: Salesforce, Heroku, and MuleSoft Anypoint Flex Gateway](<https://devfeed.tech/articles/mastering-api-gateway-integration-salesforce-heroku-and-mulesoft-anypoint-flex-gateway-26466.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/mastering-api-integration-salesforce-heroku-mulesoft-anypoint-flex-gateway/>)

Author: Julián Duque

Published: 2024-07-29T18:00:00Z

Content type: tutorial

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [gateway](<https://devfeed.tech/topics/gateway.md>), [Heroku](<https://devfeed.tech/topics/heroku.md>), [API](<https://devfeed.tech/topics/api.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Security](<https://devfeed.tech/topics/security.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>), [rate-limiting](<https://devfeed.tech/topics/rate-limiting.md>), [Latency](<https://devfeed.tech/topics/latency.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-gateway](<https://devfeed.tech/tags/api-gateway.md>), [api-security](<https://devfeed.tech/tags/api-security.md>), [apis](<https://devfeed.tech/tags/apis.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [integration](<https://devfeed.tech/tags/integration.md>), [integrations](<https://devfeed.tech/tags/integrations.md>), [latency](<https://devfeed.tech/tags/latency.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [rate-limiting](<https://devfeed.tech/tags/rate-limiting.md>), [salesforce](<https://devfeed.tech/tags/salesforce.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

A tutorial on deploying MuleSoft Anypoint Flex Gateway on Heroku to expose private APIs and microservices. It describes the gateway's API management, security, traffic management, rate limiting, and scalability capabilities, with possible integration with Salesforce.

### Source excerpt

In today's fast-paced digital world, companies are looking for ways to expose their APIs and microservices to the internet while enhancing their overall API security. MuleSoft Anypoint Flex Gateway is a powerful solution that solves this problem. Let's walk through deploying the Anypoint Flex Gateway on Heroku in a few straightforward steps. You'll learn how [...] The post Mastering API Gateway Integration: Salesforce, Heroku, and MuleSoft Anypoint Flex Gateway appeared first on Heroku.

## Evolving the Backend Storage for Platform Metrics

DevFeed: [Evolving the Backend Storage for Platform Metrics](<https://devfeed.tech/articles/evolving-the-backend-storage-for-platform-metrics-26401.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/evolving-backend-storage-for-platform-metrics/>)

Author: David Murray

Published: 2024-05-09T22:00:00Z

Content type: article

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [Heroku](<https://devfeed.tech/topics/heroku.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Time Series](<https://devfeed.tech/topics/time-series.md>), [Apache Cassandra](<https://devfeed.tech/topics/cassandra.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [stream-processing](<https://devfeed.tech/topics/stream-processing.md>), [autoscaling](<https://devfeed.tech/topics/autoscaling.md>)

Tags: [apache-kafka](<https://devfeed.tech/tags/apache-kafka.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [autoscaling](<https://devfeed.tech/tags/autoscaling.md>), [aws](<https://devfeed.tech/tags/aws.md>), [backend](<https://devfeed.tech/tags/backend.md>), [cassandra](<https://devfeed.tech/tags/cassandra.md>), [cloud-infrastructure](<https://devfeed.tech/tags/cloud-infrastructure.md>), [data-analytics](<https://devfeed.tech/tags/data-analytics.md>), [database](<https://devfeed.tech/tags/database.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [performance-optimization](<https://devfeed.tech/tags/performance-optimization.md>), [platform](<https://devfeed.tech/tags/platform.md>), [platform-updates](<https://devfeed.tech/tags/platform-updates.md>), [stream-processing](<https://devfeed.tech/tags/stream-processing.md>), [time-series](<https://devfeed.tech/tags/time-series.md>)

### AI overview

Heroku describes an infrastructure upgrade that migrated the storage backend for platform metrics. The article explains how MetaaS collects application observations, aggregates them into time-series statistics, and uses Kafka, stream-processing jobs, and Cassandra to support dashboard metrics, alerting, autoscaling, retention, and querying.

### Source excerpt

One of our most important goals at Heroku is to be boring. Don't get us wrong, we certainly hope that you're excited about the Heroku developer experience -- as heavy users of Heroku ourselves, we certainly are! But, even more so, we hope that you don't have to spend all that much time thinking about [...] The post Evolving the Backend Storage for Platform Metrics appeared first on Heroku.

## Improved Heroku App Performance with HTTP/2

DevFeed: [Improved Heroku App Performance with HTTP/2](<https://devfeed.tech/articles/improved-heroku-app-performance-with-http-2-26433.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/heroku-http2-public-beta/>)

Author: Ethan Limchayseng

Published: 2024-05-08T00:20:00Z

Content type: release

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [HTTP](<https://devfeed.tech/topics/http.md>), [Heroku](<https://devfeed.tech/topics/heroku.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Compression](<https://devfeed.tech/topics/compression.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [networking](<https://devfeed.tech/topics/networking.md>), [TLS (Transport Layer Security)](<https://devfeed.tech/topics/tls.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [cloud-infrastructure](<https://devfeed.tech/tags/cloud-infrastructure.md>), [compression](<https://devfeed.tech/tags/compression.md>), [dynos](<https://devfeed.tech/tags/dynos.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [http](<https://devfeed.tech/tags/http.md>), [latency](<https://devfeed.tech/tags/latency.md>), [networking](<https://devfeed.tech/tags/networking.md>), [news](<https://devfeed.tech/tags/news.md>), [performance-optimization](<https://devfeed.tech/tags/performance-optimization.md>), [platform](<https://devfeed.tech/tags/platform.md>), [private-spaces](<https://devfeed.tech/tags/private-spaces.md>), [release](<https://devfeed.tech/tags/release.md>), [tls](<https://devfeed.tech/tags/tls.md>)

### AI overview

Heroku announces public beta support for HTTP/2 on Common Runtime and Private Spaces. The release uses multiplexing and header compression to reduce latency and improve web application performance, while HTTP/2 terminates at the Heroku router and traffic is forwarded to apps over HTTP/1.1.

### Source excerpt

Introduction: We're excited to announce public beta support for HTTP/2 on both Heroku Common Runtime and Private Spaces. HTTP/2 support is one of the most requested and desired improvements for the Heroku platform. HTTP/2 is significantly faster than HTTP 1.1 by introducing features like multiplexing and header compression to reduce latency and therefore improve the [...] The post Improved Heroku App Performance with HTTP/2 appeared first on Heroku.

## Crash course on the Android UI layer | Part 1

DevFeed: [Crash course on the Android UI layer | Part 1](<https://devfeed.tech/articles/crash-course-on-the-android-ui-layer-part-1-22598.md>)

Original publisher: [Read original article](<https://medium.com/bumble-tech/crash-course-on-the-android-ui-layer-part-1-2094221a9be3?source=rss----6353b5325b1a---4>)

Author: Manuel Vivo

Published: 2023-12-13T17:03:40Z

Content type: tutorial

Language: en

Sources: [Bumble Tech](<https://devfeed.tech/sources/bumble-tech.md>)

Topics: [ui](<https://devfeed.tech/topics/ui.md>), [Android](<https://devfeed.tech/topics/android.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [state-management](<https://devfeed.tech/tags/state-management.md>), [ui](<https://devfeed.tech/tags/ui.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

Part 1 of a series explains the Android UI layer, UI state, and the roles of the UI, data, and optional domain layers. It introduces separation of concerns, state holders, unidirectional data flow, and related best practices.

### Source excerpt

Crash Course on the Android UI Layer | Part 1The UI and UI State This blog post series aims to summarise the Android Developer guidance on the UI layer. We'll explore all the entities involved in it, understand the role each part plays, and discuss best practices. By the end of this series, you will have a general understanding of what happens on the UI layer and how to best handle state and logic within it, the various APIs involved, and how to use them. Additionally, we'll provide decision trees to assist you when you're in doubt. This is part 1, where we're covering the UI and the UI state. Part 2 covers state holders and other UI layer-related topics such as where to hoist state and save state on Android. If you prefer to consume this content in video format, check out the talk I delivered at Droidcon London 2023: Peeling Back the Layers: Unmasking the UI-nknown! The UI layer in the grand scheme of things The UI layer isn't the only layer you can find in a typical app architecture. Alongside it, you can also find the data layer and sometimes, the domain layer. According to the Android Architecture documentation: The UI layer displays data on the screen. The data layer exposes application data and contains the vast majority of the business logic of the app. The domain layer is an optional layer that aims to 1) simplify and 2) reuse the potential business logic complexity of the UI layer. No less, no more. Note: The business logic is what gives value to your application. It's the implementation of product requirements that determines how your app fetches, stores, and modifies data.Architecture layers in a typical Android app: The UI, data, and domain layersEntities in the UI layer The UI layer consists of three distinct entities with clearly defined responsibilities. This distinction helps with separation of concerns, enhances testability, and promotes reusability. The UI, or UI elements, render data on the screen. The UI state describes the data to render on the

## Crash Course on the Android UI Layer | Part 1

DevFeed: [Crash Course on the Android UI Layer | Part 1](<https://devfeed.tech/articles/crash-course-on-the-android-ui-layer-part-1-35673.md>)

Original publisher: [Read original article](<https://manuelvivo.dev/crash-course-ui-layer-part-1>)

Author: Manuel Vivo

Published: 2023-12-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Manuel Vivo .dev](<https://devfeed.tech/sources/manuel-vivo-dev.md>)

Topics: [ui](<https://devfeed.tech/topics/ui.md>), [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [save](<https://devfeed.tech/tags/save.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This first part of a series explains Android's UI layer and UI state. It describes how the UI layer fits alongside the data and optional domain layers, and outlines the responsibilities of UI elements, UI state, and optional state holders.

### Source excerpt

Part 1 - The UI and UI State

## Heroku's Next Chapter

DevFeed: [Heroku's Next Chapter](<https://devfeed.tech/articles/heroku-s-next-chapter-26475.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/next-chapter/>)

Author: Bob Wise

Published: 2022-08-25T19:58:00Z

Content type: release

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [Heroku](<https://devfeed.tech/topics/heroku.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Buildpacks](<https://devfeed.tech/topics/buildpacks.md>), [Security](<https://devfeed.tech/topics/security.md>), [Availability](<https://devfeed.tech/topics/availability.md>), [OAuth](<https://devfeed.tech/topics/oauth.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [availability](<https://devfeed.tech/tags/availability.md>), [buildpacks](<https://devfeed.tech/tags/buildpacks.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [customers](<https://devfeed.tech/tags/customers.md>), [developer-experience](<https://devfeed.tech/tags/developer-experience.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [education](<https://devfeed.tech/tags/education.md>), [github](<https://devfeed.tech/tags/github.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [news](<https://devfeed.tech/tags/news.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [platform-updates](<https://devfeed.tech/tags/platform-updates.md>), [product-features](<https://devfeed.tech/tags/product-features.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

Heroku outlines its next chapter, emphasizing support for customers, a public product roadmap on GitHub, a greater focus on mission-critical use, and continued open-source contributions. The company also announces the end of free product plans and deletion of inactive accounts, alongside planned student and nonprofit support.

### Source excerpt

Back in May, I wrote about my enthusiasm to be part of the Heroku story, and I remain just as passionate today about helping write the next chapter. I've had many customer meetings over the past few months, and the theme is consistent -- you want to know where we are taking Heroku. We want [...] The post Heroku's Next Chapter appeared first on Heroku.

## Improving shared architecture for a Kotlin Multiplatform, Jetpack Compose and SwiftUI app

DevFeed: [Improving shared architecture for a Kotlin Multiplatform, Jetpack Compose and SwiftUI app](<https://devfeed.tech/articles/improving-shared-architecture-for-a-kotlin-multiplatform-jetpack-compose-and-swiftui-app-25566.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2022/improved-kmm-shared-app-arch/>)

Author: Marco Gomiero

Published: 2022-06-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Marco Gomiero](<https://devfeed.tech/sources/posts-on-marco-gomiero.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-jetpack](<https://devfeed.tech/tags/android-jetpack.md>), [app](<https://devfeed.tech/tags/app.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [article](<https://devfeed.tech/tags/article.md>), [compose](<https://devfeed.tech/tags/compose.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [flow](<https://devfeed.tech/tags/flow.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

This tutorial explains how to improve a shared application architecture for Kotlin Multiplatform, Jetpack Compose, and SwiftUI. It replaces duplicated suspendable and non-suspendable methods plus platform-specific callbacks with Kotlin and Swift wrapper code that allows Swift to consume Kotlin Flow, enabling a single UseCase method that returns a Flow.

### Source excerpt

A couple of years ago I started working on a pet project to manage personal finances, named MoneyFlow. This project soon became a personal playground for a Kotlin Multiplatform mobile app and in a previous article, I journaled all the steps that lead me to a satisfying (at least for that time) shared app architecture. Choosing the right architecture for a [new] Kotlin Multiplatform, Jetpack Compose and SwiftUI app

## VESIT: Building Apps For Android in Kotlin

DevFeed: [VESIT: Building Apps For Android in Kotlin](<https://devfeed.tech/articles/vesit-building-apps-for-android-in-kotlin-28391.md>)

Original publisher: [Read original article](<https://siddroid.com/post/talk-building-apps-for-android-in-kotlin-vesit-cmpn-siddhesh-patil/>)

Author: Siddhesh Patil

Published: 2020-08-07T19:41:44Z

Content type: article

Language: en

Sources: [Sid Patil - Android Engineer and Kotlin Advocate](<https://devfeed.tech/sources/sid-patil-android-engineer-and-kotlin-advocate.md>)

Topics: [LineageOS](<https://devfeed.tech/topics/lineageos.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [computer-science](<https://devfeed.tech/tags/computer-science.md>), [developers](<https://devfeed.tech/tags/developers.md>), [first-android-app-with-kotlin](<https://devfeed.tech/tags/first-android-app-with-kotlin.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to-build-apps-using-kotin-for-android](<https://devfeed.tech/tags/how-to-build-apps-using-kotin-for-android.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [siddhesh-patil-talks](<https://devfeed.tech/tags/siddhesh-patil-talks.md>), [talks-on-kotlin](<https://devfeed.tech/tags/talks-on-kotlin.md>), [tech-workshops-in-mumbai](<https://devfeed.tech/tags/tech-workshops-in-mumbai.md>), [ui](<https://devfeed.tech/tags/ui.md>), [vesit](<https://devfeed.tech/tags/vesit.md>), [vesit-cmpn](<https://devfeed.tech/tags/vesit-cmpn.md>), [workshop](<https://devfeed.tech/tags/workshop.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

A live Google Meet workshop at VESIT introduced computer engineering students to Android development with Kotlin. Participants used Android Studio to build a small app and learned about app architecture, views, data preparation, Gradle, Jetpack libraries, RecyclerViews, and debugging with logcat.

### Source excerpt

Continuing our two-day session on kickstarting your journey to become Android developers, budding computer engineering students learn to build their very first app for Android using Kotlin.

## Introduction to Dependency Injection with Dagger for Java and Android

DevFeed: [Introduction to Dependency Injection with Dagger for Java and Android](<https://devfeed.tech/articles/introduction-to-dagger-di-by-a-life-way-25731.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/introduction-to-dagger-di-by-a-life-way-d34f62540329/>)

Author: Shreyas Patil

Published: 2020-03-15T07:54:11Z

Content type: tutorial

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Dagger](<https://devfeed.tech/topics/dagger.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Android](<https://devfeed.tech/topics/android.md>), [Code](<https://devfeed.tech/topics/code.md>), [Java](<https://devfeed.tech/topics/java.md>), [Framework](<https://devfeed.tech/topics/framework.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [class](<https://devfeed.tech/tags/class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [component](<https://devfeed.tech/tags/component.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [dagger](<https://devfeed.tech/tags/dagger.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [di](<https://devfeed.tech/tags/di.md>), [getting-started](<https://devfeed.tech/tags/getting-started.md>), [java](<https://devfeed.tech/tags/java.md>), [learn](<https://devfeed.tech/tags/learn.md>), [object](<https://devfeed.tech/tags/object.md>), [others](<https://devfeed.tech/tags/others.md>), [parameter](<https://devfeed.tech/tags/parameter.md>)

### AI overview

This tutorial introduces Dependency Injection and Dagger, explaining how Dagger is a static, compile-time framework for Java and Android. It uses a life-needs analogy and a sequence of dependent classes to demonstrate constructor injection and dependency creation.

### Source excerpt

Demystifying Dependency Injection with Dagger. Learn DI concepts through real-life analogies and simplify your Android app architecture.

## Managing Massive View Controllers in iOS MVC Applications

DevFeed: [Managing Massive View Controllers in iOS MVC Applications](<https://devfeed.tech/articles/mvc-many-view-controllers-39511.md>)

Original publisher: [Read original article](<https://rambo.codes/posts/2020-02-20-mvc-with-sugar>)

Published: 2020-02-20T18:00:00Z

Content type: opinion

Language: en

Sources: [Rambo Codes](<https://devfeed.tech/sources/rambo-codes.md>)

Topics: [mvc](<https://devfeed.tech/topics/mvc.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [iOS development](<https://devfeed.tech/topics/ios-development.md>), [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [apple](<https://devfeed.tech/tags/apple.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [mvc](<https://devfeed.tech/tags/mvc.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

The article discusses problems that arise when iOS MVC applications develop massive view controllers, tightly coupled screens, and difficult-to-write unit tests. It considers how to split view controllers while supporting older iOS versions and UIKit alongside SwiftUI.

### Source excerpt

Gui Rambo writes about his coding and reverse engineering adventures.

## Encapsulating View State

DevFeed: [Encapsulating View State](<https://devfeed.tech/articles/encapsulating-view-state-30593.md>)

Original publisher: [Read original article](<https://ryanharter.com/blog/2019/07/encapsulating-view-state/>)

Published: 2019-07-19T16:00:00Z

Content type: tutorial

Language: en

Sources: [Blogs on Ryan Harter](<https://devfeed.tech/sources/blogs-on-ryan-harter.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [App](<https://devfeed.tech/topics/app.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [code](<https://devfeed.tech/tags/code.md>), [error](<https://devfeed.tech/tags/error.md>), [livedata](<https://devfeed.tech/tags/livedata.md>), [messages](<https://devfeed.tech/tags/messages.md>), [testing](<https://devfeed.tech/tags/testing.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

This article presents an approach to encapsulating view state in Android applications with AndroidX ViewModel. It explains how putting business logic and decision-making code in ViewModels can simplify Activities and Fragments and make the valuable code easier to test.

### Source excerpt

The AndroidX ViewModel has become a central component in many modern Android apps. They offer a relatively simple abstraction to encapsulate business logic and decision making code which separates it from the platform frameworks, which are often difficult to test. Since ViewModels are easier to test than Framework classes like Activity and Fragment due to their simple lifecycles and lack of external dependencies, it makes sense to try to put as much logic, the complex decision-making code that should be tested, in ViewModels as possible. Ideally we'll be left with a view layer, either Activities, Fragments, or something else, which is so simple that it's not worth testing.

## MVVM with architecture components: a step by step guideline for MVP lovers

DevFeed: [MVVM with architecture components: a step by step guideline for MVP lovers](<https://devfeed.tech/articles/mvvm-with-architecture-components-a-step-by-step-guideline-for-mvp-lovers-27206.md>)

Original publisher: [Read original article](<https://antonioleiva.com/mvvm-vs-mvp>)

Published: 2018-12-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Antonio Leiva](<https://devfeed.tech/sources/antonio-leiva.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [architecture-components](<https://devfeed.tech/tags/architecture-components.md>), [guide](<https://devfeed.tech/tags/guide.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [opinion](<https://devfeed.tech/tags/opinion.md>)

### AI overview

This Android article explains MVVM to readers familiar with MVP, comparing how presenters and ViewModels communicate with views. It argues that MVP remains valid, MVVM is not necessarily better, immediate refactoring is unnecessary, and Android architecture components can generally still be used with MVP.

### Source excerpt

Everything Android, Kotlin and other random topics

## Caviar iOS: Migrating from AdvancedCollectionView to PJFDataSource

DevFeed: [Caviar iOS: Migrating from AdvancedCollectionView to PJFDataSource](<https://devfeed.tech/articles/caviar-ios-migrating-from-advancedcollectionview-to-pjfdatasource-15573.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/caviar-ios-migrating-from-advancedcollectionview-to-pjfdatasource>)

Author: Square Engineering

Published: 2016-06-13T16:11:00Z

Content type: article

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Library](<https://devfeed.tech/topics/library.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [ios](<https://devfeed.tech/tags/ios.md>), [library](<https://devfeed.tech/tags/library.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [reuse](<https://devfeed.tech/tags/reuse.md>)

### AI overview

This article explains how the Caviar iOS app moved from Apple's AdvancedCollectionView sample architecture to PJFDataSource. The team created an external library that retained the useful data-source patterns while reducing unnecessary complexity, then open-sourced it.

### Source excerpt

Behind-the-scenes look at the evolution of PJFDataSource in our Caviar iOS app.

## Android Architecture: Introducing Dynamo

DevFeed: [Android Architecture: Introducing Dynamo](<https://devfeed.tech/articles/android-architecture-introducing-dynamo-26031.md>)

Original publisher: [Read original article](<http://doridori.github.io//Android-Architecture-Dynamo/>)

Author: SystemDotRun

Published: 2015-04-03T00:00:00Z

Content type: article

Language: en

Sources: [SystemDotRun](<https://devfeed.tech/sources/systemdotrun.md>)

Topics: [Dynamo](<https://devfeed.tech/topics/dynamo.md>), [Library](<https://devfeed.tech/topics/library.md>), [Development](<https://devfeed.tech/topics/development.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-architecture](<https://devfeed.tech/tags/android-architecture.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [code](<https://devfeed.tech/tags/code.md>), [dynamo](<https://devfeed.tech/tags/dynamo.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>)

### AI overview

This introductory post presents Dynamo, a small library and wiki for Android application architecture. It focuses on managing application state and asynchronous code, including their interaction with the Android lifecycle, and aims to decouple UI behavior from core application logic.

### Source excerpt

Dynamo has been superseded by Pilot Welcome, welcome. Come in, it looks mighty cold out there. The code is laying heavy across the hills, disorder rules the day and the nights are long. We yearn for a day where the suns shines forth once more. This is post #2 of my very short Android Architecture series (can two be a series?). Post #1 was a primer for this post. It contained A brief outline of the problems when defaulting to stock Android architecture. An overview of common general architectural concepts. This post is really a short intro to a small library + Wiki I have created. This library fills an architectural hole which I see in the Android dev world. There is no unified approach to generic Android app architecture and this creates a vacuum which sucks in well meaning devs and results is messy codebases strewn across the land. It is also my reponse to the many MVP blog posts out there, which have really helped me think about this issue but also I have my own take on. Plus, I feel sorry for new Android devs who are turning up later to the party and are overwhealmed by the Android ecosystem and need to get up to speed quickly on what these issues are before even getting to the point of thinking about potential solutions. Some of the issues addressed by this approach are solved by fantastic existing libraries, but again, I think for a large chunk of devs these can be difficult concepts to grasp and get running with. These are mentioned in the projects wiki for further reading. In my experience at least there are two core ideas around the center of most apps codebases. From the codebases I have seen & inherited both ideas seem to have too few brain cycles spent on them. 1. State Most apps and views are state-based however the spaghetti-level that captures the state logic is generally very high. 2. Asynchronous code Pretty much every app involves some asynchronous code. Pretty much every app allows this to touch the Android lifecycle. This always leads to sadness.

## Android Architecture: MV?

DevFeed: [Android Architecture: MV?](<https://devfeed.tech/articles/android-architecture-mv-26032.md>)

Original publisher: [Read original article](<http://doridori.github.io//Android-Architecture-MV/>)

Author: SystemDotRun

Published: 2015-04-01T00:00:00Z

Content type: opinion

Language: en

Sources: [SystemDotRun](<https://devfeed.tech/sources/systemdotrun.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Code](<https://devfeed.tech/topics/code.md>), [mvc](<https://devfeed.tech/topics/mvc.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app-architecture](<https://devfeed.tech/tags/app-architecture.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [code](<https://devfeed.tech/tags/code.md>), [mvc](<https://devfeed.tech/tags/mvc.md>)

### AI overview

This article examines how MV* architectural approaches relate to Android development. It argues that placing most application logic in Activities and Fragments can produce code that is difficult to test, read, refactor, reuse, and maintain through configuration changes, and introduces several common Android architecture perspectives.

### Source excerpt

How do the MV* ways of thinking relate to Android? Why is this now such a popular way of thinking about Android architecture? The Problem I'm a contractor and I'm often brought on to projects have long since passed their first commit. I feel like I have had a good insight how to the average dev approaches Android app architecture from this, and also from open-source projects, android blog posts, the Android developer site and more. One thing that strikes me about most of the code I see is that there is not much of a notion of a clean, overarching application architecture. By this I mean that people seem genuinely happy to shoehorn their code into Activitys & Fragments with the occasional class named something like MyCrazyController. Why is this an issue? The problem with this is that it results in hard to test code hard to read code hard to refactor code hard to reuse code hard to handle-config changes code hard to write asynchronous code hard to not create loads of edge-case code (i.e. its buggy) hard to hand-over code Its an easy thing to fall into doing because ~99% of all Android examples are written in this way It sort of works most of the time there are framework classes (i.e. Loaders) and librarys (i.e. RoboSpice) around now to work around some of the issues that manifest from using this stock approach. While I have used these approaches in the past I find they can make a code base more complicated than it needs to be. People have got used to hearing that "Android is hard to test" or "just lock it to portrait" and "restart / reconnect to the web service call on rotation" and just think "well thats how it is" I admit, I would also include my past-self into this group, which is why I am here, attempting to atone for my coding sins and mine and others unknowingly devout following of the book of anti-patterns. How has this come to be? MV?, who's in control? I believe a big part of this is that not much thought has gone into the actual generic app architecture app