T3: TRPC, Prisma and NextAuth Done Right

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

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

  • @fev4
    @fev4 Год назад +151

    This is the best implementation of an ad I've seen. Deeply integrated into the content.

    • @arjundureja
      @arjundureja Год назад +15

      Probably the first time I watched an ad instead of skipping it

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

      Completely watched this ad. It was a great, non annoying ad. Great work!!

    • @KronosaurusRex
      @KronosaurusRex Год назад +5

      And best of all, seems like something that adds real value to the video itself

  • @alalalal291
    @alalalal291 Год назад +69

    Great introduction and love how well the ad was presented. One small thing to mention though is that even though T3 stack is popularized by Theo, he has actually not created Create T3 App, it's created by the community.

    • @jherr
      @jherr  Год назад +24

      Fair enough, my bad. Thank you community!

    • @ToddDunning
      @ToddDunning Год назад +8

      You know that has confused me too. I mean it says all over the place it's created by him, and then it says the community elsewhere. I think Theo is not exactly what we'd call shy and self-effacing.

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

      @@ToddDunning I believe the idea is Theo is creator of T3 stack(the idea of using typescript, tailwind, trpcs etc), but not the creator of create-t3-app which is a utility to bootstrap a t3 stack project.

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

      @@Winslow_Tech Sounds like in the future I will need more accurate attribution.

  • @hunterbertoson156
    @hunterbertoson156 Год назад +10

    I appreciate you showing us how to deploy it as well. I feel like so many tutorials dont show how to deploy.

  • @nazar1744
    @nazar1744 Год назад +27

    Finally this Stack gets more popular. It is so nice to work with it!

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

    Just starting as a developer and even though I don't get exactly how every tiny bit works under the hood I can appreciate and understand a lot of what was explained. Amazing and super rich content. Thanks again Jack!

  • @stefankudla809
    @stefankudla809 Год назад +4

    Not only did this example make it easy to understand the T3 stack, but it looks stunning with Daisy UI! Enjoyed being able to focus on the functionality more than the styling.

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

      Higly recommending to avoid daisy tho 💀

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

      @@JEsterCW why??

  • @exokristian
    @exokristian Год назад +4

    Condensed and so clearly articulated! Wonderful presenting and teaching skills. Thank you for your great work.

  • @jaany
    @jaany Год назад +3

    T3 video from the legend himself, and he got a sponsor too? Hell yeah

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

    Having this type of content for free is really a blessing. Thank you so much! 🚀

  • @ismi-abbas
    @ismi-abbas Год назад

    I've been searching all day long how to quickly get into this t3app, and for me this is the most quick and precise tutorial. Thanks Jack!

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

    Thanks Jack...I just learnt about tRPC and was thinking about integrating in next.js...And at that moment your video dropped...Thanks again...

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

    Jack are you reading my mind?? I was searching tutorial on exact tech stack and this came up!😀😀

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

    Omg this couldnt be more perfect in time! I was actually just posting a stack overflow question because I was not able to refresh the page after mutation, I tried a lot of things yesterday, read a ton of documentation but somehow I couldnt and went to sleep angry lol, I guess I missed the onSucess inside the useMutation hook Idk I thought Id alteady tried it. Thanks!

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

    Hey thanks a lot for this content. I remember doing a project alongside your video and kind of forgot about it. Now I was stuck again with the .query .mutation procedures and I just remembered somewhere in my head about your videos and ta-da... you put me back in track in no time. Thanks, really :)

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

    Amazing setup Jack.

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

    the background scene of your video is beautiful !

  • @infisspablo8602
    @infisspablo8602 Год назад +4

    Banger video! Definitely helpful stuff for people who are just starting with T3 stack but also for folks who played with it for a bit

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

    Amazing video, Thank You Jack.👏🏼
    in 32:57 instead of creating the Topic type You can inport this like that:
    import type { Topic } from "@prisma/client";

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

      True in this case. But if the TRPC layer weren't a straight pass-thru, and instead were doing some type of permutation, then you would not have proper sync between the client and the server. Because the client is talking to the server, and not to prisma directly.

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

    I wish that NestJS supports tRPC officially

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

    That's really helpful to hear about keyboard shortcuts, tools and plugins along with tutorial.

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

    Thank you so much for this tutorial. It's not super long. You have no idea how much you helped me, except that the tutorial you don't pause after you input code and that makes it crazy hard to follow it. I had to drop the speed down to 0.25x to catch the code you entered before it went off screen and that still too multiple tries. The instructions aren't 100% complete for Windows, you must put the API keys in the .env folder, and you need to add the correct API keys for the production GitHub OAuth app. Other than that it's nice to have a short tutorial that doesn't combine a bunch of the same stuff that takes so much time and has nothing to do with my app. Everyone's app is different and none of these tutorials have been good for me due to the bloat.

  • @nishatsayyed8326
    @nishatsayyed8326 Год назад +3

    This is just incredible. Thanks for sharing Jack
    Waiting for more and more amazing professional quality content.

  • @SanjuKumar-hk8yy
    @SanjuKumar-hk8yy Год назад +2

    Thank you Jack, for make a video on tRPC ☺️☺️

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

    This was 😘👌 Just needed a quick intro to T3 to see if it'll work for my next project, but got a lot of bonus exposure to the likes of DaisyUI, CodeMirror, react-markdown etc.

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

    This channel is incredible, you have a great teaching style. Very pleased to have found this channel, it has already been incredibly helpful.

  • @bassam.2023
    @bassam.2023 Год назад

    What can I say? 🤔
    The most comprehensive tRPC tutorial out there! 🙌🏻 🙏🏻
    Thank you so much! 😁
    PS Thanks for bringing attention to daisyUI, a life saver for those of us who are a bit behind on the CSS side of things!

    • @bassam.2023
      @bassam.2023 Год назад

      An interesting follow-up video might be to convert this app to allow for multiple users, each having access to only their own notes.

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

    Scribe ! OMG what a great product and great AD Jack, such a master !

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

    Great vid and stack I've been working in a personal project for 4 months and this is gold for it. Thanks!!!

  • @deathmachine808
    @deathmachine808 Год назад +4

    Another excellent tutorial, cheers Jack

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

    Love it. The generated typing is really nice. Wild that useState is already “Good ol’ useState 😂”. JS moves so quickly.

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

    Will be watching this later. I've actually started a generic blog project using the stack. Enjoying it so far. Will see how much I enjoy on something more complex though.

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

    tRPC is amazing. When I saw Theo's video I got motivated to port the entire stack over to svelte lol
    The tRPC part was pretty easy to set up, it feels like magic to use lol

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

    The only ad I don't want to skip❤

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

    this was an extraordinary primer on the combo. thanks!

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

    Very well explain everything start to end of deployment. Thanks

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

    Thank you very much! This is the best video to get you started with the t3-stack.

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

    thank you for showing some love for pnpm

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

    can you make more of these? just started learning t3 stack and its amazing so far, just need to grasp few more concepts regarding trpc

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

      I would like also see more works like that 😊

  • @arhamsc9097
    @arhamsc9097 Год назад +4

    Awesome tutorial 👍🏻👍🏻, also would be great if you could share the terminal theme and autocomplete package you are using 😊.

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

    Mmm. I never had any idea on TRPC until I saw this quality video. Thanks Jack, thanks a ton

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

    Been looking forwarding to this. Thanks Jack!

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

    Overall really great project to start with T3 stack (tRPC under the hood😌) already loving this stack 🤩, thanks for bringing in

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

    You win best sponsor integration! I was all ready to fast forward an off-topic irrelevant product shout out… but this was spot on. Hope you can keep up the sponsor alignment as you continue to grow.

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

    I'm pretty new, can you elaborate on which env variables were set when deploying to vercel? you sorta just skipped right through them ty :) I know the database , did you change the next-auth url from localhost etc?

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

    **THE BEST** Tutorial on T3 stack! But sir I struggle with prisma, I think I must see a tutorial on it. Coming from mongoose I think it is overwhelming.

  • @devagr
    @devagr Год назад +3

    17:22 missed opportunity to show the new copy-paste env file into Vercel dashbaord

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

    Yay!!! So glad to see you cover it!

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

      Just finished watching the video.
      Fullstack will never get easier than that!

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

    Ty for making clear some things that not clear in my mind about how data flows UI to DB .

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

    Thanks for the tutorial content Jack 😎🖖

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

    Great video, Jack. Really helped me get ramped up quickly with a CRUD application in a single day.
    One minor question,
    Why use RouterOutputs["modelName"]["getAll"][0] against pulling the type directly from '@prisma/client'?

    • @jherr
      @jherr  Год назад +3

      Because what I'm actually doing is calling TRPC, and not Prisma directly, so IMHO I should rely on the TRPC types because the TRPC layer could (but isn't in this case) be doing a little something extra with the Prisma output.

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

    really valuable information, thank you jack

  • @jjrise
    @jjrise Год назад +3

    this type of content is the best, I really enjoy the code walkthroughs. T3 can be a bit confusing when new, especially relating to trpc and nextauth. One thing I did notice different is using refetch instead of .invalidation. Is there a difference between those two approaches for the onSuccess part of your mutations?

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

      Yeah, I probably should have used the invalidation stuff, whoops.

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

      How does the invalidation work? Where can I read about it or see some examples?

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

      @@szluganaware tanstack.com/query/v4/docs/react/guides/query-invalidation It's super nice, basically you can say; when this query succeeds then refetch this other query automagically.

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

      @@jherr Thank you!

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

    Great content as always, learnt a lot. Thanks Jack

  • @manoj-k
    @manoj-k Год назад

    Very well explained, Thank you very much for this video,❤

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

    Finally a video using a T3 Stack thanks

  • @danielbark
    @danielbark Год назад +3

    Great video Jack!
    I published almost the exact same video last week :P
    I also tried out some optimistic UI updates on the tRPC mutation hook if that would be interesting to anyone here.
    But definitely finish this video first! 💯

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

      I watched yours first, and it was A+! It was my first intro to optimistic updates and it was great. Thanks!

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

      @@arctiinae Thanks a lot! Glad you enjoyed :)

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

    best tutorial for old idea but new tech stack. 🤟🤛🤜

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

    Love your work ! Thanks for the video

  • @07Weka
    @07Weka Год назад +2

    This is a super cool and clear tutorial. One thing I noticed when experimenting with this is that there is a significant lag following saving of a topic or note before they display in the list, as it needs to first save and refetch from the database.
    There are probably many solutions, but what would be the best approach to displaying a newly added tag in the list before syncing it to the database? Does trpc support optimistic updates?

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

    I’d love to see a version of create-t3-app using the new server component app folder structure

  • @mohammed.haydar
    @mohammed.haydar Год назад +2

    Can you please do a tutorial how to professionally customize terminal to be exactly like that you have?

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

    Foreign key constraint failed on the field: `Note_topicId_fkey (index)`
    ❌ tRPC failed on note.create:
    Invalid `prisma.note.create()` invocation:😞

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

    Thx, the best tutos I must say.

  • @levantos
    @levantos Год назад +3

    So many gems in this, thanks Jack!

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

    A good channel for non-beginners.

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

    19:56 Instead of excluding the whole `tailwind.config.cjs` file, I think you could also just add `// @ts-ignore` on the line above the error?

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

    This is a very cool lesson! Thanks

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

    You can copy/paste your environment variables on Vercel now!

  • @Michael-Martell
    @Michael-Martell Год назад +1

    yes! Thank you! This video should be a hit!

  • @ВладиславШутеев-ф1м

    Super content. Thank u!

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

    @+- 25minutes. If your on page top.ts if the .topic is underlined with red showing error, restart your ide.
    Or CTRL + SHIFT + P then type: restart TS Server
    Not sure why you need to do this, but it works.

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

    Hi Jack and thanks a lot for the great content !
    I followed along until adding new topics and refetching them on the page. Although it works great in localhost I get a 401 unauthorized in vercel prod environment when trying to create a topic. Any idea what could be causing the discrepancy in prod ?

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

    Hey Jack, the React Round-Up podcast link in the description is broken.

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

    its really fun when sometimes I heard your high voice, ex: @40:11 , awesomeeeeeeeee 😝

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

    I learned a bunch!

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

    I can feel the difference that is there in the three months since the video released.

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

    Hello and thank you for this amazing tutorial!
    I have a small question the app doing SSR on the pages for the fetched data?
    I tried to check the source code on the browser and it does not seem to be rendering the fetched content on the server side.
    Is there a simple way of doing this while preserving the react-query cache?
    Thanks!!

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

    Could you please share you configuration for chrome, I like your right tab bar, that’s looking awesome. Also good to see more great extensions. What do you use for creating user friendly diagrams?

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

      It’s Arc browser

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

    Great project, very interesting! 🤯
    Even if I'm a little disappointed because I can't export my environment variables. 14:43

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

      export GITHUB_CLIENT_ID="YOUR_ID_HERE"
      export GITHUB_CLIENT_SECRET="YOUR_SECRET_HERE"

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

    I'm use Arc browser too, it's really cool

  • @jonathangoodman9751
    @jonathangoodman9751 Год назад +4

    Thanks for putting together this video. Wondering if anyone else has hit an eslint error at 24:55?
    Unsafe member access .findMany on an `any` value.
    Unsafe member access .create on an `any` value.

    • @fzrte
      @fzrte Год назад +4

      Just reload VS Code. Should do the trick

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

    after i deployed to the vercel i can't get the github page for authorization. But in development there is no such problem. it basically says 'can’t establish a connection to the server at localhost:3000'. Is there a problem about environment variables i couldn't figure it out. how can i solve this?

    • @orang3hill
      @orang3hill Год назад +3

      Yeah you gotta update the NEXTAUTH_URL environment variable in Vercel deployment to be the production value (that the prod OAUTH in your github is set up for). You'll need to push something to branch to get it to redeploy,

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

      @@orang3hill Thanks for some clarification, but I am still really confused about this. We set it in the video to: localhost:3000/api/auth/callback/github. Do we change this on Github or change it on Vercel? Or just delete?

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

    Welcome to the pnpm gang!

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

    26:35 -why do we need to check for enabled: user, if we are querying protectedRoute?

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

    Hi, Jack! Great video, as always! Thanks. I have a question about Next Js. It is possible to do microfrontends with 13 version?

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

      I mean, something similar to module federation? :)

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

    I can't thank you enough!

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

    If you have a problem with Unsafe return at 24:39, just restart ESLint server (Ctrl + shift + P => ESLint restart server)

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

    Knew this video was coming!

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

    t3 stack is my new go to

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

    Is this a whole lot different with Next 13.4? As it introduced a lot of new stuff, wondering if using TRPC is still a thing. Just got into Next and this looks like yet another great video to cover this but just want to make sure!

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

    damn, arc browser looks so cool🥵🥵

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

    which plugin do you use to have "intellisense" for your zshell?

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

    Been wanting to try T3 for a while now. How does it compare with Blitz (their Next implementation, since now Blitz is “agnostic”)? On the surface they seem quite similar except for Next Auth. They both use Prisma, and Blitz’s RPC is similar to TRPC with less boilerplate

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

    what's name of the extention you're using e.g. in 39:55 to pin line 31 on the top of screen?

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

      You mean the line src > pages > index > Content?

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

      ​@@jherr No no, line: const Content: React.FC = () => {

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

      @@jakubkurdziel2407 Got it, that's just a VS Code option now; editor.stickyScroll.enabled

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

      @@jherr thank you!

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

    Im using T3 with NextAuth and Auth0 for authentication.
    I couldn't figure out how to get the accessToken inside the router without adding it to the session.

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

    What setup you using in your vscode terminal? Looking to replicate TIA

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

    Since we don’t have a dependency array in useQuery in this scenario, how do we achieve something like pagination? Or what’s the alternative for the dependency array here?

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

      tanstack.com/query/v4/docs/react/guides/paginated-queries

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

    Jack, is there a reason why you take the types from RouterOutputs instead of Prisma types?

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

      It more accurately reflects what's coming back from the call.

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

      @@jherr got it. I’d still prefer and use the Prisma types in my projects.

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

    awesome, wondering how can i add two different methods of providers in the same project as I am struggling a bit with it, is there any video I can see from your net?

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

      What issues have you run into?

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

      @@jherr when adding github and google. when it is redirecting to github page, then an error for not a valir GET HTTP message is displayed, that's about the only issue so far. Google works fine but I cant get github to work

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

    This was great!