How to Make a Clean Architecture Note App (MVVM / CRUD / Jetpack Compose) - Android Studio Tutorial

แชร์
ฝัง
  • เผยแพร่เมื่อ 2 ต.ค. 2024

ความคิดเห็น • 631

  • @PhilippLackner
    @PhilippLackner  3 ปีที่แล้ว +679

    A lot of people asked me if I could also show testing. I thought of doing that here, but the video was already so long.
    Would you like me to make another clean architecture testing guide where I show you how to write unit, integration, end-to-end and UI tests for this note app?

    • @prateekization
      @prateekization 3 ปีที่แล้ว +4

      Yes please

    • @ramasubramanian3154
      @ramasubramanian3154 3 ปีที่แล้ว +5

      defenitely would love that.. Please also make videos explaing implementing bottom Dialog Fragments persistant and modal... There is no proper material or guide on how to implement that in a separate Dialog Fragment class

    • @nadilyt
      @nadilyt 3 ปีที่แล้ว +2

      yes please 🙏

    • @AaronStorey
      @AaronStorey 3 ปีที่แล้ว +1

      Yes please!

    • @hariomsharma8842
      @hariomsharma8842 3 ปีที่แล้ว +1

      Yes defenitely

  • @Landofcoding
    @Landofcoding 2 ปีที่แล้ว +92

    I'm amazed of the amount of work you put in this single video and how you decided to make it a free video because this is a full course honestly

  • @jatinvashisht4293
    @jatinvashisht4293 3 ปีที่แล้ว +3

    Just finished the video
    Best video on clean architecture and jetpack compose ever on internet.
    Thank you Philipp ❤

  • @sijanneupane
    @sijanneupane 3 ปีที่แล้ว +63

    You are changing lives, making them better!
    Thank you for this amazing masterpiece when much needed!

    • @twojaStara698
      @twojaStara698 3 ปีที่แล้ว +2

      We are also changing lifes. After All we are who spend their time for learning and improving

    • @sijanneupane
      @sijanneupane 3 ปีที่แล้ว +7

      @@twojaStara698 Its hard to find someone with constent videos and updating with time, hard to find a mentor, found one, Philip!

    • @pembatamang8233
      @pembatamang8233 3 ปีที่แล้ว

      your son hittin puberty

  • @hellodevs
    @hellodevs 2 ปีที่แล้ว +2

    Congratulations Phillip, for sharing so much quality content here on youtube 🇧🇷 🇧🇷 🇧🇷

  • @pradeep9222
    @pradeep9222 3 ปีที่แล้ว +2

    thank you so much lackner, your video's are absolutely worth for any one, I'm a android intern, initially I struggle too much, but your videos are helping me a lot, I'm watching you since last 2 months. thank you so much for all.

  • @javacore-qk9kd
    @javacore-qk9kd 6 หลายเดือนก่อน +1

    Brother i am not GAY but i have to tell you I LOVE YOU 💖💖 seriously i just wanna be like you, your content is on different level, keep teaching us new things

  • @abdallahalaraby
    @abdallahalaraby 2 ปีที่แล้ว +4

    This is just amazing, I've used clean architecture in one of my previous jobs but seeing it used with Compose and Coroutines is a whole new level, thanks for sharing this, I learned a lot from you!

  • @thkorkem
    @thkorkem 3 ปีที่แล้ว +5

    This video is so helpful. Let me give you a little tip. You can set subclasses of sealed class as data class by moving val orderType from constructor to inside of sealed class and making orderType abstract val. In this way, you will have copy and equals functions and more.

  • @mikelawson7144
    @mikelawson7144 3 ปีที่แล้ว +49

    Clean Architecture from Clean Man sounds different. I wish you to continue clean series (with Mappers, Use Cases, Data-Domain-Presentation, Package by Feature Architecture etc.). Keep going Philipp, You're AWESOME ! ❤️

  • @natevojtik6220
    @natevojtik6220 3 ปีที่แล้ว +1

    I have been looking for a video that explains how to use Room appropriately with Compose while maintaining clean architecture since Compose was publicly available, this is perfect! Thanks so much for all your hard work!

  • @andrewnzioki4385
    @andrewnzioki4385 5 หลายเดือนก่อน

    I don't know how you are able to make an almost ready production app in an hour. Thank you for the invaluable information though

  • @hayatokoyama4034
    @hayatokoyama4034 ปีที่แล้ว

    Thank you man. I appreciate this piece that gives people power and confidence in Android development path. I would like to know anything important about Android Development, so please keep sharing things you think it is good to learn. Thanks bro

  • @AntonioGonzalezsanchez
    @AntonioGonzalezsanchez 2 ปีที่แล้ว +1

    This video absolutely rocks.
    You're fairly good in your code and overall scope while doing this tutorials.

  • @houssemeddinelmasoudi3259
    @houssemeddinelmasoudi3259 3 ปีที่แล้ว +1

    great tutorial great android developer you make it look easy and simple good job man keep going i learned a lot from you

  • @capitalwww
    @capitalwww ปีที่แล้ว

    Great!
    it's so good that you record all the tutorial in one video.

  • @SheikhNasratSharif
    @SheikhNasratSharif 2 ปีที่แล้ว

    Awesome! One single video is good enuf to picture any requirements to fit in a big project right away. Kudos! ❤

  • @Veradux__
    @Veradux__ 3 ปีที่แล้ว +54

    It would be great to see how to set up the project with modules instead of just packages in a separate video, And to see what is so complicated about it! What you're doing is really cool, keep it up

    • @qweqwe1
      @qweqwe1 2 ปีที่แล้ว +1

      absolutely nothing complicated

  • @grzegorzsamojedny
    @grzegorzsamojedny 2 ปีที่แล้ว +1

    It wasn't easy, but I built my app based on this video.
    Great tutorial.
    Thank you

  • @tommy9052
    @tommy9052 2 ปีที่แล้ว

    Thank you Philipp, that helped me a lot! You know when the video is long it really dives deep into some interesting details. Keep up with the good work!

  • @piusgabula
    @piusgabula 3 ปีที่แล้ว +2

    Thanks for the great work Phillip

  • @ARIZONAMUSIC
    @ARIZONAMUSIC 2 ปีที่แล้ว

    Thank you very much, Philipp!
    Smooth and consistent narration.

  • @botapinha
    @botapinha ปีที่แล้ว

    Amazing Philipp, thank you very much for your time and for sharing your knowledge

  • @chuka_obi5167
    @chuka_obi5167 2 ปีที่แล้ว

    Thank you so much Philipp for this course! I learnt so much watching your course. You're a fantastic teacher.
    Merry Christmas to you!

    • @PhilippLackner
      @PhilippLackner  2 ปีที่แล้ว

      Thank you! Merry Christmas to you too!

  • @adambooz9664
    @adambooz9664 10 หลายเดือนก่อน

    Wonderful approach, great job - thanks for this Phillip it's really helpful.

  • @harsh_nandwani
    @harsh_nandwani 2 ปีที่แล้ว

    Man this is just next level stuff for me, learnt a lot from this!
    Thank you very much!

  • @LucasAndradeX
    @LucasAndradeX 3 ปีที่แล้ว +26

    You are making an Awesome content!! But can you please run the application when coding the ui part?? It's easier for us (while coding along) to understand what's going on when we see the application running with the functionality we just coded, instead of writing everything and running only at the end. It would not take much more time to just show it running. Thanks!

    • @AndreiBacalu
      @AndreiBacalu 2 ปีที่แล้ว +1

      i agree...or at least create previews for composables (i know this could take too much time unfortunately)

  • @vagavagus
    @vagavagus ปีที่แล้ว

    Awesome! The code is so clean and concise

  • @dmytromarchuk3023
    @dmytromarchuk3023 3 ปีที่แล้ว

    One more Clean Architecture video? Great!

  • @luckydevil1601
    @luckydevil1601 ปีที่แล้ว

    Incredible content! I wish I ever could become at least half as smart as you! Thank you so much for teaching us so many important things! 😍😍😍

  • @codinginflow
    @codinginflow 3 ปีที่แล้ว +22

    0:22 this pronunciation cracks me up

    • @juzarbharmal9998
      @juzarbharmal9998 3 ปีที่แล้ว +1

      0:31 "I will do you more if you like it and if it gets more views"" very poor choice of words there.

    • @tonnie7079
      @tonnie7079 2 ปีที่แล้ว

      Good for commercial break although too early for a break at 0:22

  • @Kunal-jp8tn
    @Kunal-jp8tn 2 ปีที่แล้ว

    Watched till the end. I always do.

  • @muneerhasan
    @muneerhasan 2 ปีที่แล้ว

    I like your videos because of all in one nature.

  • @shalenmathew
    @shalenmathew 9 หลายเดือนก่อน

    Great video learned a lot of new things

  • @florientmanfo
    @florientmanfo ปีที่แล้ว +7

    It's really a complete course 😄, I'm just a beginner but I've learned and understood a lot through this course. Thank you

  • @RhuanSantos_
    @RhuanSantos_ ปีที่แล้ว

    Your videos are the best! Thanks bro 👊

  • @renanfpedro
    @renanfpedro 2 ปีที่แล้ว

    First, your work is fantastic, and I am very grateful.
    I'm still learning, and maybe I shouldn't be here because I didn't know yet many things you used, like room and flow. So, my bad.
    HOWEVER... because you know so well what you need to do, it seems like you do the work backwards! You create the things you know you will need, but for who is learning, that will only make sense in the end. And even then, I might need to come back and see all again because now I have the info that I need to understand all the code you have written.
    Don't get me wrong, you are awesome, and again, maybe I should have learned more about flow and room first (not in the run), I just want to say that it could be better. Thanks, Philipp!

    • @PhilippLackner
      @PhilippLackner  2 ปีที่แล้ว +1

      Thanks for the feedback :) this video does not have the purpose to teach concepts like flow, coroutines etc. It's an advanced video that teaches clean architecture. If I'd explain every bit of code in all its detail, this video would be 4x as long 😄 for all the single concepts I have Videos explaining them more in depth

    • @renanfpedro
      @renanfpedro 2 ปีที่แล้ว

      @@PhilippLackner You have explained it very well anyway. It's just about the order of things.
      But you are right, that would still increase the time of the video. Thanks for the answer Philipp!

  • @vladyslavpauk3057
    @vladyslavpauk3057 2 ปีที่แล้ว

    Great video. Answered a lot of questions.

  • @pranavbhatkar
    @pranavbhatkar ปีที่แล้ว

    Really Hard work.
    Amazing!

  • @ricardomuiambojunior4816
    @ricardomuiambojunior4816 2 ปีที่แล้ว

    amazing tutorial, as always

  • @tareksellami7346
    @tareksellami7346 2 ปีที่แล้ว

    This is awesome. Thanks a lot for your wonderful work. You are really great. Many thaaaanks ❤❤❤

  • @chauldinlipenga2524
    @chauldinlipenga2524 3 ปีที่แล้ว

    great job sir. patiently waiting for the next one...

  • @erinwolf1563
    @erinwolf1563 2 หลายเดือนก่อน

    really helpfulL, thanks alot Phillip

  • @mahiainti678
    @mahiainti678 ปีที่แล้ว

    Thank you very much! It was very useful

  • @dreamerslab
    @dreamerslab 2 ปีที่แล้ว

    OMG! Its amazing 🚀🚀

  • @pierre.vieira
    @pierre.vieira 2 ปีที่แล้ว

    Thanks for this video friend! You are helping a lot!

  • @sushantsuryawanshi8594
    @sushantsuryawanshi8594 ปีที่แล้ว

    Your video is really helpful , doing great job

  • @yihsun7105
    @yihsun7105 2 ปีที่แล้ว

    This is amazing video. Thanks for that as well!

  • @raheemadamboev
    @raheemadamboev 3 ปีที่แล้ว

    Thanks for your efforts man

  • @Renaro
    @Renaro 3 ปีที่แล้ว +6

    Very nice video! Congratulations! Congratulations 👏! Question/Feedback: By creating entities that belongs to Room in your Business/Domain layer, aren't you mixing the data layer with the business/domain layer? In this way if the database change then all your use cases also changes.

    • @jimpauloovejera2599
      @jimpauloovejera2599 2 ปีที่แล้ว +4

      yeah i was thinking the same thing! something's gotta be wrong with that

    • @paulvickers8059
      @paulvickers8059 2 ปีที่แล้ว +3

      I have seen it done elsewhere, and they have a domain model and data model, the one annotated with @Entity was in the data package

    • @raminvakili5515
      @raminvakili5515 ปีที่แล้ว +2

      I'm late to the party :)), I just was watching the video and I wanted to point the exact same thing. you are right. domain should not care about the details like which DB we're using.

  • @MichaelTirkey0719
    @MichaelTirkey0719 3 ปีที่แล้ว

    Great Teachings. Learned a lot from this video. Loved it… :)
    Please make more content. Would be great learning more from you :)

  • @0_064
    @0_064 3 ปีที่แล้ว

    Thanks for a great tutorial video.

  • @bty_s
    @bty_s 3 ปีที่แล้ว

    Thanks Philipp!

  • @JayShah_._._
    @JayShah_._._ 3 ปีที่แล้ว +9

    This series is great Philipp ⚡Can you do one with firestore too ?

    • @bboydarknesz
      @bboydarknesz 3 ปีที่แล้ว +1

      Yes, please update this todo app to works with API with Firestore or Backend of Ktor for non less setup than Firstore 🤭

  • @dev_jeongdaeri
    @dev_jeongdaeri 3 ปีที่แล้ว

    Super thanks! ❤️

  • @sayyedaamerasharali7583
    @sayyedaamerasharali7583 2 ปีที่แล้ว +4

    Hi Philip, the work and efforts you have done in making the video is amazing. Thanks for this. I have a Question: You create a model " Note " (data class) in the " Domain " Layer and used that in the " Data " layer as well.Is it Ok to do like that? or we can do more decoupling over there as well by doing some other stuff. Like if we get the data from the server in a model class and we need to save particular data to local database so for that another entity data class. Please answer.

  • @olohialli9289
    @olohialli9289 ปีที่แล้ว +6

    It's unreal how much of quality content we get for free right here on this channel. Thanks man. You're awesome.

  • @mithunbiswas5307
    @mithunbiswas5307 2 ปีที่แล้ว

    Great tutorial video, thank you!

  • @DaleHawkins
    @DaleHawkins 2 ปีที่แล้ว +1

    Thank you, Philipp! This was an excellent run through for the whole app. I will be supporting you by purchasing the canvas class. Thanks for that as well!
    One thing that I would also like to see are your Live Templates that you are using? Although I have been using Android Studio for quite sometime, I have only just started defining my own Live Templates. (I have been a long time emacs user and really customized that quite extensively over the years. But with modern Android development, Android Studio is a much better option.)
    Thanks again, and I am looking forward to watching more videos (winter break should give me time to make it through your current body of work. :-) ).

    • @PhilippLackner
      @PhilippLackner  2 ปีที่แล้ว +1

      Thanks for the support! You can find my most used live templates here: gist.github.com/philipplackner/3d3b900d2e9128a37d7d5e6e8fac9e4f#gistcomment-3961404

  • @torazis3286
    @torazis3286 2 วันที่ผ่านมา

    May the Machine God bless you

  • @NiravBhandari-q9w
    @NiravBhandari-q9w 11 หลายเดือนก่อน

    Thank you very much for amazing video.

  • @lokiksoni3519
    @lokiksoni3519 2 ปีที่แล้ว

    print("Enjoying coding with you. Great job dear.")

  • @kaludzio
    @kaludzio 2 ปีที่แล้ว +2

    Amazing tutorial, I'm 25 years old and I've never seen that's good tutorial. You're making a good job. Greetings from Poland. Danke schon!

  • @mustafaammar551
    @mustafaammar551 3 ปีที่แล้ว

    very cool app thank you very much Bro

  • @shalenmathew
    @shalenmathew 9 หลายเดือนก่อน

    Great content

  • @venkatesh4307
    @venkatesh4307 3 ปีที่แล้ว

    Thank you again 😊

  • @hungtra3620
    @hungtra3620 3 ปีที่แล้ว +2

    How can android understand when you type "vmState" or something like that

    • @lukalukovic5082
      @lukalukovic5082 3 ปีที่แล้ว

      Live template he has a videos on those and how to make your own ones

  • @lifebylazy
    @lifebylazy ปีที่แล้ว

    Great video! Thanks for this :)

  • @Ayor88
    @Ayor88 7 หลายเดือนก่อน +3

    2 years later but this video is gold for self-learner ! thank you very much for sharing your knowledge in such a good way. Everything is cristal-clear

    • @emreskgor2472
      @emreskgor2472 2 หลายเดือนก่อน

      cant build in my case always errors with compiler

  • @jellybeast4408
    @jellybeast4408 2 ปีที่แล้ว

    Deine Vids sind klasse c:

  • @princepatel4864
    @princepatel4864 3 ปีที่แล้ว

    Thank you sir for this video

  • @Geckuno
    @Geckuno 10 หลายเดือนก่อน

    Thank you so much for these guides. I've stayed in the comfort zone of MVVM for too long and this lesson is being a tremendous help for getting up to speed. I have some questions, writing them as I watch the tutorial:
    Regarding around 1:05 is there any way to bypass cancelling a job? I'm not very knowledgable on flow, I might be wrong, but it seems like it's against the idea of having the flow in the first place.

  • @pixelPlaygourd
    @pixelPlaygourd 3 ปีที่แล้ว

    Thanks brother 🤟🏻

  • @dreamerslab
    @dreamerslab 2 ปีที่แล้ว +3

    I have been using bloc pattern and folder-by-feature structure in flutter and I just love how compose has adapted patterns from flutter. Its just awesome. Watching this video explained use cases which I couldn't understand very well previously. Lots of love for your amazing free content. I can imagine the effort you have put into it. Thanks for such practical content. God Bless You.

  • @focusfocus8196
    @focusfocus8196 ปีที่แล้ว

    Great video thank you, I would like it even more if you could before using concerts like clean architecture or design injection explain the concept with something simple like classes that print messages and then explain the why behind the idea. But the overall awesome video.

    • @PhilippLackner
      @PhilippLackner  ปีที่แล้ว

      I have separate Videos about that, otherwise I'll need to explain it from scratch in every single video

  • @saeedmoradi6858
    @saeedmoradi6858 ปีที่แล้ว

    well done 👌👌

  • @andreypoltev
    @andreypoltev ปีที่แล้ว +2

    Can't make your project run, countless errors one after another

    • @N-fo4nq
      @N-fo4nq 10 หลายเดือนก่อน

      Have you tried Android Studio > File > Project Structure > SDK location > Gradle Settings > Add JDK > version 11 (install and apply)? It worked for me. If the intention was to just learn architecture I guess it's good quick workaround. Otherwise, yes, using old version of java does not look like a good idea

  • @storypur
    @storypur 3 ปีที่แล้ว

    Thanks a lot, Sir❤
    Could you please make a tutorial of how to make a web admin panel? If someone is using Kotlin and Firebase for their app as you knew already uploading and updating contents of the app from Firebase is not easy for everyone so please make a video tutorial on it.🙏😍❤

  • @samdroid37
    @samdroid37 2 ปีที่แล้ว +2

    i'm having so much fun learning this stuff. just had to say it somewhere lol. sometimes youtube feels clouded with web development and this channel/community makes me feel "at home" with Android development. thank you philipp! might actually land this Android QA engineer position because of you lol.

  • @halloyves
    @halloyves 2 ปีที่แล้ว +5

    As a former Android developer I confirm that this is very beautiful code design. Thanks for the video!

    • @olohialli9289
      @olohialli9289 ปีที่แล้ว

      why did you leave android?

    • @halloyves
      @halloyves ปีที่แล้ว +1

      ​@@olohialli9289 I got an opportunity on my career path which I did not want to decline :)

    • @halloyves
      @halloyves ปีที่แล้ว +3

      BTW Kotlin is still my favorite programming language ;)

  • @petermacharia1294
    @petermacharia1294 2 ปีที่แล้ว

    It was awesome

  • @msontrent9936
    @msontrent9936 2 ปีที่แล้ว +3

    Excellent stuff. Thanks for the hard work. Great architecture, good explanations, covers a broad range of topics (from db storage, UI design, animation). Very enjoyable.

  • @kareemkamal6185
    @kareemkamal6185 3 ปีที่แล้ว +3

    hey, in Spotify play list in video 13 there are more than 10 person have the same problem in comment of
    "@Quang Đạt"
    please if anyone can help
    tell us
    if u can't set Like to make philipp see it please..

  • @TheManyfaced
    @TheManyfaced 3 ปีที่แล้ว +3

    Hey Philipp ,I've just subbed - very useful content - If I may suggest a very tiny ui improvement - whenever you expand the notes order menu - the menu icon could animate to a cross for example to create even more fluid ui experience :)

  • @elijahonduso
    @elijahonduso 3 ปีที่แล้ว

    I was here first. Clean Architecture it is.

  • @androidkotlin-6234
    @androidkotlin-6234 ปีที่แล้ว

    this is the best video I was watch!
    Can you record the same video, but with using multumodule architecture?

    • @PhilippLackner
      @PhilippLackner  ปีที่แล้ว

      Nope, this course covers multi-module arch: pl-coding.com/multi-module-course

    • @androidkotlin-6234
      @androidkotlin-6234 ปีที่แล้ว

      @@PhilippLackner ok, thank you for your attention

  • @hocinehope8880
    @hocinehope8880 ปีที่แล้ว +1

    Create a new class, create a new class, create a new class

  • @YonkoCraft
    @YonkoCraft 2 ปีที่แล้ว

    hey i seem to have an error and i don''t why this is the error:
    couldn't make a guess for lr.aym.notesapp.Feature_note.presentaion.add_edit_note.AddEditnoteviewmodel_HiltModules.BindsModule
    if any one knows how to fix it please help and thank you

  • @BorisBrodski
    @BorisBrodski ปีที่แล้ว +1

    A lot of good stuff to learn. Good explanation. Thank you very much!
    For the next one: I would find it much better, if you would develop the app incrementally.
    Going through 2 hours of video to be able to run the app for the first time is hard.
    Also, it is not the way, a beginner would implement apps.

  • @sergeilitvinenko932
    @sergeilitvinenko932 3 ปีที่แล้ว +2

    You start with making the domain model, and first thing you do is coupling it with Room - the Data layer library. That's clearly not a good start of Clean Architecture tutorial, despite this video is for beginners

    • @elijahonduso
      @elijahonduso 3 ปีที่แล้ว

      This is exactly what i wanted to ask him about. He should use mappers in this case

    • @tonyguyot
      @tonyguyot 3 ปีที่แล้ว

      Totally agree on that. Outside of the data_source package there should be no reference to Room. As, in fact, Philipp himself explained it two minutes before adding Room references in the domain layer!

    • @trocchiettoski
      @trocchiettoski 3 ปีที่แล้ว

      maybe
      a pull request?

  • @francescofreddi4374
    @francescofreddi4374 2 ปีที่แล้ว

    is there your course specific for Clean Architecture? fantastic series

    • @PhilippLackner
      @PhilippLackner  2 ปีที่แล้ว +1

      Yes, this one :)
      elopage.com/s/philipplackner/building-industry-level-apps-with-multi-module-architecture?locale=en

  • @brianryan4053
    @brianryan4053 2 ปีที่แล้ว +1

    I liked comment about data structures and algorithms. You are absolutely right about this. Knowledge could be useful or useless. For mobile app development data structures and algorithms - useless knowledge. But probably for people who created Jetpack Compose and Android Studio this knowledge is important. But we do not develop Android Studio, we use Android Studio to develop.

  • @chatgpt-undetected
    @chatgpt-undetected ปีที่แล้ว

    Could you tell me how to use kotlin flow in a domain module that is pure java ?

  • @daniboy943
    @daniboy943 2 ปีที่แล้ว +1

    Preview, preview, preview, preview, preview, preview. Please, don't forget to preview the UI during the tutorial.

  • @sahinumutcan
    @sahinumutcan ปีที่แล้ว

    Thanks:)

  • @shivampokhriyal2782
    @shivampokhriyal2782 2 ปีที่แล้ว +1

    Can you share more details, probably some docs as well, as to why in the NoteDao file, getNote function is not a suspend function but all the rest are??

  • @NetoLobo
    @NetoLobo ปีที่แล้ว

    Congratulations man, it was an amamazing vídeo, thanks for share your knowledge

  • @devOmarAZ
    @devOmarAZ 3 ปีที่แล้ว +2

    PLZ we need multi module clean arch

  • @RupeshKumar-eo1mi
    @RupeshKumar-eo1mi 3 ปีที่แล้ว

    i know this video will help to like others.

  • @saimhafeez4240
    @saimhafeez4240 3 ปีที่แล้ว +3

    1st 1,162th View 😄