How to Build a Clean Architecture Stock Market App 📈 (Jetpack Compose, Caching, SOLID)

preview_player
Показать описание
This video will teach you all the relevant concepts you need to build a solid app with the clean architectural guidelines. You'll learn to use dependency injection with Dagger-Hilt, SOLID principles, CSV parsing with OpenCSV, working with remote APIs using Retrofit, local caching with Room, custom drawing on a canvas using Compose and much more.

Get 10% off learning to build industry-level multi-module apps using the code STOCK-MARKET-APP:

or learn to create any custom UI you like using canvas:

Get my FREE PDF about 20 things you should never do in Jetpack Compose:

Join this channel to get access to perks:

Get the initial source code for this video here:

Get the final source code here:

Join my Discord server:

You like my free content? Here you can buy me a coffee:

Introduction (00:00)
Checkpoint 1 - API & DB Setup (09:26)
Checkpoint 2 - StockRepository (30:38)
Checkpoint 2 - CompanyListingsParser (51:12)
Checkpoint 3 - CompanyListingsViewModel (1:04:04)
Checkpoint 4 - Company Listings Screen + DI (1:16:29)
Checkpoint 5 - CompanyInfo Data (1:46:41)
Checkpoint 6 - CompanyInfoViewModel (2:09:14)
Checkpoint 7 - Stock Chart (2:17:50)
Checkpoint 8 - Company Info Screen (2:54:19)
Trying it out (3:04:50)
Рекомендации по теме
Комментарии
Автор

33:00 you created resource class, atleast explain a bit about it, instead of saying "it seems difficult, but it isnt" : (

theuntoldtree
Автор

Dude is just unbelievable! You are the reason I have a job.

osisuper
Автор

You are a lot more qualified than all those university teachers and proffessors. thumbs up my bro and hope to learn a lot more from you.

matinaghalarkhani
Автор

Thank you very much Philipp. It is really a nice and necessary content for Android. Also, thank you for sharing it for free. We have a lot to learn from you. 👊

MetehanBOLAT
Автор

If possible please make an e-commerce app tutorial as well.

trendystatuses
Автор

Thanks Phillip. I enjoyed every single bit of the video. I can't image how much more I'll learn and the skills I'll gain through the premium courses. I plan on buying one someday, to learn more and scale up. Thanks again

francismwangi
Автор

3:02:23 why are we checking for loading state inside the box and not outside, even if loading is false we'll still create that box, Can anyone please help🤔

rahul_spawar
Автор

Always love your tutorials. I learn a lot from you

MuhammadPandam
Автор

This is a list of disadvantages of using extension functions instead of a dependency for the Data Mapper:
Testing might be tricky: if you create a model in the repository class you can’t mock the mapping, so you are forced to test the mapping again.
You lose the dependency inversion: when you are coding the repository you need to have the mapping beforehand, with the mapper instead you just put an interface and don’t care about the actual implementation.
Also whenever you change the mapping your repository needs to be recompiled.
Doesn’t work well with java, in case you have legacy code.
Less reusability: by using a dependency the generic logic of the mapping can be extracted in another class. With an extension function you don’t have the same flexibility.

attiaaliattia
Автор

Congratulations on a <STELLAR> presentation! Your dedication in helping others to help themselves, as they journey to become Android developers has far outpaced others on this platform. I am forever grateful for your commitment in this space. BEST REGARDS!

VillageWoodWorks
Автор

at 1:40:04 i got this error when i rebuild project how can i fix this

3 issues were found when checking AAR metadata:

1. Dependency requires libraries and applications that
depend on it to compile against codename "UpsideDownCake" of the
Android APIs.

:app is currently compiled against android-33.

Recommended action: Use a different version of dependency 'androidx.activity:activity-ktx:1.8.0-alpha02',
or set compileSdkPreview to "UpsideDownCake" in your build.gradle
file if you intend to experiment with that preview SDK.

2. Dependency requires libraries and applications that
depend on it to compile against codename "UpsideDownCake" of the
Android APIs.

:app is currently compiled against android-33.

Recommended action: Use a different version of dependency 'androidx.activity:activity:1.8.0-alpha02',
or set compileSdkPreview to "UpsideDownCake" in your build.gradle
file if you intend to experiment with that preview SDK.

3. Dependency requires libraries and applications that
depend on it to compile against codename "UpsideDownCake" of the
Android APIs.

:app is currently compiled against android-33.

Recommended action: Use a different version of dependency 'androidx.activity:activity-compose:1.8.0-alpha02',
or set compileSdkPreview to "UpsideDownCake" in your build.gradle
file if you intend to experiment with that preview SDK.

AbhishekKumar-fbuq
Автор

Just landed from Multi-Module Architecture and the ink on my Certificate is not even dry, thx Philipp for the exposure.

tonnie
Автор

Thank you a lot my friend always keep going up it's gr8 and you spend so much much of engery for it, please accept my Endless Gratitude. Nice and applicable🙌🙏

miladhashemzadeh
Автор

This is really good, thanks for sharing it for free. i'll save to my watch list. Can't wait to learn from here. You are my incredible online professor ... love from Indonesia <3

fauzanajiprayoga
Автор

I also ran into the NavGraphs class not found issue. According to the setup directions for the compose-destinations library, you need to tell Android Studio to look at the generated folder, add the following code in the Android block of the app level gradle file:
applicationVariants.all {
kotlin.sourceSets {
getByName(name) {

}
}
}

ghostsfo
Автор

Thank you my man, you are helping to create new generation of devs!

maciejpelc
Автор

Hello, thank you for your work. In second part of repository, where we load data from internet, cashe it to database. Then get from database with "" parameter. I think parameter must be querystring.

karamba
Автор

1:30:50 DI Application
1:31:47 DI Modules
1:32:50 DI AppModule
1:37:38 DI RepositoryModule
1:38:44 @Binds
1:40:57 Navigation

hubinsord
Автор

Thank you for providing such great content for free. I have followed your tutorials from the basic Android Tutorials to the recent Clean Code and I am now ready to work on my personal project.

I do wonder what is your current opinion on use cases. In earlier clean tutorials you use use-cases, but here you chose not to and used the repository in the view model.

Do you no longer recommend using use-cases? Or do you use it when it is needed and mix repositories and use cases in the view model? Or was it a simplification for this specific project and you would have used use-cases if it was a larger project.

Camlon
Автор

Nice tutorial . Can you make a tutorial about modular architecture?

yunuscaglyan