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

  Рет қаралды 142,533

Philipp Lackner

Philipp Lackner

Күн бұрын

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:
pl-coding.com/multi-module-co...
or learn to create any custom UI you like using canvas:
elopage.com/s/philipplackner/...
Get my FREE PDF about 20 things you should never do in Jetpack Compose:
pl-coding.com/jetpack-compose...
Join this channel to get access to perks:
/ @philipplackner
Get the initial source code for this video here:
github.com/philipplackner/Sto...
Get the final source code here:
github.com/philipplackner/Sto...
Join my Discord server:
/ discord
Regular programming advice on my Instagram page: / _philipplackner_
Checkout my GitHub: github.com/philipplackner
You like my free content? Here you can buy me a coffee:
www.buymeacoffee.com/philippl...
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)

Пікірлер: 262
@matinaghalarkhani4802
@matinaghalarkhani4802 2 жыл бұрын
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.
@PhilippLackner
@PhilippLackner 2 жыл бұрын
🙏❤️
@walrider7374
@walrider7374 Жыл бұрын
because a good teacher can't never stop learning
@osisuper98
@osisuper98 2 жыл бұрын
Dude is just unbelievable! You are the reason I have a job.
@PhilippLackner
@PhilippLackner 2 жыл бұрын
🙏🙏❤️
@chax255
@chax255 29 күн бұрын
I am next in that list
@harisai3580
@harisai3580 2 жыл бұрын
Never expected the entire video without parts. TQSM
@tonnie7079
@tonnie7079 2 жыл бұрын
Just landed from Multi-Module Architecture and the ink on my Certificate is not even dry, thx Philipp for the exposure.
@MuhammadPandam
@MuhammadPandam 2 жыл бұрын
Always love your tutorials. I learn a lot from you
@francismwangi9752
@francismwangi9752 Жыл бұрын
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
@fracta7
@fracta7 Жыл бұрын
This is a great tutorial. I have learnt many things from this. Many of the things I learnt here were applied on my personal project. Thank you for that!
@maciejpelc9039
@maciejpelc9039 Жыл бұрын
Thank you my man, you are helping to create new generation of devs!
@ubersticks
@ubersticks 2 жыл бұрын
Thank you for your work Philipp. I enjoyed it and it is always educational to see your designs.
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Thank you, glad it's helpful!
@jatinvashisht4293
@jatinvashisht4293 2 жыл бұрын
Just finished the video, hands down the best video on best practices I ever watched (including Philipps')
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Thank you🙏
@flowzk921
@flowzk921 2 жыл бұрын
Whew! finally finished this, learn't a lot, first time working with CSV rather than Json, many many Thanks Philip!!!
@MetehanBOLAT
@MetehanBOLAT 2 жыл бұрын
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. 👊
@raymondmichael4987
@raymondmichael4987 2 жыл бұрын
Sure this is a gold in it self, given for free his massive hours of work. We appreciate his work
@ThuyLe-mg3yi
@ThuyLe-mg3yi 2 жыл бұрын
L
@ThanhNguyen-se4hb
@ThanhNguyen-se4hb 2 жыл бұрын
@@raymondmichael4987 q
@faysaldeve385
@faysaldeve385 2 жыл бұрын
Thank you. I will watch this whole video because I really like it when the videos are long
@naveen12051990
@naveen12051990 2 жыл бұрын
Coded along the way till the end..very helpful looking forward for more.
@ChaosFleischer
@ChaosFleischer 4 ай бұрын
Thank you for this Amazing Tutorial! After i fixed some gradle issues its running now!!!!
@furkanbademli8402
@furkanbademli8402 3 ай бұрын
how to solve that? i m having gradle issues,too.
@paulvickers8059
@paulvickers8059 2 жыл бұрын
This looks amazing, can't wait to start this tomorrow.
@osmanmusse9432
@osmanmusse9432 2 жыл бұрын
Thanks you Philip your really helping the android community out
@mohammadansar2987
@mohammadansar2987 2 жыл бұрын
thank you so much philipp, appreciated! your dedication and hard work.
@garrettstrobel7051
@garrettstrobel7051 2 жыл бұрын
This is so good. Thank you for the time and thought that went into this.
@Kylegil00
@Kylegil00 2 жыл бұрын
This videos have helped me so much. Thank you. Going to start this project today
@fauzanajiprayoga2955
@fauzanajiprayoga2955 2 жыл бұрын
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
@MrVipulLal
@MrVipulLal 5 ай бұрын
All your videos are so good! Thanks!
@Revakovskyi
@Revakovskyi Жыл бұрын
Perfect!!!! Nothing to say more except THANKS a lot for your course and teaching!!! Perfect!!!
@PhilippLackner
@PhilippLackner Жыл бұрын
Glad you like it!
@mertgundogan2623
@mertgundogan2623 2 жыл бұрын
Thank you Philipp. Great tutorial. 👌
@Team_8x
@Team_8x Ай бұрын
Thanks awesome, you are a great inspiration and teacher!
@YouGuto
@YouGuto 2 жыл бұрын
Man! You are the best... looking forward for the Tests
@sijanneupane
@sijanneupane 2 жыл бұрын
Added to my watch later! will surely follow next week 🔥❤
@federicocreti4699
@federicocreti4699 2 жыл бұрын
Good course, it has been a pleasure to follow! TY man
@ChrisAthanas
@ChrisAthanas 2 жыл бұрын
I finished the app and added error handling, I learned a lot I fixed the date problem by using the first stock data day returned from api
@sh3r1p49
@sh3r1p49 2 жыл бұрын
Thank you very much Philipp!
@ARIZONAMUSIC
@ARIZONAMUSIC Жыл бұрын
Damn! What a man! We are not worthy of such concentrated delicious tutorials :)
@UpLiftingU007
@UpLiftingU007 2 жыл бұрын
thanks philipp for the tutorial really amazing
@pereyrarg11
@pereyrarg11 Жыл бұрын
Thanks for sharing your acknowledgement!
2 жыл бұрын
Very good video! Thanks a lot for your outstanding work here!!
@minyounglee8528
@minyounglee8528 2 жыл бұрын
As always, thank u so much for your work!
@nsikakisaac7872
@nsikakisaac7872 2 жыл бұрын
You're the GOAT!! Thanks for consistently putting out awesome content.
@sepideh1085
@sepideh1085 2 жыл бұрын
precious tutorial . Absolutely your channel is on of the main reason has kept me motivated
@PhilippLackner
@PhilippLackner 2 жыл бұрын
❤️
@meetsoni1938
@meetsoni1938 Жыл бұрын
Your efforts are highly appreciated🙏❤
@ankitverma3932
@ankitverma3932 2 жыл бұрын
Some extraordinary effort.. cheers to you..
@VillageWoodWorks
@VillageWoodWorks 2 жыл бұрын
Congratulations on a 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!
@PhilippLackner
@PhilippLackner 2 жыл бұрын
🙏🙏🙏
@rushidesai2836
@rushidesai2836 11 ай бұрын
Great content Philip!
@elfarouk3306
@elfarouk3306 2 жыл бұрын
man I really needed this And I said to my self I wish philipp has a tutorial on it . Like before Watching .
@miladhashemzadeh5626
@miladhashemzadeh5626 2 жыл бұрын
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🙌🙏
@brunno_gonzalez_dev
@brunno_gonzalez_dev 2 жыл бұрын
🔥🔥🔥🔥🔥🔥🔥 Thank you very much Philipp!
@hectorvector4887
@hectorvector4887 2 жыл бұрын
Thanks So much Sir.. learning from the best
@NatiAgame
@NatiAgame 7 ай бұрын
Simply, thank you 😊
@rafamichalski6150
@rafamichalski6150 Жыл бұрын
You are right - this was an amazing course.
@hubinsord9009
@hubinsord9009 2 жыл бұрын
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
@AntonisKaklis
@AntonisKaklis Жыл бұрын
Great tutorial Philipp! Awesome content from you as always! Thank you. I would like to ask a question though. If we would like to add let's say Favorites functionality for some stocks. How we should approach this?
@sovrinfo
@sovrinfo 2 жыл бұрын
Thank you a lot Phillipp
@snehilsinha4689
@snehilsinha4689 2 жыл бұрын
Absolutely love this ! 🔥❤
@rahathossainhimel7177
@rahathossainhimel7177 2 жыл бұрын
Thank You. You are amazing. Love You.
@techmarinar
@techmarinar 2 жыл бұрын
This is very helpful thank you so much
@lokiksoni3519
@lokiksoni3519 2 жыл бұрын
Great work philipp.
@BunsenBurns
@BunsenBurns 2 жыл бұрын
your new android studio colors are aesthetic af
@sergeytarasov5041
@sergeytarasov5041 2 жыл бұрын
Thank U Philipp, its good and easy!
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Glad you liked it!
@user-cs4dl3kk8r
@user-cs4dl3kk8r 2 жыл бұрын
Thank you very much man!
@Usam43
@Usam43 2 жыл бұрын
Thank you so much, loved this video. I like what you do and how you do it. I would like to take my expertise to the next level, hope you would help me out on that. Hopefully, I will keep learning from you more in future 🙏. Take ❤ brother.
2 жыл бұрын
Good job. Thank you very much
@yonirozental2549
@yonirozental2549 2 жыл бұрын
Great job sir!
@nishantabhishek8199
@nishantabhishek8199 6 ай бұрын
thanks for such an amazing content.
@attiaaliattia
@attiaaliattia 2 жыл бұрын
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.
@orangasli2943
@orangasli2943 Жыл бұрын
Show some video and then talk
@DanielRodriguez-ds2qs
@DanielRodriguez-ds2qs 9 ай бұрын
@@orangasli2943 Why does he have to create a video to do so?, pointing things out is not wrong albeit he could have started the comment with something along the lines of "Great video!, (...) I do want to point out something, in my opinion (...)"
@amineayachi335
@amineayachi335 2 жыл бұрын
amazing 🤩 well done 👍
@devstuff2576
@devstuff2576 2 жыл бұрын
Thank You So so much brother
@hussein9577
@hussein9577 2 жыл бұрын
well done Philipp
@rokydas9779
@rokydas9779 2 жыл бұрын
You are just awesome bro. Lots of love to you
@joseivanpenuelasontiveros926
@joseivanpenuelasontiveros926 11 ай бұрын
All Android devs out there, guys, the content of this video is super valuable, I don't even think this should be free to watch, learn as much as you can from it, the content of this video really worths a lot and it's free!, thanks Philipp for this video!
@theg4meover988
@theg4meover988 Жыл бұрын
awesome tutorial !
@abdelazizyasser3512
@abdelazizyasser3512 2 жыл бұрын
Thank u so much philipp, i want to learn more about canvas, it's very difficult but i'll try 😅
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Yeah, my canvas course goes through it from very simple to difficult things. This video should give you a basic first understanding as well :)
@wolfrudel7624
@wolfrudel7624 Жыл бұрын
Really nice video. Thanks❤ Why do you use mutableState (COMPOSE) and not stateFlow in your viemodel?
@yochilloutfam
@yochilloutfam 4 ай бұрын
So funny that I actually did it on Monday and the yesterday came to be sunday as well for me. What a coincidence. Lol :D
@dev_jeongdaeri
@dev_jeongdaeri 2 жыл бұрын
super amazing!
@dailybrainexercises
@dailybrainexercises 2 жыл бұрын
Thank you Philip.
@PhilippLackner
@PhilippLackner 2 жыл бұрын
You're welcome
@argahutama
@argahutama 2 жыл бұрын
amazing tutorial
@367labs
@367labs Жыл бұрын
Thank you bro 😎
@relaxwithmusic9036
@relaxwithmusic9036 2 жыл бұрын
Thanks for such content
@JohanAlbrectsen
@JohanAlbrectsen 2 жыл бұрын
Amazing video!
@67Diadem
@67Diadem 2 жыл бұрын
Great!!! Thanks a lot
@dreamer6228751
@dreamer6228751 2 жыл бұрын
Thank for new best video!))
@saadowain3511
@saadowain3511 2 жыл бұрын
Thanks Philipp . Any discount for your courses !?
@trendystatuses161
@trendystatuses161 2 жыл бұрын
If possible please make an e-commerce app tutorial as well.
@IoannisAnifantakis
@IoannisAnifantakis 2 ай бұрын
Philipp for President!
@karamba6936
@karamba6936 Жыл бұрын
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.
@dougphillips5686
@dougphillips5686 2 жыл бұрын
Love it. Can you do a tutorial for developing a launcher and channel app for android tv?
@MichaelTirkey0719
@MichaelTirkey0719 2 жыл бұрын
Thank you so much for selflessly creating such amazing content @Philipp Always I’ve learned so much from your videos and can’t wait for more :) lots of love from India
@ahmedaboshady9733
@ahmedaboshady9733 2 жыл бұрын
thank you very much
@liosha2007
@liosha2007 2 жыл бұрын
Hello! Thank you so much for your content and for videos like this. I have already watched all your videos connected to Compose, but still found at least 5 things to make better in my apps watching this video. Also I would like to ask you to start making sample apps with edit/update/delete functionality. Apps with read/cache functions are not so difficult and you already have lots of samples and advices connected to that. As for CRUD apps, there are lots of places for which it is difficult to determine best way to do them. For example, the same app with one on the video, but with possibility to delete/create entries. When cache should be updated, how it should be updated, what to do in case of internet unavailable (deny modifying or caching changes and then syncing) and so on. How to use values from datastore in API requests, on which level it is correct to access datastore in cause of using it as part of API requests and in te same time as app settings. Anyway, thanks so much for content and sorry for my english:)
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Thanks, but my channel is full of crud tutorials 🤔 check my note app course for example
@jayantkumar1954
@jayantkumar1954 2 жыл бұрын
Amazing ❤️👌
@shrutivyas1965
@shrutivyas1965 Жыл бұрын
Awsome content, I have a query: 1:40 Why do we need to add @Inject when we don't need any object there? Thank you
@marklurie8358
@marklurie8358 2 жыл бұрын
Saved for watch later ;)
@segov1
@segov1 2 жыл бұрын
New viewer here and instant sub for me. Great content with clear explanations and good practices. Thanks for making this & sharing
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Glad it helped and welcome on board 🤙
@sadullaubaydullayev2062
@sadullaubaydullayev2062 2 жыл бұрын
Thank you
@radhiosoftifybd8982
@radhiosoftifybd8982 2 жыл бұрын
Thank you man
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Happy to help
@user-wc8nw9bt3p
@user-wc8nw9bt3p 2 жыл бұрын
Thank you thank you you are my saver
@sahilfarhan5712
@sahilfarhan5712 2 жыл бұрын
Great man.... Always bringing best content....and I think you could have a different module for the network it would be much better instead of packages...
@PhilippLackner
@PhilippLackner 2 жыл бұрын
Not for a tiny app like this
@codeforandroid
@codeforandroid 2 жыл бұрын
Very Nice course bud :)
@emmanuelbamidele5064
@emmanuelbamidele5064 2 жыл бұрын
Hi Philip Thanks for this wonderful tutorial, I would like to know the explanation for the step you carried out at the 22:57 of your video where you created a CompanyListingEntity.toCompanyListing() method based on my understanding I would have created the toCompanyListing() without the CompanyListingEntity before it but you didn't create it that way. I also understand that the way you created the method it affords you direct access to the variable in the CompanyListingEntity class. I would really like to know what rule explains dis
@subhradeepbera2774
@subhradeepbera2774 9 ай бұрын
Hey Philipp! Make more of these large videos for KZbin!
@PhilippLackner
@PhilippLackner 9 ай бұрын
My channel is full of these 😄
@sanjaybhatikar
@sanjaybhatikar 10 ай бұрын
Wow, Philipp! You are like a Gandhi who codes ;)
@sarveshvyas4384
@sarveshvyas4384 2 жыл бұрын
Awesome😍😍🔥🔥
Универ. 10 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:04:59
Комедии 2023
Рет қаралды 2,7 МЛН
Please be kind🙏
00:34
ISSEI / いっせい
Рет қаралды 173 МЛН
Khóa ly biệt
01:00
Đào Nguyễn Ánh - Hữu Hưng
Рет қаралды 20 МЛН
I’m just a kid 🥹🥰 LeoNata family #shorts
00:12
LeoNata Family
Рет қаралды 17 МЛН
I Played Fabiano Caruana
12:03
Anna Cramling
Рет қаралды 107 М.
How to Validate Forms with Clean Architecture (You're Doing it Wrong)
41:08
Should You Use Compose State or StateFlow in Your ViewModels?
13:59
Philipp Lackner
Рет қаралды 70 М.
How to Build a Calculator with Jetpack Compose - Android Studio Tutorial
43:24
All Rust string types explained
22:13
Let's Get Rusty
Рет қаралды 150 М.
How to Build & Deploy an Online Tic Tac Toe With Ktor And Web Sockets
2:01:20
How to Build a Clean Architecture CRUD Note App Using KMM (Android + iOS)
3:05:08
Универ. 10 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:04:59
Комедии 2023
Рет қаралды 2,7 МЛН