🔴 Let’s build Dropbox Clone with NEXT.JS 14! (React, Clerk, Shadcn, Firebase, Drag/Drop, CRUD, TS)

Поделиться
HTML-код
  • Опубликовано: 26 ноя 2024

Комментарии • 95

  • @patientson
    @patientson Год назад +13

    When legend like Sonny is on, your job is to pay close attention. He is literally helping you support your dream by explaining and coding at the same time. This is rare.

  •  Год назад +10

    I have good memories in this channel. Last year I followed the live actions and learnt React a little. And as a data scientist I can build my own services now. Although Django and Flask are fine, this is just another level of awesomeness. Thank you.
    When you build it for the first time it feels dumb and you are just repeating and copying. After 3-4 builds you slowly start understanding. So beginners shouldnt frustrate and give up.

  • @nemeziz_prime
    @nemeziz_prime Год назад +9

    When Next.js 14 dropped, Sonny was the first channel that came to mind for an amazing new tutorial

  • @rennan9891
    @rennan9891 Год назад +7

    This guy helped me got my brand new first job, and i'm always looking forward to see his stuff, i'm going to my third week in the job and still using everything he taught us, thx a lot

    • @SonnySangha
      @SonnySangha  11 месяцев назад +2

      This is an AWESOME Comment thank you i'm so glad I could help you land your job!

  • @aboronilov
    @aboronilov 11 месяцев назад +5

    Sonny you are on of the best teachers on RUclips. Believe me I've been a professor for 5 years. You do have a talent to teach

    • @SonnySangha
      @SonnySangha  11 месяцев назад +1

      Thank you so much! This means a lot!! #PAPAFAM 💯🙏🏽

  • @kolyaharutyunyan3035
    @kolyaharutyunyan3035 11 месяцев назад

    Thank you Sonny for an amazing video!
    To avoid "@ts-ignore" we can do the following:
    import { type DefaultExtensionType, FileIcon, defaultStyles } from "react-file-icon";

  • @DigitalAlchemyst
    @DigitalAlchemyst Год назад +6

    If you opted to use the component from Next instead of the tag this will cause an error with hot reload down the road when you go to test in dropping a new file at about 2:07:00 for the instant file loading, you will either need to swap back to or find a work around.

    • @Crypt2349
      @Crypt2349 5 месяцев назад +2

      Thanks so much man

    • @DigitalAlchemyst
      @DigitalAlchemyst 5 месяцев назад

      @@Crypt2349 If you find a work around or run into any issues let me know happy to help. This may no longer be an issue with new versions of next.

    • @Crypt2349
      @Crypt2349 4 месяца назад +1

      @@DigitalAlchemyst thanks so much man

    • @AvikNayak_
      @AvikNayak_ 3 месяца назад +1

      hey man i am getting this error Uncaught Error: Failed prop type: The prop `href` expects a `string` or `object` in ``, but got `undefined` instead. do you know how to solve it?

    • @DigitalAlchemyst
      @DigitalAlchemyst 3 месяца назад

      @@AvikNayak_ use the tag instead of link. I never found a solution as to why the link tag does not receive the href, my only thought is because nextjs preloads s the data may not be fetched by the time the Link attempts to render, and possibly the tag doesn't care because its not preloading the page and only needs the URL when the link is clicked by the client

  • @DigitalAlchemyst
    @DigitalAlchemyst Год назад +7

    If you are using /src folder in your projects, the middleware.ts file needs to go in the /src folder not the root
    If it is in the wrong place you will see the following error in your terminal
    ○ Compiling /_error ...
    ✓ Compiled /_error in 654ms (921 modules)
    and the dashboard will show up just fine.

    • @DigitalAlchemyst
      @DigitalAlchemyst Год назад

      sidenote this also caused an issue with tailwind.

    • @jamestuttle
      @jamestuttle 11 месяцев назад

      What I did too as per the Docs, then found this... Confirmed on my end too!

    • @DigitalAlchemyst
      @DigitalAlchemyst 11 месяцев назад +1

      @@jamestuttle Yeah i did see that in the docs later on after making this comment.

  • @garikmelqonyan6011
    @garikmelqonyan6011 11 месяцев назад

    I could never imagine your tutorials could be this good man. Thank you

  • @GavHTFC
    @GavHTFC Год назад

    36:34 bro was hurt by the very suggestion!

  • @AbdulxoliqOdiljonov
    @AbdulxoliqOdiljonov 11 месяцев назад

    Thank you so much Sonny !!
    You are best teacher !!!

  • @youssefmahmoud6268
    @youssefmahmoud6268 Год назад

    From the best best best on RUclips, thanks.

  • @sujayrajesh5505
    @sujayrajesh5505 4 месяца назад

    FIRE STREAM 🔥🔥🤩

  • @betajohn-c6r
    @betajohn-c6r 11 месяцев назад

    Loved your video bro learned a few new things :) found it (this vid) looking for a shawncn tuto. You got a new sub.

  • @wowpixels_dev
    @wowpixels_dev 10 месяцев назад

    Such a great project to follow, thanks!

  • @silva8215
    @silva8215 Год назад

    Thanks Sonny that was awesome!

  • @siddharthpadwal9649
    @siddharthpadwal9649 Год назад +1

    Hey sonny i really like your videos, i know it’s irrelevant at the time but can you make a short series or clones working with vue js / nuxt js too.
    It would be a great help!

  • @moreshwardalavi
    @moreshwardalavi Год назад +1

    Hi Sonny,
    If we added the following line,
    publicRoutes: ["/"];
    then to redirect to a route `/dashbaord` but it's not working as excepted.
    in the terminal getting following message:
    INFO: Clerk: The request to /dashboard is being redirected because there is no signed-in user, and the path is not included in `ignoredRoutes` or `publicRoutes`. To prevent this behavior, choose one of:
    1. To make the route accessible to both signed in and signed out users, add "/dashboard" to the `publicRoutes` array passed to authMiddleware
    2. To prevent Clerk authentication from running at
    all, pass `ignoredRoutes: ["/((?!api|trpc))(_next.*|.+\.[\w]+$)", "/dashboard"]` to authMiddleware
    3. Pass a custom `afterAuth` to authMiddleware, and replace Clerk's default behavior of redirecting unless a route is included in publicRoutes

  • @muhammaduseram9405
    @muhammaduseram9405 6 месяцев назад

    Yoo sunny you are inspirations💕

  • @kulvirsingh4568
    @kulvirsingh4568 Год назад

    Awesome Sonny 🎉🎉

  • @ioannhide3355
    @ioannhide3355 Год назад

    This guy are amazing programmer 🎉

  • @billwhite515
    @billwhite515 11 месяцев назад

    I know react/nextjs are your forte but have you ever thought of having a build using angular, vue or svelte kit?

  • @lokindradangi
    @lokindradangi 11 месяцев назад

    Minimum Asset should be provided to start such a video url, images url, (images used) so that it will be easy.

  • @chiedozieezidiegwu1592
    @chiedozieezidiegwu1592 Год назад

    Nice one bro, Weldone... 👍

    • @SonnySangha
      @SonnySangha  11 месяцев назад

      Thank you so much 😀

  • @RABWA333
    @RABWA333 11 месяцев назад

    Great job , watching from Libya

  • @agadaFrancisLouis
    @agadaFrancisLouis Год назад +1

    Sonny, I love the fact that you used Shadcn, Zustand and Clerk😍😍😍👏🏾. It’s like you read my mind. You’re the best, bro 🫶🏾

    • @SonnySangha
      @SonnySangha  11 месяцев назад

      Maybe I have a super power to read minds.... muhahahaha thanks for the support!!! #PAPAFAM all the way!

    • @agadaFrancisLouis
      @agadaFrancisLouis 11 месяцев назад

      @@SonnySangha#PAPAFAM all the way!!!😄🔥❤️❤️❤️
      One day when I make it, I’ll do well to hit you up and support whatever you’re doing. Not all superheroes wear capes. You’re my hero, bro🫶🏾

  • @chinmaysawant1343
    @chinmaysawant1343 Год назад +1

    Totally agree with you about the live debugging. Keep it going!!

  • @ardianhotii
    @ardianhotii Год назад +1

    In you next video when you have to use files and uploads can you use uploadthing , if more people agree with me I want you to use it pls, your videos are soo good keep going

  • @jamestuttle
    @jamestuttle 11 месяцев назад

    @Sonny, you mentioned at 1:21 in video about your going to do. Firebase videos - any ETAs? I am very interested in it, also on their messaging/nootificaitons services too..?

  • @mrsingh5351
    @mrsingh5351 Год назад

    Dope 🔥

  • @chinmaysawant1343
    @chinmaysawant1343 Год назад

    Issues faced and their solution:
    1)Error: Clerk: auth() was called but Clerk can't detect usage of authMiddleware() - I was using node version 18, updated to 20 and it got resolved

    • @gokulkandasamy4952
      @gokulkandasamy4952 11 месяцев назад

      same error came for me,i updated to node version 20 but not working

  • @Hasyapann
    @Hasyapann 8 месяцев назад

    I m facing problem when i add on clerk .. please help me out and how I can I reach out you to show error

  • @crim-son
    @crim-son Год назад

    is there a way to use Firebase only on the server and still get to use storage and have Realtime updates on the client, or must firebase always completely be on the client? I see Sonny didn't add firebase keys to the env file, is that wrong or is it completely fine?

  • @NAE333
    @NAE333 2 месяца назад

    No share functionality for files?

  • @chinmaysawant1343
    @chinmaysawant1343 Год назад

    I was trying to move the firebaseConfiguration to env file. But it is giving bucketNotFound error. I tried to debug and found out that projectId and storageBucket are the culprits. If they are passed directly, it's working as expected. How to fix this?
    Also the rename and delete modal are lagging in performance. how to optimize it?

  • @NextbyYounes
    @NextbyYounes 9 месяцев назад

    hello sonny can i build nextjs app showing pdf page but not allowed the viewer to downlaods it using react-pdf pdfjs and i store the file in the any database.

  • @marcosviniciusmoreira9115
    @marcosviniciusmoreira9115 Год назад +2

    "I'm encountering an issue when declaring 'open' with 'isDeleteModalOpen'. I'm getting an error saying 'Type '(open: boolean) => void' is not assignable to type 'boolean | undefined.' Could you provide guidance on resolving this issue? It's happening around the 02:26:00 mark of the tutorial."

  • @crim-son
    @crim-son Год назад

    Please what is the point of the file reader at 1:16:20? why do we not just call upload file directly with the file?

  • @hassannasir1222
    @hassannasir1222 10 месяцев назад

    hi i hope you are well
    Plz tell me that dropbox paid version has token usage time option i.e i want token can not be expire so please guide me i am waiting for your reply.

  • @nooneknowsme1370
    @nooneknowsme1370 Год назад

    if the skeleton files (server loaded files) are available without any delay then why are calling files again in the client side and causing more delay? i didn't understand the logic behind it. was it just for the skeleton effect? or any other logic behind it?

    • @shubhamdhage96
      @shubhamdhage96 7 месяцев назад

      I believe to get files from server/firebase should alway be a network call. if not next.js will cache the page and we may not see latest updates. so this delay is acceptable.

  • @usmanmarkaz
    @usmanmarkaz Год назад

    Am waiting for some React native App Projects please make 3 to four apps like your long NEXT JS video please

  • @crisreyes1630
    @crisreyes1630 Год назад

    When i drop and drag the file it doesn't push through firebase i did exactly the same you did maybe it was the import ?

    • @crisreyes1630
      @crisreyes1630 Год назад

      NVM haha ijust forgot to pass the onDrop on DropzoneComponent thanks

  • @sayandutta2038
    @sayandutta2038 Год назад

    Did anyone get the same error: `Error: Clerk: auth() was called but Clerk can't detect usage of authMiddleware()`

    • @HarshvardhanGaikwad6969
      @HarshvardhanGaikwad6969 Год назад

      Maybe you're using node version 18, update it to v20 and it will get resolved

    • @sayandutta2038
      @sayandutta2038 11 месяцев назад

      @@HarshvardhanGaikwad6969 doesn't work, bruhhh

  • @JosesHamptona
    @JosesHamptona 11 месяцев назад

    very good but it so cool

  • @AuRoN344
    @AuRoN344 Год назад

    2:07:13 How is that possible it refreshes de table after uploading another file? I really dont see the part of code where he rettriggers the call to get all the files again. After uploading a file the application should not rerender anything since it is not changing its state.

    • @SonnySangha
      @SonnySangha  Год назад

      React Firebase hooks uses a realtime listener, this is why it’s always listening and updating due to changes in the database!

    • @AuRoN344
      @AuRoN344 Год назад

      @@SonnySangha Didnt know that. Thank you very much for your fast answer and all the content you make :)

  • @codelucky
    @codelucky Год назад +2

    Background music was too loud and unnecessary.

  • @yohansamuditha
    @yohansamuditha Год назад

    🔥🔥💖

  • @AwaisOtho
    @AwaisOtho 3 месяца назад

    I am from Pakistan ❤❤❤❤

  • @SupremeDriveTV
    @SupremeDriveTV Год назад

    clerk did not work for me
    do you have solution

    • @SonnySangha
      @SonnySangha  11 месяцев назад +3

      Need more info, nobody will be able to help with little info! :D

    • @SupremeDriveTV
      @SupremeDriveTV 11 месяцев назад

      thanks but i was able to pull it off it had @@SonnySanghato do with the middleware not placed correctly.​

  • @chasedemaster6888
    @chasedemaster6888 11 месяцев назад

    track id for 50:00 ?

  • @mabdurrafeyahmed9256
    @mabdurrafeyahmed9256 Год назад

    please add timeline of video. very hard to view video

  • @kelechihilary1270
    @kelechihilary1270 Год назад

    Please does anyone have the constant.ts file ?

    • @ramlaazo
      @ramlaazo 11 месяцев назад

      i created this one:
      export const COLOR_EXTENSION_MAP: { [key: string]: string } = {
      txt : "#C0C0C0",
      doc : "#0000FF",
      docx : "#00008B",
      pdf : "#FF0000",
      ppt : "#FFA500",
      pptx : "#FF8C00",
      xls : "#008000",
      xlsx : "#006400",
      jpg : "#00FFFF",
      png : "#008B8B",
      gif : "#FFFF00",
      mp3 : "#800080",
      mp4 : "#4B0082",
      zip : "#A52A2A",
      rar : "#8B4513",
      html : "#FFD700",
      css : "#FF4500",
      js : "#FF6347",
      json : "#2E8B57",
      xml : "#9932CC",
      svg : "#800000",
      php : "#8A2BE2",
      java : "#F08080",
      py : "#FF69B4",
      cpp : "#B22222",
      c : "#A0522D",
      md : "#4B0082",
      csv : "#2F4F4F",
      log : "#4682B4",
      exe : "#8B0000",
      dll : "#800000",
      bat : "#A52A2A",
      sh : "#808000",
      sql : "#008080",
      };

    • @ramlaazo
      @ramlaazo 11 месяцев назад

      after implementing the skeleton Loader (2/2) i get an empty array when i consol log the skeletonFile , do you have any idea why?

  • @salonsospain
    @salonsospain 2 месяца назад

    17K

  • @vittoriomorellini1939
    @vittoriomorellini1939 11 месяцев назад

    Good video. Why did you select clerk for auth and you do not select firebase as you already used firebase for storage?

    • @lawrencemacharia2182
      @lawrencemacharia2182 11 месяцев назад

      To explore or use a new/different library. Yes, firebase can do the same, but it's always good to learn something new. To increase options when you will building. My opinion!

  • @vittoriomorellini1939
    @vittoriomorellini1939 11 месяцев назад

    Are you located in Dubai??

  • @salonsospain
    @salonsospain 2 месяца назад

    30056