We may earn an affiliate commission when you visit our partners.
Take this course
Stefan Jovanovic

Hello there and welcome to my course.

This course will be special. Why? Well because I'm going to teach you how to build not just another android application, but also a backend server, your own REST API.

The main purpose of that server will be to provide the data to our Android Application. You will learn how to successfully establish a quality communication between client, or in this case our Android App, and a backend server.

Read more

Hello there and welcome to my course.

This course will be special. Why? Well because I'm going to teach you how to build not just another android application, but also a backend server, your own REST API.

The main purpose of that server will be to provide the data to our Android Application. You will learn how to successfully establish a quality communication between client, or in this case our Android App, and a backend server.

For the backend we will use ktor framework which is built primarily on Kotlin  and Coroutines. You will learn everything about that framework, how to create your own endpoints, how to work with client requests, receive query parameters, process that same request on your backend, and finally send a fully prepared response to your clients, or in this case an Android App which we are going to develop as well.

Now, our Android Application will use the newest API's and libraries. For designing our Application layout we will use a modern UI toolkit called jetpack compose. For communicating with our backend we will use a retrofit, and paging 3 library along with remote mediator, so we can automatically store and cache that data from the server into our Local ROOM database. That way we will be able to load the data into our Application, even if we don't have an internet connection.

And that's not all, I will also teach you how to test your Backend Server as well as  your Android App. We are going to test all our server endpoints, the most important parts of our Android application and few custom UI components which we are going to build using Jetpack Compose. I'm going to teach you how to create a custom UI component called Rating Widget, using Jetpack Compose, it will look amazing.

Next you will learn how to implement a swipe to refresh functionality in your app, how to implement a palette API so you can display dynamic colors into your layout depending on the image we load into our Screen. And many other different things Bottom Line, there is a lot of work to do, so get ready, because this will be quite of a journey.

So what are you waiting for developers. Let's get started.

Enroll now

What's inside

Learning objectives

  • Develop an android application
  • Develop a backend server with ktor
  • Create your own rest api
  • Design app ui using jetpack compose ui toolkit
  • Clean architecture + use cases
  • Create and configure a backend server
  • Learn about server engines
  • Learn about server modules
  • Learn about server plugins
  • Handle server requests and responses
  • Display static content on the server
  • Templating
  • Auto-reload server feature
  • How to use postman
  • Generate ktor project
  • Create and handle server endpoints
  • Implement serialization
  • Custom headers
  • Static pages
  • Testing server endpoints
  • Paging 3 library with jetpack compose
  • Offline caching with remote mediator
  • Work with multiple paging sources in android studio
  • Room as a local database
  • Dependency injection on both server and android project
  • Dependency injection with koin
  • Dependency injection with dagger-hilt
  • Implement on boarding screens
  • Implement compose navigation
  • Implement swipe to refresh
  • Search widget - custom ui component with jetpack compose
  • Rating widget - custom ui component with jetpack compose
  • Ordered list - custom ui component with jetpack compose
  • Info box - custom ui component with jetpack compose
  • Testing custom ui components
  • Testing android application (partially)
  • Shimmer effect
  • Beautiful app design
  • Animated splash screen
  • Palette api
  • Dynamic layout colors
  • Extract colors from an image and apply them into the layout
  • Mvvm
  • Retrofit
  • Send http requests
  • Kotlinx serialization
  • Coil image loading library
  • Horizontal pager
  • Pager indicators
  • System ui controller
  • Both light and dark theme design
  • Server deployment on heroku
  • And more...
  • Show more
  • Show less

Syllabus

Introduction

Backend Server - Source Code | https://github.com/stevdza-san/BorutoServer
Android App - Source Code | https://github.com/stevdza-san/BorutoApp

Read more

Auto-Reload feature does not work well. Sometimes it might work and sometimes might not. I've searched for an answer but it appears that this feature is still not stable. My suggestion would be not to use it for now. I'll make a new video however when something changes regarding that issue.

I've made an update video in the last section, about migrating from an old withTestApplication() function.

Accompanist Pager library has been DEPRECATED. You can check out the last section of this course where I've showcased how to migrate away from that library. If you have any questions, feel free to comment below. :)

Okay so here I've made a mistake, instead of using 'TimeUnit.SECONDS', I've used 'TimeUnit.MINUTES'. This mistake will be fixed in lecture under the name of 'Display Shimmer Effect' (#59)

In this video I've made one mistake. In the provideDatabase() function in DatabaseModule, as a return type, instead of "BorutoDatabase" I've added RoomDatabase. That will be fixed in the 'Create GetAllHeroes Use Case' video. :)

I have updated the code for Coil, from now on we are no longer using rememberImagePainter, now we are using an AsyncImage composable, which is the part of a Coil library. I've made a video about that update in the last section of this course.

Here we haven't actually implemented a paging when searching heroes on our backend server. When searching we will receive all hero results in a single page. Because if you recall when sending a response from the server (Search Heroes endpoint), we are not including prevPage/nextPage values. I have decided not to use paging with our endpoint for searching heroes, because in most cases when searching items like that, you just expect to receive a single result matching the query.

However at the end of this course this will be actually your homework. After you complete this whole course you will gather the knowledge necessary to complete this homework, and properly implement paging with our search heroes endpoint as well. The solution will include modifying both server and android app project. It's gonna be fun! I will not upload a solution for that, instead you will have to send that homework directly to me, so I can check it out and maybe give you some hints. :)

By doing this kind of homework you will prove to not just me, but more importantly to yourself that you are capable of resolving this kind of issues directly with the real working projects.

And as I already said, I will make a new video at the end of this course explaining this homework. Best of luck!

SwipeRefresh() composable has been deprecated. I've updated the source code in my Github repository. Check the latest branch (#10).

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers Jetpack Compose, a modern UI toolkit for building native Android apps, which is now the recommended approach by Google
Explores Ktor, a Kotlin framework for building scalable and high-performance backend applications, which is useful for modern development
Teaches Paging 3 library, which is useful for efficiently loading and displaying large sets of data, enhancing user experience in Android apps
Includes server deployment on Heroku, which allows developers to quickly deploy and host their backend applications in the cloud
Requires learners to migrate away from a deprecated Accompanist Pager library, which may require additional time and effort
Teaches the use of the Palette API, which allows for dynamic color extraction from images, enhancing the visual appeal of Android applications

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Build modern android app with ktor backend

According to learners, this course offers a highly practical and comprehensive approach to building a full-stack application using Kotlin. Students particularly appreciate learning both modern Android development with Jetpack Compose and building a backend REST API with Ktor in a single project. The course is described as providing a solid foundation and covering a wide range of relevant technologies, including Paging 3, ROOM, Dagger-Hilt, and testing. Many found the hands-on project invaluable for applying concepts. While the course covers many topics, some learners note that certain areas could benefit from deeper dives, and keeping up with rapidly evolving libraries like Compose and Ktor can be a challenge.
Instructor updates course for deprecations.
"The instructor is active and updates the course to address deprecated libraries."
"Appreciate the videos explaining how to migrate from deprecated features like the old Pager library."
"It's good to see the course is maintained to keep up with framework changes."
Good start to building a Ktor REST API.
"This was my first time using Ktor, and the course provided a solid introduction."
"Learning how to set up endpoints and handle requests/responses with Ktor was straightforward."
"It covers the essential features needed to build a functional backend."
"The backend part complements the Android development nicely."
Uses Jetpack Compose, Paging 3, ROOM, Hilt.
"Learning Jetpack Compose and integrating it with MVVM and Paging 3 was incredibly useful."
"The coverage of Paging 3 with Remote Mediator and ROOM was very clear and practical."
"Dependency Injection with Dagger-Hilt was well explained and implemented."
"It uses current best practices for Android development."
Build a real application with modern libraries.
"The hands-on coding and projects are the strongest part of the course for me."
"Building a real-world app like this helped solidify everything I learned."
"Using modern libraries like Jetpack Compose, Paging 3, and Hilt was great for practical skills."
Learn both Android front-end & Ktor backend.
"I really enjoyed learning how to build the backend with Ktor alongside the Android app."
"Most courses focus on just one side, but this one connects the dots between client and server."
"Building a complete application, from API to UI, was the most valuable part for me."
"Understanding how the Android app communicates with the Ktor server is a key takeaway."
Some areas could use more detailed explanation.
"Could use more in-depth coverage on error handling and edge cases in the API."
"Testing is introduced, but more comprehensive testing strategies would be beneficial."
"Deployment part is basic and could be expanded upon for production scenarios."
Some libraries/features may become outdated.
"Keeping up with Jetpack Compose changes can be difficult as it evolves rapidly."
"A few libraries used needed minor adjustments due to updates after the video was made."
"This is a general challenge with fast-moving tech, not just this course."
May be fast for beginners; assumes some knowledge.
"The course moves quite quickly at times, especially if you're new to some of the concepts."
"I would recommend having some prior experience with Kotlin and basic Android development."
"Some topics, like clean architecture or dependency injection, are covered quickly."
"Not ideal for absolute beginners without any programming background."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Build Modern Android App with REST API and Ktor Server with these activities:
Review REST API Concepts
Solidify your understanding of REST API principles before diving into Ktor server development.
Browse courses on REST API
Show steps
  • Read articles on RESTful architecture and best practices.
  • Review HTTP methods (GET, POST, PUT, DELETE) and status codes.
  • Practice designing API endpoints for common data operations.
Review 'Modern Android Development with Jetpack Compose'
Enhance your Jetpack Compose skills with a comprehensive guide to modern Android development.
Show steps
  • Read the book, focusing on chapters relevant to the course content.
  • Implement the code examples and experiment with different UI components.
Review 'Kotlin Coroutines: In-depth'
Deepen your understanding of Kotlin Coroutines for effective asynchronous programming in Android and Ktor.
Show steps
  • Read the book, focusing on chapters related to concurrency and asynchronous operations.
  • Experiment with the code examples provided in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple CRUD API with Ktor
Gain hands-on experience with Ktor by building a basic CRUD (Create, Read, Update, Delete) API.
Show steps
  • Set up a new Ktor project with routing and serialization plugins.
  • Define data models and endpoints for CRUD operations on a single resource.
  • Implement request handling logic and data persistence (in-memory or using a simple database).
  • Test the API endpoints using Postman or a similar tool.
Document Your Learning Journey
Reinforce your understanding by documenting your learning process, challenges, and solutions.
Show steps
  • Create a blog or a series of notes documenting your progress.
  • Summarize key concepts and techniques learned in each module.
  • Share your insights and code snippets with the online community.
Jetpack Compose UI Challenges
Sharpen your Jetpack Compose skills by tackling UI challenges and recreating existing designs.
Show steps
  • Find UI design inspiration on Dribbble or Behance.
  • Choose a design and try to recreate it using Jetpack Compose.
  • Focus on layout, styling, and animations.
Contribute to a Ktor or Jetpack Compose Library
Deepen your understanding and contribute to the community by contributing to an open-source project.
Show steps
  • Find a Ktor or Jetpack Compose library on GitHub.
  • Identify a bug or a feature request.
  • Submit a pull request with your solution.

Career center

Learners who complete Build Modern Android App with REST API and Ktor Server will develop knowledge and skills that may be useful to these careers:
Mobile Application Developer
A Mobile Application Developer specializes in crafting apps for mobile platforms, including user interface development, data handling, and device-specific functionalities. This course is directly relevant for this role as it offers experience in designing a modern Android application using Jetpack Compose and connecting it to a backend server. The course's focus on testing, offline caching, and networking with Retrofit will help any Mobile Application Developer to be successful and this course would be an excellent choice for someone wishing to pursue this career.
Android Developer
An Android Developer builds applications for the Android operating system, often working with user interface design, data management, and backend communication. This course provides a comprehensive look at building a modern Android app by teaching the use of Jetpack Compose for UI, Retrofit for networking, and ROOM for local data persistence. It also covers important aspects of application architecture, dependency injection, and testing which greatly aids success in the Android Developer role. The hands-on experience gained from developing both the app and a backend server will be very useful for aspiring Android Developers.
Backend Developer
A Backend Developer designs and builds the server-side logic that powers applications. This course is a great fit for this career, as it covers the Ktor framework for creating REST APIs. It dives into handling server requests and responses, designing endpoints, and working with databases. A Backend Developer needs to understand these topics well, and this course provides this understanding by building a robust REST API and deploying it to Heroku. This course will give a person interested in this career hands-on experience.
API Developer
An API Developer creates and maintains Application Programming Interfaces that allow different software applications to communicate. This course is directly relevant, as it teaches how to build a REST API using the Ktor framework. A person in this role must be able to handle requests and responses, manage endpoints, implement serialization and deploy their API successfully. This course covers these topics through hands-on experience and is an ideal starting place for a successful career as an API Developer.
Full-Stack Developer
A Full Stack Developer works on both the front-end and back-end of applications. This course provides relevant skills for this career by teaching how to build both an Android application and a backend server. It covers building REST APIs with Ktor, designing user interfaces with Jetpack Compose, and handling data persistence with ROOM. A Full Stack Developer needs to be comfortable with both client and server side development, and this course offers experience in both areas and will be very useful in beginning a career as a Full Stack Developer.
Software Engineer
A Software Engineer is involved in designing, developing, and maintaining software systems; this role requires a solid understanding of programming, data structures, and architectural patterns. This course helps build a foundation in many of these areas by providing hands-on experience in building an entire application with a backend server, including working with REST APIs, databases, and user interfaces. This course would be useful to a Software Engineer who wants to build a broad skill set and a deeper understanding of modern app development.
UI Developer
A UI Developer specializes in creating the user interface of applications. This course can be very useful for a UI Developer, because the course teaches design with Jetpack Compose, a modern UI toolkit for Android. The course also integrates UI components, tests them and connects a mobile app to a backend server. A UI Developer interested in mobile development will benefit from the course's focus on building custom UI components and integrating them into a functional app. This course fits well with this career role.
Mobile Software Architect
A Mobile Software Architect is responsible for the high-level design and structure of mobile applications. This course provides hands-on experience in building a complete Android application and its backend, which helps build a foundation of how various components interact. This course covers important topics such as building REST APIs, implementing offline caching, and developing UI. This course can help lead to a successful role as a Mobile Software Architect.
System Architect
A System Architect designs the structure of the software system, including the interrelation between software components, databases, and hardware. This course may be useful, as it touches on many of these topics. For example, it covers how an Android application interrelates with a backend server through a REST API. It also covers how to structure data in databases, and how to test different points of a software system. This can help a System Architect gain a practical understanding of different software components.
Technical Lead
A Technical Lead oversees a team of developers and ensures the technical aspects of a project are on track, which requires a broad understanding of software development practices. This course may be useful, as it provides a look at the entire process of mobile app development, including building the backend server, designing the client application, and implementing the communication between these two parts. A Technical Lead can use this course to build their technical skills and gain a grasp of modern technologies in the mobile space.
Software Development Manager
A Software Development Manager oversees software development projects, and this often requires a high-level of understanding of all aspects of the development process. This course offers experience in building an entire application from the ground up, including developing the backend and frontend components, connecting them with a REST API, and ensuring everything works smoothly with proper testing. This course may be helpful to a Software Development Manager who wishes to understand some of the latest technologies used in mobile development.
Database Administrator
A Database Administrator manages the organization and security of databases. This course has some connection to this role, as it teaches about using ROOM as a local database and implementing caching mechanisms. A Database Administrator can use this course to better understand how mobile applications handle data, and the technologies and patterns that are used. This course may be especially useful for a Database Administrator who would like to better understand how mobile apps use and manage data.
Solutions Architect
A Solutions Architect designs and guides the implementation of software solutions using specific technologies to meet business needs. This course may have some relevance, as it teaches how a mobile app and server can be integrated together with a REST API. A Solutions Architect can use this course to better understand modern app development technologies and patterns, including how to structure backend and frontend applications and develop a system that communicates properly.
DevOps Engineer
A DevOps Engineer focuses on bridging the gap between software development and IT operations, often working with server deployments and automation. This course may be relevant, as it demonstrates how to deploy a backend server on Heroku. A DevOps Engineer can use the course to better understand the deployment process and the technologies used in server-side development. This course may serve as a useful introduction to this area for a DevOps Engineer.
Quality Assurance Engineer
A Quality Assurance Engineer tests software to find bugs and ensure it meets the required standards. This course may help someone in this role, as it teaches how to test both the backend server and the Android application. A Quality Assurance Engineer can use the course to better understand how to conduct practical tests, especially in the context of a mobile application and its REST API. This course may provide some valuable experience to a Quality Assurance Engineer.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Build Modern Android App with REST API and Ktor Server.
Provides a deep dive into Kotlin Coroutines, which are essential for asynchronous programming in both the Android app and the Ktor server. It covers advanced topics such as context, cancellation, and exception handling. While not strictly required, it will greatly enhance your understanding of the underlying mechanisms and enable you to write more efficient and robust code. This book is more valuable as additional reading than as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser