🔴 SwiftUI Threads Clone | iOS 17 | async/await | Firebase | 2023

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ส.ค. 2024
  • Let's build Threads with SwiftUI!
    🔴 Become a member to access Exclusive Content & Source Code :
    www.stephancodes.com/plans-pr...
    🔴 SwiftUI Threads Pro Course:
    appstuff.teachable.com/p/swif...
    🔴 SwiftUI Threads Pro Source Code:
    www.stephancodes.com/product-...
    🔴Async/Await:
    • How to Network Like A ...
    🔴 FREE Instagram Course with SwiftUI:
    • 🔴 Build Instagram With...
    🔴Navigation Stacks:
    • This NEW SwiftUI Featu...
    🔴@State vs @Binding video:
    • NEVER Confuse @State v...
    🖥️ ONLINE COURSES & APPS
    👉 Pro Courses:
    www.stephancodes.com/videos
    👉 FREE UBER SwiftUI Course
    • 🔴 Let's Build UBER wit...
    👉 iOS App Templates:
    www.stephancodes.com/shop
    👉 FREE Twitter SwiftUI Course
    • 🔴 Let's Build Twitter ...
    Chapters
    00:00 - Intro
    01:02 - App Demo
    03:26 - Project Setup
    06:14 - Authentication UI
    20:56 - Tab Bar Setup
    31:42 - Feed View UI
    42:52 - Explore View UI
    52:40 - Profile View UI
    1:12:47 - Edit Profile UI
    1:23:45 - Create Thread UI
    1:35:34 - Firebase Setup
    1:47:04 - Creating A User
    2:00:53 - Log in / Log out
    2:16:47 - User Service & Data Model
    2:36:05 - Updating User Profile
    2:43:53 - Explore View Updates
    2:57:47 - Profile Navigation & Refactor
    3:15:56 - Edit Profile Photo
    3:26:09 - Upload Images to Firebase Storage
    3:44:05 - Load User Images
    3:58:18 - Creating A Thread
    4:15:21 - Fetching Threads For Feed
    4:31:31 - Fetch User Threads
    Social Media:
    Instagram - @stephan.dowless
  • วิทยาศาสตร์และเทคโนโลยี

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

  • @brandonhopkins3438
    @brandonhopkins3438 11 หลายเดือนก่อน +27

    What I love about your content is that your code is always organised and there's just no bull****. Breaking down real apps into 5 hours of content is also my favourite thing to watch. It takes the apps off the pedestal, and you realise you can make them too. It's empowering. Please do more!

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

      be aware of bad coding practices. He is using singletons all over his project and also the "Pro" content for this course available on his website is also continuing using singletons. This is a very bad practice and can influence your coding career also you can be rejected in coding interviews if they see you have a habit of using singletons. Be aware! I don't know why he didn't update this crap

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

      In case some people don't know, a singleton looks like this : static let shared = ProfileViewModel().

  • @Designguidetv
    @Designguidetv 10 หลายเดือนก่อน +2

    hey just a shoutout, I like how you are able to simply explain the build of a full app, bringing together a lot of different parts and tips. Just amazing.

  • @brsaca
    @brsaca 10 หลายเดือนก่อน +2

    I thoroughly enjoyed this tutorial! I've just completed the video and I must say, the learning was fantastic. The project's structure is refreshingly simple and tidy. The method of segregating services with view models aligns perfectly with clean architecture principles. I'll definitely be keeping an eye out for your upcoming clones. I gained a wealth of knowledge from this one, and I'm genuinely excited. Thanks a ton for sharing!

  • @efecetin8475
    @efecetin8475 10 หลายเดือนก่อน +2

    I love it how you always show us the latest functionalities

  • @chrisv8341
    @chrisv8341 11 หลายเดือนก่อน +4

    Thanks bro for this ! I just starting out to learn Swift , this really helps me out 🙏🙏

  • @911lalala
    @911lalala 11 หลายเดือนก่อน +1

    What a video! Thank you for fantastic job It's phenomenal

  • @sandipclips5792
    @sandipclips5792 7 หลายเดือนก่อน +1

    Great tutorial buddy!!! Love the way you explained the topics in plain easy language. This is my 3rd app that I've built within last 5 days.. starting with a basic UI app with some logic, then a War card game and now just finished this one with all the running features and fixing bugs. This type of content needs more views and likes!! This won't be possible without your help man! I'm 20yr's now, a tech geek who loves web3 to solve real world problems. Let's connect buddy! whenever possible :) keep up the good work. Love from India

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

    Excellent content. I love the focus on code organisation and structuring content

  • @vidz_24
    @vidz_24 8 หลายเดือนก่อน +2

    Following you as you build this Threads clone as well as the AirBnB clone gives me confidence to design and develop my own app from the ground up all the way to the publishing stage, thank you
    .

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

    this is super valuable - thank you for the time & effort that went into it!

  • @kwiky5643
    @kwiky5643 6 หลายเดือนก่อน +5

    Thanks for not overcomplicating stuff like 99% of other tutorials on TH-cam

    • @appstuff5778
      @appstuff5778  6 หลายเดือนก่อน +2

      I always try to follow KISS. Keep It Simple Stupid

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

      Some improvements:
      I've just noticed at time 27:30 that there is no need to set onAppear since tabView selection already takes care of that. Also, swiftui sets a .fill variant as the default value so in Image system name we can just leave it as systemName: "house"

  • @BABEENGINEER
    @BABEENGINEER 4 หลายเดือนก่อน +1

    I watched the whole thing!!!!!! over the course of a few days ✨✨✨✨ So good, thank you!!!!

  • @ugursel1298
    @ugursel1298 13 วันที่ผ่านมา

    I liked your course very much and decided to become your student. First of all, as a member of yours, I have completed your Threads course as of today and you have contributed a lot to me in my own project. I'm looking forward to the Threads Pro 2.0 version. :)

    • @cisumapp
      @cisumapp 11 วันที่ผ่านมา

      Hi, is the photos picker and saving image to firebase database work for you? I have been having trouble getting it to save the profileImageURL

  • @SanusiAdewale
    @SanusiAdewale 11 หลายเดือนก่อน

    Thanks a lot!! really appreciate!

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

    Damn man this video is so good I learned so much from it you the best man ❤❤

  • @kndkillar2907
    @kndkillar2907 10 หลายเดือนก่อน +1

    Genuinely so impressed with the explanations! Took me a while to understand singletons and their uses. Your videos are amazing honestly. Been coding for 1 year and a half now and I’ve come to realise most of the code I utilise is based off the learning from your videos. P.s. I now also understand combine and how it can be used for the current user and user session! Thank you for this

  • @rparham1997
    @rparham1997 11 หลายเดือนก่อน

    Great content!

  • @ghumtoboom1254
    @ghumtoboom1254 11 หลายเดือนก่อน +2

    Giving this valuable work for is incredible. This is the best effort to grow iOS community..

  • @Pulpitoclips
    @Pulpitoclips 11 หลายเดือนก่อน

    Thanks bro your the best !

  • @marcoalonsoiosdev
    @marcoalonsoiosdev 11 หลายเดือนก่อน

    Thank You!

  • @ipeerless6717
    @ipeerless6717 11 หลายเดือนก่อน

    what a man! God bless

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

    I love how you making things looks simple af

  • @imam_robani
    @imam_robani 4 หลายเดือนก่อน

    That's cool, I learned a lot.
    I hope there are more tutorials like this but with rest API integration, for example authentication which has a bearer token and how to handle it

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

    this is so damn excellent

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

    Brilliant tutorials on SwiftUI! You're doing a great job explaining pretty complex concepts easily. So thank you very much for your work! I only wanted to add one thing about the Singleton pattern that you use for services. If we want to properly implement this pattern, it's a good idea to make the designated initializer private in order to make it impossible to construct an instance of that class. Thus we prevent the possibility to create an instance of that class and make it sure that we can only access those methods and properties through the static shared property.

    • @appstuff5778
      @appstuff5778  6 หลายเดือนก่อน

      You are right! I’ve actually started to move away from the singleton pattern. I find dependency injection to be much better

  • @ShredzZ
    @ShredzZ 11 หลายเดือนก่อน +1

    As you are experienced iOS dev, I have a question, is it better to be freelancer or just work in company?

  • @hook8107
    @hook8107 7 วันที่ผ่านมา

    great video, I was wondering how do you then include the threads and the threads response into the same forEach besides them being separate objects, or how do they display together following the timestamp

  • @useruseruuseruuseruuseruuser
    @useruseruuseruuseruuseruuser 6 หลายเดือนก่อน

    Wow🔥

  • @user51252
    @user51252 8 หลายเดือนก่อน

    Amazing! If I only want to fetch the currently logged in user's threads to the feed, how could I do that? Is there a way to come in contact with you for some assistance?

  • @munavarpm5342
    @munavarpm5342 11 หลายเดือนก่อน

    Hit to TOP

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

    hi thank you for the video i am new so i have a question why you are using static width and height ? there should a way for dynamic width, height or font size. i have worked on real project using react native they provide a library for dynamic style.

  • @eddjoseph1130
    @eddjoseph1130 3 หลายเดือนก่อน

    If we wanted onboarding preview pages before the login and sign-up pages, in which folder would we place the pages and how would we route it?

  • @user-bf4vk4de4w
    @user-bf4vk4de4w 11 หลายเดือนก่อน

    Minor Improvement
    In edit profile
    The rectangle is rounded corners but the white background is coming out of it
    As seen in simulator @ 1.23.23

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

    Can you create a video wherein the authentication and backend is cloudkit please!!

  • @rohan_ray
    @rohan_ray 6 หลายเดือนก่อน

    28:38, we don't need to do selectedTab == 0 ? "house.fill": "house" as setting a different symbol variants in environment will do it automatically.

  • @swayamrustagi7476
    @swayamrustagi7476 4 หลายเดือนก่อน

    Can we say that this is production level code?
    Also Stephen please upload regarding unit testing and everything.
    Doing god's work btw! thanks😍

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

    how can i enable bracket pair colorizer in xcode.?

  • @AhmetZade-o6j
    @AhmetZade-o6j 8 วันที่ผ่านมา

    hi i have one question brother , why don't we use environmentObject during user login and signup instead of subscribes

  • @MG-wj4rc
    @MG-wj4rc 3 หลายเดือนก่อน

    You should change your nickname to AwesomeStuff !

  • @atpugvaraa
    @atpugvaraa 21 วันที่ผ่านมา

    Not sure if this comment will be seen but i am having trouble setting up firebase storage and database.. It used to work with my old project but when i set out to remake everything it stopped working.. It is not able to upload image url, it dismisses the edit profile view immediately.

  • @code_with_emily
    @code_with_emily 11 หลายเดือนก่อน

    Thanks so much for the awesome tutorial - I'm learning a lot! :)
    I'm still new to programming/swift and trying to wrap my head around best practices with passing data around in a swiftui project. Is static let shared = UserService a singleton? Everything I've read seems to emphasize staying away from singletons/shared instances and to only use dependency injection or environmentobjects.
    In large-scale real world apps is using a shared instance like this just as optimal as dependency injection?
    Your explanation in the video for using a shared instance totally made sense, I'm just confused why everything seems to say not to use them in the real world. Is there a reason a shared instance is optimal here despite what I seem to have read about using them?

    • @appstuff5778
      @appstuff5778  11 หลายเดือนก่อน +1

      There’s a time and place for singletons, and they solve some problems, but create others. Like any pattern, there’s benefits and drawbacks.
      Ideally, you would use dependency injections instead. Apple doesn’t recommend excessive use of environment objects or singletons.
      DI is a more testable, scalable and maintainable pattern. It’s just a lot more work

    • @code_with_emily
      @code_with_emily 11 หลายเดือนก่อน

      @@appstuff5778 Thanks for your input! Do any of your videos or paid courses show how to implement dependency injection?

  • @navedkhan6643
    @navedkhan6643 7 หลายเดือนก่อน

    See you on Monday

  • @marios273
    @marios273 10 หลายเดือนก่อน +1

    Thanks! do you have a tiktok or spotify tutorial?

    • @appstuff5778
      @appstuff5778  10 หลายเดือนก่อน +1

      I am currently finishing up a TikTok clone. Source code will be available on my site this week! Complete video tutorial will be available next month

  • @allthingswaffled9680
    @allthingswaffled9680 7 หลายเดือนก่อน +2

    I noticed we can't use the PreviewProvider extension with the new #Preview in XCode 15. Happen to know a way around that?

    • @BeyondLimitations_
      @BeyondLimitations_ 6 หลายเดือนก่อน

      A WAY THROU use the old method to do preview in ios 16 for example replace your preview in UserCell with the code below
      struct UserCellView_Previews: PreviewProvider {
      static var previews: some View {
      UserCellView(user: dev.user)
      }
      }
      it work like magic and in case you cant do something in ios 17 try to use the method in ios 16 or 15 if, it not totally depreciated, just for learning purpose

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

    if i know it all , can i be offered 100->200k usd ?

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

    Shouldn't we delete the old profile image when the user uploads a new one? How would we do it? thanks a lot, this tutorial has been extremely useful!

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

      Yes you should. Topics like that are covered in the Pro version of the course. Link is in the description!

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

    Hey there AppStuff! Just wondering how I can add a verification checkmark for it. Unsure if it's in the video but yeah. Looking forward to hearing from you.

  • @a.arnaavv
    @a.arnaavv 11 หลายเดือนก่อน

    has the complete pro course been released??

    • @appstuff5778
      @appstuff5778  11 หลายเดือนก่อน

      Yes! Link is in description

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

      @@appstuff5778what’s the difference between this free offering and the paid pro course?

  • @lina-xr6tv
    @lina-xr6tv หลายเดือนก่อน

    3:44:00

  • @pardipbhatti9943
    @pardipbhatti9943 11 หลายเดือนก่อน

    Can you create one course without firebase, like using rest api, for auth

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

    Calling them View Model's is confusing. View Models are supposed to define the logic between the data being represented in the view. Having asynchronous network calls in a view model does not make sense. something like "network interface" or "data provider" would be more appropriate, especially when it comes to writing tests for them.

    • @appstuff5778
      @appstuff5778  9 หลายเดือนก่อน +1

      You say tomato, I say tomato

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

    Why do you need a login? iPhone already knows who you are, just open the app and use! Easy?

    • @xVinoz
      @xVinoz 7 หลายเดือนก่อน +1

      You wake up that day and proposed to say some dumb shit for the day right?

    • @kamertonaudiophileplayer847
      @kamertonaudiophileplayer847 7 หลายเดือนก่อน

      @@xVinoz Wrong, but your response makes me proud of you! We need more people like you, seriously.

    • @iLoveAppl3947
      @iLoveAppl3947 5 หลายเดือนก่อน +1

      looks like you are smarter than Apple

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

      @@iLoveAppl3947 A nice sarcasm. Sure, you are very smart too.

  • @Nick-zw7gg
    @Nick-zw7gg 11 หลายเดือนก่อน

    So do people really get paid 200k just for this?! That's crazy!

    • @appstuff5778
      @appstuff5778  11 หลายเดือนก่อน +8

      Man if it was that easy you should go get a job making 200K now!

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

      Looks like they don’t realise how long it actually takes to learn all this haha

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

      i know it all , can i be offered 200k usd @@kndkillar2907

  • @designckinet
    @designckinet 11 หลายเดือนก่อน

    Woow😮