MVVM Movies App - Data Layer: Retrofit & Room DB - (Part 1)

Ғылым және технология

Get my premium course to build industry-level Android apps & Ktor backends. 🚀
ahmed-guedmioui.thinkific.com...
And take your skills to the next level and become ready for the Android industry ✅
First part of the clean architecture movies app tutorial playlist. This app uses Retrofit, Room Database and MVVM. With Jetpack Compose and Kotlin.
Follow me on Instagram:
/ ahmed_guedmioui
Get part 1 source code on Github
github.com/ahmed-guedmioui/Mo...
The API:
www.themoviedb.org
#kotlin #androidstudio #jetpackcompose #androiddeveloper #mvvm

Пікірлер: 32

  • @ahmed_guedmioui
    @ahmed_guedmioui3 күн бұрын

    Get my premium course to build industry-level Android apps & Ktor backends. 🚀 ahmed-guedmioui.thinkific.com/courses/build-industry-level-apps-and-ktor-backends And take your skills to the next level and become ready for the Android industry ✅

  • @ahmed_guedmioui
    @ahmed_guedmioui3 күн бұрын

    Get my premium course to build industry-level Android apps & Ktor backends. 🚀 ahmed-guedmioui.thinkific.com/courses/build-industry-level-apps-and-ktor-backends And take your skills to the next level and become ready for the Android industry ✅

  • @cristicode4301
    @cristicode43016 ай бұрын

    This is an amazing series. But what would be even more amazing would be an authentication system, either separate or in this app. ;)

  • @eliasshemsu5853
    @eliasshemsu58534 ай бұрын

    Thank you very much, man!

  • @getzygaming7561
    @getzygaming75616 ай бұрын

    Flow has its own catch function that catches all unhandled exceptions. retun flow { }.catch {emit(Error(it.message())) } Also u can remove suspend from the getMovieList() function, flow works with suspend itself.

  • @getzygaming7561

    @getzygaming7561

    6 ай бұрын

    Flow has onStart {} and onCompletion{} functions, u can use them as loading state while collecting data. U can add to utils such function, to work with these functions inline fun Flow.onLoading(crossinline action: suspend FlowCollector.(isLoading: Boolean) -> Unit) = this.onStart { action(true) }.onCompletion { action(false) }

  • @adamfatyga7977
    @adamfatyga79777 ай бұрын

    7:50 if You have packages in one folder/name, you need to change -> Tree Appearange -> Compact Middle Packages

  • @robsonidongesitsamuel7041
    @robsonidongesitsamuel70415 ай бұрын

    Please how did you get the image base URL it was not clear in the explanation.

  • @jopadjr
    @jopadjr7 ай бұрын

    55th...This is going to be a great tutorial !!!

  • @ahmed_guedmioui

    @ahmed_guedmioui

    7 ай бұрын

    last part is coming tomorrow

  • @jopadjr

    @jopadjr

    7 ай бұрын

    @@ahmed_guedmioui Maybe do a Google Map series next. Just a suggestion.

  • @AshutoshPandey-rt9hp

    @AshutoshPandey-rt9hp

    7 ай бұрын

    yeah that would be great@@jopadjr

  • @user-nj7dl9xu9l
    @user-nj7dl9xu9l4 ай бұрын

    LOOKS amazing but you should structure your video in parts for easy navigation

  • @donDan94
    @donDan942 ай бұрын

    why do we have to use a different database to show by movie genres? Can we use the same unique room database to lets say create another table within it?

  • @mobAppAR
    @mobAppAR5 ай бұрын

    فنان أستمر

  • @gauravkumar-bs3pf
    @gauravkumar-bs3pfАй бұрын

    It asks for the application URL, but I want to use it in my test app.

  • @ubersticks
    @ubersticks5 ай бұрын

    At 26:06 while editing the MoviesEntity you not only removed the null, but you changed the genre_ids value into a String from List without any comment. Maybe you will get to this later but I think this is because Room Database cannot handle a List as a field value; only simple types. Rather than creating a TypeConverter, you simply put the string list into a String, and I see now that you will parse this in the Mapper back into a List for the domain model "Movies".

  • @imgroot90
    @imgroot907 ай бұрын

    thank you sir, any compose multiplatform tutorial in the future?

  • @ahmed_guedmioui

    @ahmed_guedmioui

    7 ай бұрын

    yes of course

  • @prajwalneupane3686
    @prajwalneupane3686Ай бұрын

    how many crud are there?

  • @leandroosantana
    @leandroosantana6 ай бұрын

    I can´t follow that kapt implementation. It doesnt work in my code.

  • @ahmed_guedmioui

    @ahmed_guedmioui

    6 ай бұрын

    You didn't add it's plugin

  • @leandroosantana

    @leandroosantana

    6 ай бұрын

    @@ahmed_guedmioui ohhh, I got it. It worked. Thanks

  • @Yazon2006
    @Yazon20062 ай бұрын

    Success with nullable value doesn't make sense because is it's success then why the data null. For the responses without data it's better to use Unit type. Loading with boolean value also doesn't make sense because Loading already indicates loading state while two other states mean the loading is stopped. Error should contain the exception instead of message or data. Cached values should be emitted as Success with optional boolean flag isCachec/isStillLoading or smth else.

  • @Jjjnmkkmkkk
    @Jjjnmkkmkkk4 ай бұрын

    Is the API free With no limit

  • @memo23245
    @memo232455 ай бұрын

    if you can speak arabic just do it please

  • @ahmed_guedmioui

    @ahmed_guedmioui

    5 ай бұрын

    I do speak Arabic, but English is the world's language

  • @ubersticks

    @ubersticks

    5 ай бұрын

    @@ahmed_guedmioui By the way, your English speaking is perfect!

  • @Jjjnmkkmkkk

    @Jjjnmkkmkkk

    4 ай бұрын

    Don't speak Arabic Speak English​@@ahmed_guedmioui

Келесі