Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Build Modern Android App with REST API and Ktor Server
Introduction
Introduction (2:38)
Project Repositories and Resources (1:53)
Introducing with Ktor Framework
Introducing with the Ktor Framework (2:20)
Download & Install IntelliJ IDEA (2:02)
Create Ktor Project Manually (18:15)
Ktor Project Generator (6:40)
Servers & Configurations (5:35)
Modules (5:53)
Plugins (6:43)
Introducing with Postman (5:32)
Requests/Responses (16:19)
Static Content (6:24)
Templating (6:50)
Auto-Reload (8:21)
Let's Build our Backend Server
Setup the Project - Server (7:45)
Install Plugins (7:13)
Create Model Classes (6:12)
Create HeroRepository (4:54)
Create Root Endpoint (3:22)
Create AllHeroes Endpoint - Part 1 (11:19)
Create AllHeroes Endpoint - Part 2 (19:46)
Create SearchHeroes Endpoint (9:02)
Status Pages (7:26)
Let's Test our Backend Server
Testing ROOT Endpoint (6:10)
Testing All Heroes Endpoint - Part 1 (19:24)
Testing All Heroes Endpoint - Part 2 (4:13)
Testing Search Heroes Endpoint (8:30)
Let's Build our App!
Setup the Project - App (12:47)
Setup Navigation (11:16)
Create Hero Entity (6:19)
Create HeroDao & BorutoDatabase (7:22)
Create HeroRemoteKey Entity & Dao (7:07)
Create DatabaseConverter class (7:09)
Setup Dagger-Hilt (5:38)
Design Splash Screen (9:39)
Animate Splash Screen & Apply StatusBar Color (5:22)
Design Welcome Screen - Part 1 (13:01)
Design Welcome Screen - Part 2 (11:03)
Design Welcome Screen - Part 3 (13:07)
Setup DataStore Preferences (14:20)
Create Repository & First Use Cases (7:30)
Handle On Boarding Pages & Navigation (13:05)
Home Screen - Design Top Bar (7:22)
Create ApiResponse & BorutoApi (6:27)
Create NetworkModule object (8:18)
Introducing with Paging 3 (7:45)
About Remote Mediator (4:27)
Implement RemoteMediator and load() function - Part 1 (17:35)
Implement RemoteMediator and load() function - Part 2 (15:00)
Create RemoteDataSource & Implementation (12:43)
Create GetAllHeroes Use Case (7:53)
Design RatingWidget - Filled Star (21:10)
Design RatingWidget - Half Filled Star (9:50)
Design RatingWidget - Empty Star (2:23)
Design RatingWidget - Calculation (17:39)
Design HeroItem (25:10)
Load and Display Data from the Server (11:49)
Create Animated Shimmer Effect (17:31)
Display Shimmer Effect (11:54)
Implement initialize() function - RemoteMediator (18:16)
Modify Server Test Function (2:57)
Caching Header Explained (5:18)
Handle Paging Error (17:51)
Search Screen - SearchWidget (17:24)
Search Screen - SearchViewModel (11:45)
Search Screen - Implement SearchHeroesSource (10:23)
Search Screen - Implement SearchHeroesUseCase (9:00)
Search Screen - Display Searched Heroes (13:42)
Implement Swipe to Refresh (11:12)
Details Screen - Info Box (12:12)
Details Screen - Ordered List (6:25)
Details Screen - LocalDataSource & GetSelectedHeroUseCase (7:50)
Details Screen - DetailsViewModel (11:20)
Details Screen - Design BottomSheetContent (21:44)
Details Screen - Design BackgroundContent (10:38)
Details Screen - Animate BackgroundContent Image (10:37)
Details Screen - Animate Sheet Radius (3:46)
About Palette API (2:45)
Create PaletteGenerator Object (10:14)
Implement Palette Colors in Details Screen (20:10)
Let's Test our App
Let's start Testing! (3:24)
Create FakeBorutoApi (8:11)
Testing SearchHeroSource (17:18)
Create FakeBorutoApi2 (4:53)
Testing HeroRemoteMediator (16:42)
About UI Testing (5:31)
Testing Search Widget (18:08)
Testing Rating Widget (10:39)
Backend - Alternative Approach
Alternative Approach Showcase (24:32)
Server Deployment & Heroku
About Heroku (4:32)
Deploy Server on Heroku (15:11)
Final Word
Final Word (2:13)
Course Updates
Update #1 - Code Cleanup (10:21)
Update #2 - Dependency Update, Code Cleanup (6:01)
Update #3 - Migration to Ktor 2.+ (15:49)
Update #4 - Migrate to New Splash API (10:15)
Update #5 - KSP and Accompanist Pager Migrations (11:32)
Update #6 - Accompanist Swipe Refresh and SystemUIController migration (4:04)
Update #7 - KTS, Material3, PullToRefresh and more... (2:43)
Display Shimmer Effect
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock