omg this is so rad! Basically 1:1 with how we implemented it. I feel really bad that we didn't get to OSSing the packages before you made this, but they are open source now! I also made a diagram that's hilariously similar to yours, it's linked in the repo under /assets
@@samuelgunter He made uploading a bit more "safe" by removing possibility of ghost files. So it might not be completely fixed but it's a great feature to have.
After 1.5 years of front-end training on react, I finally got my first offer. On the very first day, they gave a project for the Next js graphql apollo. Your videos saved me, thx :)
I am not sure Theo fixes or solves anything, to be honest. Just another wrapper on top of something already established. This could be just nice library, but you can't make money off of it.
Making wrappers around established services seems to be a big trend atm, pretty much what vercel did with KV, Blob & Postgres just a few days ago with a pretty big upcharge
@@joshtriedcoding Anyone who's in industry for over 10 years know we will just circle back to VMs and Linux. These services exist just to burn YC VC money, not to be helpful.
@@beganovich for e.g. Amazon prime just moved to VMs again from lambda. I think these wrappers exist to exploit some fear of aws/backend/dbs etc for frontend devs.
For some type of devs who aren't genius abstract thinkers, especially beginners, all these wrapper services that simply add DX to an existing service, are great because it allows you to get something done --> run into the limitations --> forcing you to study the underlying service --> learning process is MUCH easier because you have already established context. But I guess abstract thinkers learn in the exact opposite order. Study the underlying complexities, then simplify into implementation.
Hey, since the original UploadThing version is now open source, are you also going to open source your implementation? Could be fun to look around in your solution
realistically this just shows how much js devs are trying to be lazy coz aws already provide an sdk for signing and giving you response to use in your frontend to upload files been doing this for ages and never takes me more than 30 mins of work
Vercel, Theo etc are selling a product. Sometimes it makes sense to use the products (Eg OpenAI used Next, but not Vercel AFAIK), but I'm pretty sure it's not a good idea for their average target public to focus and rely on their services. The whole "DB are hard", "Infra is hard" etc is IMO a huge BS (not always, but as a 'hype', trend and general message to noob developers.). Yeah, it's hard but so is programming, IT and learning anything not trivial. If you are enthusiast and want to become good as a dev, you learn. If you can become a good dev, you can definitely invest bit extra time to learn basic admin, networking, operating systems stuff and the environment in which you're working. Because it's kinda requirement. If you just want to get the 'shit' done, then obviously even programming is going to become less and less relevant. With all the 'rapid application development' tools, BaaS etc, one will be able, and already is, to build certain types of applications even without writing a single line of code. Many companies are still not comfortable with sharing all the user data with big tech or anyone else, just for the sake of improving DX lol.
@@denissorn these tools exist to help developers build their applications quicker and see if the use case is valid. No need in getting deep knowledge of file uploading if that's not the basis of your application.
Just thinking about things that are being built these days like vercel's new storage , uploadthing they are all just providing good developer experience wrapped around actual service and then charge money for developer experiences. that's why don't shy way from hard stuff like aws.
I'm curious to see the final code. Also, I would be extremely interested in seeing a video how you dissected and reverse engineered this code. The steps you made. I know it sounds strange but it would be extremely helpful for new programmers to see your mind at work breaking all the details down.
Theo is incredibly good at marketing / polarizing. The term of "fixing" something while just making sth. easier for devs by e.g. making a library/wrapper is popular by dev youtubers. Unfortunately, it is clickbaity and misleading. The only thing it might fix is the time cost and dx. However, dx and lazyness comes at it's cost. I wonder how much they will charge in the future. Nonetheless great tool.
@@rugisis1 Yeah it becomes a routine task and you eventually get used to the presigned urls and how s3 policies work. This video is s3 specfic, though you could use any other cloud storage provider to wrap (e.g. Cloudflare R2)
Question do you have a AWS Client library that only generates the request for the presign post url that is edge ready i like to try supabase edge-function but most of the projects i work with need file uploads.
When the UploadThing server returns the metadata to Your Server, does Your server then send that to the client to notify that the upload is done? Or does the client immediately know the upload is done when S3 tells it's done?
Not an expert but if the client receive the policy and then is sended directly to an s3 bucket without the validation from the server the client can read and change the jwt before passing the image to a s3 bucket ? Sorry for the dumb question maybe i am missing something. Thanks
omg this is so rad! Basically 1:1 with how we implemented it. I feel really bad that we didn't get to OSSing the packages before you made this, but they are open source now!
I also made a diagram that's hilariously similar to yours, it's linked in the repo under /assets
rad
ok but did you really fix file uploading or nah?
@@samuelgunter He made uploading a bit more "safe" by removing possibility of ghost files. So it might not be completely fixed but it's a great feature to have.
After 1.5 years of front-end training on react, I finally got my first offer. On the very first day, they gave a project for the Next js graphql apollo. Your videos saved me, thx :)
Dude I'm so happy to hear that. All the best in your journey, thanks for sharing
I am not sure Theo fixes or solves anything, to be honest. Just another wrapper on top of something already established. This could be just nice library, but you can't make money off of it.
Making wrappers around established services seems to be a big trend atm, pretty much what vercel did with KV, Blob & Postgres just a few days ago with a pretty big upcharge
@@joshtriedcoding Anyone who's in industry for over 10 years know we will just circle back to VMs and Linux. These services exist just to burn YC VC money, not to be helpful.
@@beganovich for e.g. Amazon prime just moved to VMs again from lambda. I think these wrappers exist to exploit some fear of aws/backend/dbs etc for frontend devs.
@@aakarshan4644 Heard that too, didn't they say lambda stopped working for them at 5% of their expected traffic?
Where do you hear that sort of information
For some type of devs who aren't genius abstract thinkers, especially beginners, all these wrapper services that simply add DX to an existing service, are great because it allows you to get something done --> run into the limitations --> forcing you to study the underlying service --> learning process is MUCH easier because you have already established context.
But I guess abstract thinkers learn in the exact opposite order. Study the underlying complexities, then simplify into implementation.
Hey, since the original UploadThing version is now open source, are you also going to open source your implementation? Could be fun to look around in your solution
realistically this just shows how much js devs are trying to be lazy coz aws already provide an sdk for signing and giving you response to use in your frontend to upload files been doing this for ages and never takes me more than 30 mins of work
exactly
Vercel, Theo etc are selling a product. Sometimes it makes sense to use the products (Eg OpenAI used Next, but not Vercel AFAIK), but I'm pretty sure it's not a good idea for their average target public to focus and rely on their services. The whole "DB are hard", "Infra is hard" etc is IMO a huge BS (not always, but as a 'hype', trend and general message to noob developers.). Yeah, it's hard but so is programming, IT and learning anything not trivial. If you are enthusiast and want to become good as a dev, you learn. If you can become a good dev, you can definitely invest bit extra time to learn basic admin, networking, operating systems stuff and the environment in which you're working. Because it's kinda requirement. If you just want to get the 'shit' done, then obviously even programming is going to become less and less relevant. With all the 'rapid application development' tools, BaaS etc, one will be able, and already is, to build certain types of applications even without writing a single line of code. Many companies are still not comfortable with sharing all the user data with big tech or anyone else, just for the sake of improving DX lol.
@@denissorn these tools exist to help developers build their applications quicker and see if the use case is valid. No need in getting deep knowledge of file uploading if that's not the basis of your application.
It was super interesting to learn how everything works under the hood
Dude, you're motivating me every single day with your videos. Keep going, Love you, Bro!
That's very nice to hear man. Cheers
Loved the video! Great work Josh!
Just thinking about things that are being built these days like vercel's new storage , uploadthing they are all just providing good developer experience wrapped around actual service and then charge money for developer experiences.
that's why don't shy way from hard stuff like aws.
💯
True, especially when it comes to scaling your apps, having knowledge with the underlying providers is invaluable
I'm curious to see the final code. Also, I would be extremely interested in seeing a video how you dissected and reverse engineered this code. The steps you made. I know it sounds strange but it would be extremely helpful for new programmers to see your mind at work breaking all the details down.
Theo is incredibly good at marketing / polarizing. The term of "fixing" something while just making sth. easier for devs by e.g. making a library/wrapper is popular by dev youtubers. Unfortunately, it is clickbaity and misleading. The only thing it might fix is the time cost and dx. However, dx and lazyness comes at it's cost. I wonder how much they will charge in the future. Nonetheless great tool.
This make's the experience a bit better, but I'll stick with S3. Great video and interesting topic
Cheers man
What is/ was bad/ wrong with the way we've been doing file uploads?
Nothing, just takes a lot more effort
very cool Josh. would love to see you build something useful with it, hint hint
would be great to see a full code example with an infrastructure setup based on cdk
I never really had a problem with uploading to begin with. Not sure what the big problem was or is?
Seems like for you there is none
@@joshtriedcoding I guess I’ve just had to do it so many times it becomes relatively easy. All of this is s3 specific right?
@@rugisis1 Yeah it becomes a routine task and you eventually get used to the presigned urls and how s3 policies work. This video is s3 specfic, though you could use any other cloud storage provider to wrap (e.g. Cloudflare R2)
No Github repo for the clone? 🥺🥺
Question do you have a AWS Client library that only generates the request for the presign post url that is edge ready i like to try supabase edge-function but most of the projects i work with need file uploads.
Its not possible for people to make 4k pictures in vercel production. I had to decrease the size by 10x in the client
When the UploadThing server returns the metadata to Your Server, does Your server then send that to the client to notify that the upload is done? Or does the client immediately know the upload is done when S3 tells it's done?
Would be great if you can do a tutorial on your 24hr implementation
Not an expert but if the client receive the policy and then is sended directly to an s3 bucket without the validation from the server the client can read and change the jwt before passing the image to a s3 bucket ? Sorry for the dumb question maybe i am missing something. Thanks
They cannot change the JWT because it was signed in your backend
repo?
Nice Job, and nice video !
Cheers man
How is putting and getting objects to/from s3 a bad experience? Lol
S3 is king
very reliable
is your implementation open source ?
why not post the code it's just aws-sdk, any way !
Well I use cloudinary hahahaha
if you could do a demo project for uploading multiple images to cloudinary with next, that would be sweet haahha
Tried cloudinary once and didn't enjoy it at all, not sure if that's gonna be a future topic
@@joshtriedcoding what’s wrong with it?