# Ktor

Ktor is an asynchronous Kotlin framework for creating microservices, web applications, servers, and clients.

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

## Practical Kotlin Multiplatform: Implementing the Firebase Sign-up Operation with Ktor

DevFeed: [Practical Kotlin Multiplatform: Implementing the Firebase Sign-up Operation with Ktor](<https://devfeed.tech/articles/practical-kotlin-multiplatform-implementing-the-firebase-sign-up-operation-with-ktor-25189.md>)

Original publisher: [Read original article](<https://joebirch.co/android/practical-kotlin-multiplatform-implementing-the-firebase-sign-up-operation-with-ktor/>)

Author: hitherejoe

Published: 2026-07-26T07:37:53Z

Content type: tutorial

Language: en

Sources: [Joe Birch](<https://devfeed.tech/sources/joe-birch.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Android](<https://devfeed.tech/topics/android.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [code](<https://devfeed.tech/tags/code.md>), [exception](<https://devfeed.tech/tags/exception.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

A tutorial on implementing a Firebase sign-up API request in a Kotlin Multiplatform application using Ktor. It defines an authentication repository interface and service implementation for Android and iOS clients, including API key, email, and password parameters and exception handling.

### Source excerpt

This post is part four of a series adapted from Practical KMP, my book on building production Kotlin Multiplatform apps for Android and iOS. Part two built the authentication remote store and modelled its response. Implementing the Sign-up Endpoint Now that we've created the models for receiving back an authentication response, it's time for us... Continue reading ->

## Practical Kotlin Multiplatform: Creating the Firebase Auth Remote Store with Ktor

DevFeed: [Practical Kotlin Multiplatform: Creating the Firebase Auth Remote Store with Ktor](<https://devfeed.tech/articles/practical-kotlin-multiplatform-creating-the-firebase-auth-remote-store-with-ktor-25188.md>)

Original publisher: [Read original article](<https://joebirch.co/android/practical-kotlin-multiplatform-creating-the-firebase-auth-remote-store-with-ktor/>)

Author: hitherejoe

Published: 2026-07-18T15:17:19Z

Content type: tutorial

Language: en

Sources: [Joe Birch](<https://devfeed.tech/sources/joe-birch.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Android](<https://devfeed.tech/topics/android.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [networking](<https://devfeed.tech/tags/networking.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial, part two of a Kotlin Multiplatform series, explains how to build a Firebase Authentication remote store with Ktor. It models Firebase Authentication's REST API behind a shared interface for Android and iOS, covering account operations, token refresh, dependency injection, and tests with a mocked client.

### Source excerpt

This post is part two of a series adapted from Practical KMP, my book on building production Kotlin Multiplatform apps for Android and iOS. If you missed it, part one covered setting up the shared networking module. Introduction With our shared module now set up, we have the foundations that we need to start building... Continue reading ->

## Practical Kotlin Multiplatform: Setting up the Kotlin Multiplatform Networking Module with Ktor

DevFeed: [Practical Kotlin Multiplatform: Setting up the Kotlin Multiplatform Networking Module with Ktor](<https://devfeed.tech/articles/practical-kotlin-multiplatform-setting-up-the-kotlin-multiplatform-networking-module-with-ktor-25190.md>)

Original publisher: [Read original article](<https://joebirch.co/android/practical-kotlin-multiplatform-setting-up-the-kotlin-multiplatform-networking-module-with-ktor/>)

Author: hitherejoe

Published: 2026-07-10T16:16:31Z

Content type: tutorial

Language: en

Sources: [Joe Birch](<https://devfeed.tech/sources/joe-birch.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [networking](<https://devfeed.tech/topics/networking.md>), [REST API](<https://devfeed.tech/topics/rest-api.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [library](<https://devfeed.tech/tags/library.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [module](<https://devfeed.tech/tags/module.md>), [networking](<https://devfeed.tech/tags/networking.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>)

### AI overview

A tutorial series installment that sets up a Kotlin Multiplatform networking module with Ktor for shared Android and iOS code. It describes building a portable Firebase Authentication and Firestore REST API layer without relying on platform-specific SDKs.

### Source excerpt

This post is part one of a series adapted from Practical KMP, my book on building production Kotlin Multiplatform apps for Android and iOS. Part 1: Creating the Kotlin Multiplatform Module In this part of the book, we'll build the complete authentication remote store, defining a repository that handles every operation our app needs for... Continue reading ->

## Let Koin Shape your Application Architecture

DevFeed: [Let Koin Shape your Application Architecture](<https://devfeed.tech/articles/let-koin-shape-your-application-architecture-22974.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/let-koin-shape-your-application-architecture-9cd60b1e02b0?source=rss----925561f2ecdf---4>)

Author: Gabriel Bronzatti Moro

Published: 2026-07-06T12:01:01Z

Content type: tutorial

Language: en

Sources: [Koin developers - Medium](<https://devfeed.tech/sources/koin-developers-medium.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Software](<https://devfeed.tech/topics/software.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [clean-architecture](<https://devfeed.tech/tags/clean-architecture.md>), [developer](<https://devfeed.tech/tags/developer.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [software](<https://devfeed.tech/tags/software.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

This tutorial explains how Koin can support application architecture based on Clean Architecture and software design practices. It describes using Koin to create and manage object instances, including singleton and factory definitions, with Ktor's HttpClient as an example.

### Source excerpt

Hey, friends! 👋 Today we're going to explore application architecture and how Koin can help us build scalable, maintainable applications by applying the principles of Clean Architecture and other software design best practices. Application architecture is a fundamental skill for every software engineer. A well-designed architecture makes applications easier to understand, test, extend, and maintain as they grow over time. A collection of LEGO towers in various stages of construction -- Unsplash by richard_heFoundation When we think about software architecture, we often picture layered diagrams -- data, domain, and presentation -- along with classes such as use cases, handlers, repositories, and helpers. But how do all these components work together? How do we establish a reliable communication protocol between them? Architecture is more than just organizing classes into packages. It's about defining how objects communicate and collaborate working toward a common goal. With that in mind, let's begin our journey with a simple principle: Every object instance should be created by Koin. My only responsibility as a developer is to describe how each object should be instantiated, while Koin takes care of the creation process.SingletonSingleton Café generated by ChatGPT Koin makes it easy to define singletons, whether you're using the @Single annotation or the single { ... } DSL. By declaring a singleton, you're telling Koin to create and manage a single instance of that object for the lifetime of the application. In the example below, we define an HttpClient as a singleton: @Module class NetworkModule { @Single fun provideHttpClient(): HttpClient { return HttpClientBuilder.build( baseUrl = BuildKonfig.HOST, ) } ... } HttpClient is a class provided by Ktor, and it should typically be instantiated only once. By declaring it as a singleton, Koin ensures that the same HttpClient instance is shared throughout the application. The Singleton pattern is commonly used for objects tha

## Opinionated Ktor Services

DevFeed: [Opinionated Ktor Services](<https://devfeed.tech/articles/opinionated-ktor-services-25518.md>)

Original publisher: [Read original article](<http://nomisrev.github.io/opinionated-ktor-services/>)

Author: Simon Vergauwen

Published: 2026-05-21T00:00:00Z

Content type: opinion

Language: en

Sources: [nomisRev](<https://devfeed.tech/sources/nomisrev.md>)

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [conference](<https://devfeed.tech/tags/conference.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlinconf](<https://devfeed.tech/tags/kotlinconf.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [opinions](<https://devfeed.tech/tags/opinions.md>), [services](<https://devfeed.tech/tags/services.md>), [talk](<https://devfeed.tech/tags/talk.md>)

### AI overview

The author describes a KotlinConf 2026 talk about using Ktor and the Kotlin ecosystem to build robust, maintainable, and scalable services. The talk presents the author's opinions on structuring Ktor services and choosing libraries, based on experience with teams.

### Source excerpt

Today I gave a talk at KotlinConf 2026 in Munich about "Opinionated Ktor Services". In this talk, I shared my experience and opinions on how to build robust, maintainable, and scalable services using Ktor and the Kotlin ecosystem.

## Metro DI for Ktor Backend: From a God Object through manual DI to Constructor Injection

DevFeed: [Metro DI for Ktor Backend: From a God Object through manual DI to Constructor Injection](<https://devfeed.tech/articles/metro-di-for-ktor-backend-from-a-god-object-through-manual-di-to-constructor-injection-22966.md>)

Original publisher: [Read original article](<https://funkymuse.github.io/posts/metro-di-ktor-server/>)

Author: FunkyMuse

Published: 2026-05-15T15:35:00Z

Content type: tutorial

Language: en

Sources: [FunkyMuse](<https://devfeed.tech/sources/funkymuse.md>)

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [modules](<https://devfeed.tech/topics/modules.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [di](<https://devfeed.tech/tags/di.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [redis](<https://devfeed.tech/tags/redis.md>), [server](<https://devfeed.tech/tags/server.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>)

### AI overview

This article describes replacing manual dependency injection in a Ktor backend with Metro. It explains how default constructor parameters and a central BackendComponent can accidentally couple tests to real dependencies such as Redis, while Metro wires constructor parameters at compile time and removes those defaults.

### Source excerpt

The Starting Point: a God Object When Rudio was a created a few months ago it used the simplest possible DI: one big object BackendComponent with everything wired manually via by lazy and lateinit var. No framework, no annotations, no ceremony, then i started adding things and manual DI became a tedious and tiring task because everywhere i used default parameters to achieve default constructor...

## Flattening my Dependency Graph

DevFeed: [Flattening my Dependency Graph](<https://devfeed.tech/articles/flattening-my-dependency-graph-32249.md>)

Original publisher: [Read original article](<https://publicobject.com/2026/02/03/flattening-my-dependency-graph/>)

Author: Jesse Wilson

Published: 2026-02-03T05:28:50Z

Content type: opinion

Language: en

Sources: [Public Object](<https://devfeed.tech/sources/public-object.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>)

Tags: [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [modules](<https://devfeed.tech/tags/modules.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>)

### AI overview

The author describes structuring a Kotlin server's dependency graph using a three-module pattern for each feature: public API, implementation, and dependency-injection wiring. The approach aims to support parallel builds, reduce unnecessary rebuilds, and keep dependencies manageable.

### Source excerpt

Rounds has a Kotlin server that integrates a few things: PostgreSQL persistence via SQLDelight (hosted on PlanetScale!) WebAuthn4J for Passkeys kotlinx.html for dynamic web pages Ktor for HTTP binding The service uses six database tables. The business domain tables are Game and GameEvent. Support for auth, sessions, and collaborative

## Hosting Kotlin applications using Coolify

DevFeed: [Hosting Kotlin applications using Coolify](<https://devfeed.tech/articles/hosting-kotlin-applications-using-coolify-38827.md>)

Original publisher: [Read original article](<https://lengrand.fr/hosting-kotlin-applications-using-coolify/>)

Author: Julien

Published: 2024-06-11T10:37:11Z

Content type: tutorial

Language: en

Sources: [Thoughts, stories and ideas.](<https://devfeed.tech/sources/thoughts-stories-and-ideas.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [hosting](<https://devfeed.tech/topics/hosting.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Server](<https://devfeed.tech/topics/server.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [cli](<https://devfeed.tech/tags/cli.md>), [coolify](<https://devfeed.tech/tags/coolify.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [docker](<https://devfeed.tech/tags/docker.md>), [github](<https://devfeed.tech/tags/github.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [server](<https://devfeed.tech/tags/server.md>)

### AI overview

A tutorial showing how to deploy a Kotlin Ktor application with Coolify on a self-managed server. It covers creating a sample application, connecting Coolify to GitHub, configuring deployment, and using features such as auto-deploys, custom domains, and preview branches.

### Source excerpt

TL;DR : With Coolify you can host you Kotlin applications in seconds on your own server and benefit from auto deploys, custom domains, preview branches and more. You can see the code here, and access the sample here.

## Key advantages of Kotlin Coroutines

DevFeed: [Key advantages of Kotlin Coroutines](<https://devfeed.tech/articles/key-advantages-of-kotlin-coroutines-39257.md>)

Original publisher: [Read original article](<https://kt.academy/article/coroutines-advantages>)

Published: 2024-06-10T00:00:00Z

Content type: article

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Structured concurrency](<https://devfeed.tech/topics/structured-concurrency.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [cancellation](<https://devfeed.tech/topics/cancellation.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [async/await](<https://devfeed.tech/topics/async-await.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Android](<https://devfeed.tech/topics/android.md>), [WebSocket](<https://devfeed.tech/topics/websocket.md>)

Tags: [cancellation](<https://devfeed.tech/tags/cancellation.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [http](<https://devfeed.tech/tags/http.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [structured-concurrency](<https://devfeed.tech/tags/structured-concurrency.md>), [testing](<https://devfeed.tech/tags/testing.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This article explains the main advantages of Kotlin Coroutines: simpler imperative-style asynchronous code, structured concurrency, lighter execution than threads, cancellation, synchronization, and precise virtual-time testing. It discusses applications in Android and backend development, including Ktor.

### Source excerpt

Where Kotlin Coroutines shine and why you should use them.

## How many threads does your network client use?

DevFeed: [How many threads does your network client use?](<https://devfeed.tech/articles/how-many-threads-does-your-network-client-use-39355.md>)

Original publisher: [Read original article](<https://kt.academy/article/network_client_threads>)

Published: 2024-05-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Spring Boot](<https://devfeed.tech/topics/spring-boot.md>), [client](<https://devfeed.tech/topics/client.md>), [Network](<https://devfeed.tech/topics/network.md>)

Tags: [coroutine](<https://devfeed.tech/tags/coroutine.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [network](<https://devfeed.tech/tags/network.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>), [threads](<https://devfeed.tech/tags/threads.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This article examines how network clients can consume more threads than expected in Kotlin applications. It explains the thread and memory costs of blocking network requests, contrasts them with suspended Kotlin coroutines, and discusses checking client behavior in Ktor and Spring Boot applications.

### Source excerpt

Many popular network clients consume way more threads than you might expect. Let's overview the problem and find a solution.

## Zero downtime deployment with Arrow and Ktor Native

DevFeed: [Zero downtime deployment with Arrow and Ktor Native](<https://devfeed.tech/articles/zero-downtime-deployment-with-arrow-and-ktor-native-25515.md>)

Original publisher: [Read original article](<http://nomisrev.github.io/graceful-resource-handling-using-structured-concurrency-in-kotlin/>)

Author: Simon Vergauwen

Published: 2023-02-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [nomisRev](<https://devfeed.tech/sources/nomisrev.md>)

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [zero downtime deployment](<https://devfeed.tech/topics/zero-downtime-deployment.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [resource](<https://devfeed.tech/tags/resource.md>), [structured-concurrency](<https://devfeed.tech/tags/structured-concurrency.md>), [structuredconcurrency](<https://devfeed.tech/tags/structuredconcurrency.md>), [zero-downtime-deployment](<https://devfeed.tech/tags/zero-downtime-deployment.md>)

### AI overview

A webinar explains zero-downtime deployment for functional microservices using Ktor and Kubernetes. It also covers structured concurrency, Arrow's Resource DSL, and KotlinX Coroutines for resource safety and complex use cases.

### Source excerpt

Webinar with Anton Arhipov on functional microservices with Ktor and Kubernetes about zero-downtime deployments.

## Presenting Cabinet to the World!

DevFeed: [Presenting Cabinet to the World!](<https://devfeed.tech/articles/presenting-cabinet-to-the-world-40808.md>)

Original publisher: [Read original article](<https://www.bloco.io/blog/presenting-cabinet-to-the-world>)

Author: Cláudia

Published: 2022-11-30T17:17:35Z

Content type: article

Language: en

Sources: [Blog - Bloco](<https://devfeed.tech/sources/blog-bloco.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [Android](<https://devfeed.tech/topics/android.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [Template](<https://devfeed.tech/topics/template.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [app](<https://devfeed.tech/tags/app.md>), [design](<https://devfeed.tech/tags/design.md>), [development](<https://devfeed.tech/tags/development.md>), [directory](<https://devfeed.tech/tags/directory.md>), [games](<https://devfeed.tech/tags/games.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [internship](<https://devfeed.tech/tags/internship.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [launch](<https://devfeed.tech/tags/launch.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [template](<https://devfeed.tech/tags/template.md>)

### AI overview

Bloco introduces Cabinet, a paid Android app directory designed to help users discover hand-picked apps and alternatives without download-based rankings or false marketing. The article describes its categories, launch results, business goals, and implementation with technologies including Jetpack Compose, Paging 3, DataStore, Ktor, and Coil.

### Source excerpt

Presenting Cabinet, Bloco's new app! Cabinet helps you discover amazing new apps and alternatives to the ones you use every day.

## Moving from mobile to backend development with Ktor

DevFeed: [Moving from mobile to backend development with Ktor](<https://devfeed.tech/articles/moving-from-mobile-to-backend-development-with-ktor-25565.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2022/backend-from-mobile-ktor/>)

Author: Marco Gomiero

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

Content type: tutorial

Language: en

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

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [backend-development](<https://devfeed.tech/topics/backend-development.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Development](<https://devfeed.tech/topics/development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [backend](<https://devfeed.tech/tags/backend.md>), [backend-development](<https://devfeed.tech/tags/backend-development.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [development](<https://devfeed.tech/tags/development.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The final article in a Ktor series describes the author's move from mobile to backend development. It explains why the author chose Ktor for a new backend project and discusses adapting architecture, dependency injection, and testing knowledge from Android development.

### Source excerpt

SERIES: Building a backend with Ktor Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5: Generate API documentation from Swagger on Ktor Part 6: How to schedule jobs with Quartz on Ktor Part 7: Moving from mobile to backend development with Ktor This article is the final instance of the series of posts dedicated to Ktor where I cover all the topics that made me struggle during development and that were not easy to achieve out of the box. In this article, I will cover why I ended up using Ktor and how was my journey from the mobile to the backend world.

## Building applications with Kotlin and Arrow.kt in style

DevFeed: [Building applications with Kotlin and Arrow.kt in style](<https://devfeed.tech/articles/building-applications-with-kotlin-and-arrow-kt-in-style-25510.md>)

Original publisher: [Read original article](<http://nomisrev.github.io/building-applications-with-kotlin-and-arrow.kt-in-style/>)

Author: Simon Vergauwen

Published: 2022-05-31T00:00:00Z

Content type: tutorial

Language: en

Sources: [nomisRev](<https://devfeed.tech/sources/nomisrev.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Microservices](<https://devfeed.tech/topics/microservices.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>)

Tags: [arrow](<https://devfeed.tech/tags/arrow.md>), [continuation](<https://devfeed.tech/tags/continuation.md>), [database](<https://devfeed.tech/tags/database.md>), [effect](<https://devfeed.tech/tags/effect.md>), [either](<https://devfeed.tech/tags/either.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [suspend](<https://devfeed.tech/tags/suspend.md>), [webinar](<https://devfeed.tech/tags/webinar.md>)

### AI overview

A webinar with Anton Arhipov demonstrates an end-to-end functional microservices workflow using Kotlin, Ktor, and Arrow, including request handling, database interaction, and response generation.

### Source excerpt

Webinar with Anton Arhipov on functional microservices with Ktor and Arrow.

## How to schedule jobs with Quartz on Ktor

DevFeed: [How to schedule jobs with Quartz on Ktor](<https://devfeed.tech/articles/how-to-schedule-jobs-with-quartz-on-ktor-25567.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2022/ktor-jobs-quartz/>)

Author: Marco Gomiero

Published: 2022-04-22T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [Quartz](<https://devfeed.tech/topics/quartz.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Database](<https://devfeed.tech/topics/database.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [database](<https://devfeed.tech/tags/database.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [quartz](<https://devfeed.tech/tags/quartz.md>), [scheduler](<https://devfeed.tech/tags/scheduler.md>), [scheduling](<https://devfeed.tech/tags/scheduling.md>)

### AI overview

This tutorial explains how to schedule recurring jobs in a Ktor backend project using Quartz. It covers Quartz's persistence of job state, database table setup, logging configuration, and scheduler creation, with MySQL used in the example.

### Source excerpt

SERIES: Building a backend with Ktor Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5: Generate API documentation from Swagger on Ktor Part 6: How to schedule jobs with Quartz on Ktor Part 7: Moving from mobile to backend development with Ktor Sometimes, on a backend project, there is the need to run one or more tasks periodically, like for system administration, maintenance, backup, syncing content in the background, etc. These types of tasks can be scheduled "manually" with a cron job or with a scheduling library like Quartz, that makes easy for example the persistence of the task's state even after a reboot of the server.

## Generate API documentation from Swagger on Ktor

DevFeed: [Generate API documentation from Swagger on Ktor](<https://devfeed.tech/articles/generate-api-documentation-from-swagger-on-ktor-25569.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2022/ktor-setup-documentation/>)

Author: Marco Gomiero

Published: 2022-03-22T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [Swagger](<https://devfeed.tech/topics/swagger.md>), [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [API](<https://devfeed.tech/topics/api.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [backend-development](<https://devfeed.tech/topics/backend-development.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-documentation](<https://devfeed.tech/tags/api-documentation.md>), [backend-development](<https://devfeed.tech/tags/backend-development.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [openapi](<https://devfeed.tech/tags/openapi.md>), [swagger](<https://devfeed.tech/tags/swagger.md>)

### AI overview

A tutorial on generating and exposing API documentation for a Ktor backend. It uses OpenAPI (Swagger) definitions, the Gradle Swagger Generator Plugin, ReDoc, and Ktor's static-content serving capabilities.

### Source excerpt

SERIES: Building a backend with Ktor Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5: Generate API documentation from Swagger on Ktor Part 6: How to schedule jobs with Quartz on Ktor Part 7: Moving from mobile to backend development with Ktor When a backend project exposes some APIs, there should also be a place where the clients of those APIs can see and understand what can be consumed. This place can be a document, a text file, a website, etc.

## How to handle database migrations with Liquibase on Ktor

DevFeed: [How to handle database migrations with Liquibase on Ktor](<https://devfeed.tech/articles/how-to-handle-database-migrations-with-liquibase-on-ktor-25568.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2022/ktor-migration-liquibase/>)

Author: Marco Gomiero

Published: 2022-01-24T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [migration](<https://devfeed.tech/topics/migration.md>), [backend-development](<https://devfeed.tech/topics/backend-development.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [XML](<https://devfeed.tech/topics/xml.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [backend-development](<https://devfeed.tech/tags/backend-development.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [migration](<https://devfeed.tech/tags/migration.md>), [migrations](<https://devfeed.tech/tags/migrations.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This tutorial explains how to set up Liquibase in a Ktor project and create Gradle tasks for migrating test and production MySQL databases. It covers database schema evolution, data migration, rollback, dependencies, XML changelog data, and configuration through environment variables.

### Source excerpt

SERIES: Building a backend with Ktor Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5 Generate API documentation from Swagger on Ktor Part 6: How to schedule jobs with Quartz on Ktor Part 7: Moving from mobile to backend development with Ktor Databases are an important and critical part of backend infrastructures. They are the place where all the information is stored and that data cannot be compromised or lost. That's why it is important to have proper management of the evolution of the database: it is necessary to be able to modify the schema, migrate the data, or roll back to a previous schema version if something unexpected happened.

## Functional programming in Kotlin with Arrow.kt

DevFeed: [Functional programming in Kotlin with Arrow.kt](<https://devfeed.tech/articles/functional-programming-in-kotlin-with-arrow-kt-25514.md>)

Original publisher: [Read original article](<http://nomisrev.github.io/functional-programming-in-kotlin-with-arrow-kt/>)

Author: Simon Vergauwen

Published: 2021-12-05T00:00:00Z

Content type: article

Language: en

Sources: [nomisRev](<https://devfeed.tech/sources/nomisrev.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [circuit](<https://devfeed.tech/tags/circuit.md>), [effect](<https://devfeed.tech/tags/effect.md>), [either](<https://devfeed.tech/tags/either.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [programming](<https://devfeed.tech/tags/programming.md>), [suspend](<https://devfeed.tech/tags/suspend.md>), [validation](<https://devfeed.tech/tags/validation.md>), [webinar](<https://devfeed.tech/tags/webinar.md>)

### AI overview

A webinar discusses functional microservices with Ktor and Arrow in Kotlin, including retries with circuit breakers and schedulers, validation, optics, and analysis.

### Source excerpt

Webinar with Anton Arhipov & Alejandro Serrano about functional microservices with Ktor and Arrow.

## Going Fully Multiplatform #1: Migrating your Android Project to Kotlin Multiplatform

DevFeed: [Going Fully Multiplatform #1: Migrating your Android Project to Kotlin Multiplatform](<https://devfeed.tech/articles/going-fully-multiplatform-1-migrating-your-android-project-to-kotlin-multiplatform-25912.md>)

Original publisher: [Read original article](<https://medium.com/@xxfast/going-fully-multiplatform-1-migrating-your-android-project-to-kotlin-multiplatform-8fc38763307?source=rss-43bae76e8f81------2>)

Author: Isuru Rajapakse

Published: 2021-10-21T13:24:07Z

Content type: tutorial

Language: en

Sources: [Stories by Isuru Rajapakse on Medium](<https://devfeed.tech/sources/stories-by-isuru-rajapakse-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Web](<https://devfeed.tech/topics/web.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [koin](<https://devfeed.tech/topics/koin.md>), [RxJava](<https://devfeed.tech/topics/rxjava.md>), [navigation](<https://devfeed.tech/topics/navigation.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [caching](<https://devfeed.tech/tags/caching.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [moshi](<https://devfeed.tech/tags/moshi.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [retrofit](<https://devfeed.tech/tags/retrofit.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>)

### AI overview

The article describes migrating an Android-only application to Kotlin Multiplatform. It compares the existing Android stack with a planned multiplatform stack targeting Android, JVM, iOS, and Web, including changes to networking, serialization, caching, dependency injection, asynchronous plumbing, navigation, and UI.

### Source excerpt

Earlier this year I started a mission to start migrating one of our long-lasting Android-only apps to Kotlin Multiplatform to go beyond just Android. This is the story of how that went. Migration from Only-Android to Kotlin Multiplatform!The Android stack This is our current "stack" our android app was set up as follows Targeting Android SDK API 23 or above, we had a few libraries to help us out. The Android-only stack OkHttp for Networking Retrofit for.. also Networking Moshi for serialisation Okio for caching Koin for Dependency Injection/ Service Locator Plumbing with RxJava Navigation with Conductor Imperative UI with Android Views written in XML The Multiplatform stack To go beyond just Android, I had to make some hard decisions to step outside of the comfort zone that we've been so fond of To target Android, JVM, iOS and Web -- we will be making use of The Multiplatform stack Ktor for Networking Kotlin Serialisation for.. serialisation Caching with SQLDelight Koin for Dependency Injection (that one can stay) Plumbing with Coroutine Flows Navigation with Decompose Declarative UI powered with Jetpack/Jetbrains Compose That's the plan! In the next few articles, we'll take a look at each step in more detail. Before jumping on to that -- I want to take a close look at how we can fully modularise a Kotlin Multiplatform project with Going Fully Multiplatform #2 Modularising your Kotlin Multiplatform Project!

## How to use an in-memory database for testing on Ktor

DevFeed: [How to use an in-memory database for testing on Ktor](<https://devfeed.tech/articles/how-to-use-an-in-memory-database-for-testing-on-ktor-25560.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2021/ktor-in-memory-db-testing/>)

Author: Marco Gomiero

Published: 2021-10-04T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [backend-development](<https://devfeed.tech/topics/backend-development.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [in-memory-database](<https://devfeed.tech/tags/in-memory-database.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [orm](<https://devfeed.tech/tags/orm.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

This tutorial explains how to use an H2 in-memory database for automated testing in a Ktor backend project that uses MySQL in production. It discusses clearing test data, using Docker as an alternative, and configuring the Exposed ORM.

### Source excerpt

SERIES: Building a backend with Ktor Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5 Generate API documentation from Swagger on Ktor Part 6: How to schedule jobs with Quartz on Ktor Part 7: Moving from mobile to backend development with Ktor Usually, in a backend project, there are different instances of the same database: one for production (or more than one, it depends on the architecture), one for staging, and a local one that runs in the development machine.

## Kotlin Mumbai: Learn backend engineering with Ktor

DevFeed: [Kotlin Mumbai: Learn backend engineering with Ktor](<https://devfeed.tech/articles/kotlin-mumbai-learn-backend-engineering-with-ktor-28370.md>)

Original publisher: [Read original article](<https://siddroid.com/post/kotlin-mumbai-events/post-kotlin-for-backend-engineering-himanshu-singh/>)

Author: Siddhesh Patil

Published: 2021-08-31T07:41:34Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [backend frameworks](<https://devfeed.tech/topics/backend-frameworks.md>)

Tags: [android-events-in-mumbai](<https://devfeed.tech/tags/android-events-in-mumbai.md>), [backend](<https://devfeed.tech/tags/backend.md>), [backend-frameworks](<https://devfeed.tech/tags/backend-frameworks.md>), [best-android-developer-communities](<https://devfeed.tech/tags/best-android-developer-communities.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [frameworks](<https://devfeed.tech/tags/frameworks.md>), [gde-talks](<https://devfeed.tech/tags/gde-talks.md>), [gdg-groups](<https://devfeed.tech/tags/gdg-groups.md>), [himanshu-singh-talks](<https://devfeed.tech/tags/himanshu-singh-talks.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-for-backend-engineering](<https://devfeed.tech/tags/kotlin-for-backend-engineering.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-mumbai](<https://devfeed.tech/tags/kotlin-mumbai.md>), [kotlin-user-groups](<https://devfeed.tech/tags/kotlin-user-groups.md>), [ktor](<https://devfeed.tech/tags/ktor.md>)

### AI overview

An event abstract presents Kotlin as an option for backend engineering and introduces Ktor alongside other backend languages and frameworks. The talk is delivered by Himanshu Singh, whose background includes Android development, backend work, and open-source contributions.

### Source excerpt

Himanshu Singh convinces us why Kotlin is a viable option for backend engineering. Explore popular Kotlin backend frameworks and understand the merits of using Ktor.

## Battle-tested template project for backend with Kotlin and Ktor

DevFeed: [Battle-tested template project for backend with Kotlin and Ktor](<https://devfeed.tech/articles/battle-tested-template-project-for-backend-with-kotlin-and-ktor-24731.md>)

Original publisher: [Read original article](<https://medium.com/xorum-io/battle-tested-template-project-for-backend-with-kotlin-and-ktor-c655a2e276c2?source=rss----92bb7980cc9f---4>)

Author: Yev Kanivets

Published: 2021-07-16T05:24:17Z

Content type: tutorial

Language: en

Sources: [xorum.io - Medium](<https://devfeed.tech/sources/xorum-io-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Template](<https://devfeed.tech/topics/template.md>), [mvc](<https://devfeed.tech/topics/mvc.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [API](<https://devfeed.tech/topics/api.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Heroku](<https://devfeed.tech/topics/heroku.md>), [Postman](<https://devfeed.tech/topics/postman.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [backend](<https://devfeed.tech/tags/backend.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [intellij-idea](<https://devfeed.tech/tags/intellij-idea.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [mvc](<https://devfeed.tech/tags/mvc.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [postman](<https://devfeed.tech/tags/postman.md>), [project](<https://devfeed.tech/tags/project.md>)

### AI overview

This article presents a personal Ktor template for Kotlin backend applications, describing its production use, project structure, tools, libraries, MVC-based architecture, API design, Heroku deployment files, and Firebase Auth integration.

### Source excerpt

With Kotlin and Ktor technologies gaining more popularity among the community of backend developers, dozens of different sample applications and templates are created and published as open-source projects. Ktor is an asynchronous framework for creating microservices, web applications, and more. It's fun, free, and open source. So it doesn't force any particular architecture, set of libraries, or framework to be used, which means that you are free to choose what's best for you and your project. Today, I'm finally ready to share my personal Ktor template, polished by almost a year of use in production applications. This article gives a short overview of the template, its architecture, chosen tools, and libraries. Tools Since we are using Kotlin to develop Ktor applications, pretty much any IDE compatible with Java/Kotlin should work. But the default choice is IntelliJ IDEA, of course. Community edition (free) will work just fine. Postman is a great choice for documenting, testing, and sharing your backend APIs. There are many similar tools. You can use cURL requests, for example. But always think about your API users first. What will be the most convenient for them, as they depend on you a lot. Structure Most of the Kotlin projects (including Ktor) are powered by Gradle, so they look quite similar. My template isn't different, with many Gradle-related files in the root and single src folder. Other files are related to Heroku deployment, but more on this later. Architecture Ktor isn't forcing you for any particular approach, so you are free to choose and implement the architecture that fits your needs best. In our case, we implemented classical MVC (Model -- View -- Controller) architecture with a public API instead of View and dedicated Interactors, which encapsulate all business logic related to each endpoint. Firebase Auth Most applications require some authentication and authorization business logic, so my template includes one of the possible implementations out of

## How to persist Ktor logs

DevFeed: [How to persist Ktor logs](<https://devfeed.tech/articles/how-to-persist-ktor-logs-25561.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2021/ktor-logging-on-disk/>)

Author: Marco Gomiero

Published: 2021-05-05T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [backend-development](<https://devfeed.tech/topics/backend-development.md>), [Logging](<https://devfeed.tech/topics/logging.md>)

Tags: [backend-development](<https://devfeed.tech/tags/backend-development.md>), [development](<https://devfeed.tech/tags/development.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [logs](<https://devfeed.tech/tags/logs.md>)

### AI overview

This tutorial explains how to persist logs produced by a Ktor backend in a file on the server. It introduces logging's uses, contrasts local file persistence with cloud services for early-stage products, and discusses Ktor's SLF4J-based logging setup and logger customization.

### Source excerpt

SERIES: Building a backend with Ktor Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5 Generate API documentation from Swagger on Ktor Part 6: How to schedule jobs with Quartz on Ktor Part 7: Moving from mobile to backend development with Ktor Logs are a vital part of software development. They can be used for debugging, to track specific events during the lifecycle of the product, or to discover unexpected events.

## Structuring a Ktor project

DevFeed: [Structuring a Ktor project](<https://devfeed.tech/articles/structuring-a-ktor-project-25562.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2021/ktor-project-structure/>)

Author: Marco Gomiero

Published: 2021-04-07T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [backend-development](<https://devfeed.tech/topics/backend-development.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [framework](<https://devfeed.tech/tags/framework.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [routing](<https://devfeed.tech/tags/routing.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

This tutorial introduces a series about building a backend with Ktor and explains how to structure a Ktor project. It covers dependency injection, configuration, testing, and the project-generation wizard in IntelliJ or start.ktor.io.

### Source excerpt

SERIES: Building a backend with Ktor Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5 Generate API documentation from Swagger on Ktor Part 6: How to schedule jobs with Quartz on Ktor Part 7: Moving from mobile to backend development with Ktor It's been a few months since I've started working with Ktor to build the backend of Revelop. We decided to go with Ktor because it is a lightweight framework, easy to use and with a gentle learning curve even for a mobile developer.

[Next page](<https://devfeed.tech/topics/ktor.md?cursor=WyIyMDIxLTA0LTA3VDAwOjAwOjAwKzAwOjAwIiwgImJhZDA4YjZmLTA5OWUtNDhkOS05ZGU4LTY0NDRiMDc3YTc3OSJd>)