Build a Complete SaaS Platform with Next.js 13, React, Prisma, tRPC, Tailwind | Full Course 2023

Поділитися
Вставка
  • Опубліковано 9 чер 2024
  • In this single video, we're building an entire, modern SaaS Platform from beginning to end.
    ⭐Kinde Auth: link.joshtriedcoding.com/kinde
    ⭐Discord for questions/answers: / discord
    ⭐GitHub Repo: github.com/joschan21/quill
    Full Feature List:
    🛠️ Complete SaaS Built From Scratch
    💻 Beautiful Landing Page & Pricing Page Included
    🔒 Authentication Using Kinde
    💳 Free & Pro Plan Using Stripe
    ⚡ Infinite Message Loading for Performance
    📄 A Beautiful And Highly Functional PDF Viewer
    🔄 Streaming API Responses in Real-Time
    🎨 Clean, Modern UI Using 'shadcn-ui'
    🚀 Optimistic UI Updates for a Great UX
    📤 Intuitive Drag n’ Drop Uploads
    ✨ Instant Loading States
    🔧 Modern Data Fetching Using tRPC & Zod
    🧠 LangChain for Infinite AI Memory
    🌲 Pinecone as our Vector Storage
    📊 Prisma as our ORM
    🔤 100% written in TypeScript
    🎁 ...much more
    Copy & Paste list to follow along with the video (optional):
    github.com/joschan21/quill/bl...
    Thanks so much to Kinde for making this huge project possible by sponsoring this video!
    Chapters:
    0:00 - What you'll learn & demo
    5:38 - Creating the project together
    8:16 - The SaaS Process Overview
    9:22 - Creating the Landing Page
    33:36 - Making the Landing Page Look Awesome
    1:11:31 - Creating the Navbar
    1:20:37 - Authentication
    1:27:13 - Creating our Dashboard
    1:41:05 - Syncing our Database
    1:49:30 - tRPC Setup
    2:06:39 - Creating our Database
    2:18:29 - Finishing our Database Sync
    2:24:06 - Perfecting our Dashboard
    3:12:33 - Let Users Delete Files
    3:25:21 - Dynamic Data Fetching in NextJS
    3:32:03 - Designing our Product Page
    3:44:33 - Creating our File Uploader
    4:13:33 - Setting up UploadThing
    4:24:45 - Perfecting our File Uploader
    4:50:41 - Rendering PDF Files
    5:06:41 - Feature Bar for PDF Renderer
    5:57:29 - Creating the Messages Section
    6:14:17 - Instant Loading States
    6:22:12 - Creating our Chat Input
    6:31:55 - Make Components work together using Context
    6:41:14 - Streaming API Response in real-time
    7:26:27 - Receiving Stream on the Client
    7:38:38 - Infinite Queries for Performance
    7:58:51 - Displaying Messages
    8:23:49 - Optimistic Updates for Instant Feedback
    8:55:54 - Infinite Queries & Streaming Demo
    8:59:17 - Stripe Setup
    9:03:31 - Creating our Pricing Page
    9:34:55 - Payment Integration
    9:39:31 - Subscription Management Page
    9:55:37 - Preview Deployment
    10:07:04 - Finishing the Navbar When Logged In
    10:43:08 - Making Link Previews Look Beautiful
    10:51:48 - Give Pro Plan Better Features
    11:05:27 - Deployment to Vercel & Final Test
  • Наука та технологія

КОМЕНТАРІ • 943

  • @joshtriedcoding
    @joshtriedcoding  8 місяців тому +538

    Making these videos is so much effort but thanks so much for all your nice comments, really makes it worth it

    • @PeterGriffin-ce4gj
      @PeterGriffin-ce4gj 8 місяців тому +1

      thanks josh gigitty

    • @reubence_
      @reubence_ 8 місяців тому +1

      Why not use clerk?

    • @jamesnelson174
      @jamesnelson174 8 місяців тому

      You are a great content creator and awesome tutor. Nice work Josh.❤

    • @ajayravi7870
      @ajayravi7870 8 місяців тому

      I dont know Next.js prisma and tailwind can I learn from this

    • @joker-wr8pt
      @joker-wr8pt 8 місяців тому +1

      thank you sir you're great motivation hy guys i'm kinda confused for my final year project what should i make please give me the idea note i'm backend intern at the company in node js, but id do have basic react knowledge which allow me to become full stack now the thing is it's difficult for me to built anything but i;m confused what should i make saas build project unique one

  • @codinginflow
    @codinginflow 8 місяців тому +631

    This is insane. People are building this project as their startups and Josh just makes a free tutorial out of it🤯

    • @joshtriedcoding
      @joshtriedcoding  8 місяців тому +62

      appreciate you man, hell yeah

    • @codinginflow
      @codinginflow 8 місяців тому +19

      ​@@joshtriedcoding Happy to see that you managed to stay under 12h 😁

    • @mzmarshall2351
      @mzmarshall2351 8 місяців тому

      Exactly. This is really cool

    • @user-pe5qy8sy8z
      @user-pe5qy8sy8z 8 місяців тому

      For real kudos man

    • @garudkardnyaneshwar3426
      @garudkardnyaneshwar3426 8 місяців тому

      Seriously people’s building their startups using this source of information. 🫡 to josh

  • @codewithantonio
    @codewithantonio 8 місяців тому +102

    Absolutely insane!!

    • @PrabhuKiranKonda
      @PrabhuKiranKonda 8 місяців тому +10

      You guys both are just insane. 🔥

    • @roguesecurity
      @roguesecurity 7 місяців тому +4

      But your saas-ai tutorial was best😁

    • @riponsoum
      @riponsoum 11 днів тому

      😅😅

  • @Nathan-xk3hd
    @Nathan-xk3hd 8 місяців тому +25

    Damn 11 hours Josh! Thanks for working so hard to bring this content to the community and not putting it behind payed JS tutorials and signups. Super clean keep up the good work.

  • @user-pn4go4ml6g
    @user-pn4go4ml6g 8 місяців тому +9

    this video is an absolute gem! 😍 It's incredible to see a complete SaaS platform being built from scratch using such an impressive stack of technologies.

  • @gyash21
    @gyash21 8 місяців тому +16

    I'm really looking forward to build this Josh. I'm very happy to find out a great teacher like you.
    Keep them coming.

  • @al-ft1ng
    @al-ft1ng 8 місяців тому +17

    Josh you are insane man. Those videos are going to be insanely helpful for people like me who have the basics down but don't know exactly how to proceed efficiently with certain things. Much much love bro.

    • @joshtriedcoding
      @joshtriedcoding  8 місяців тому +6

      happy to hear that! I've learnt the same way when getting started

  • @snivels
    @snivels 8 місяців тому +4

    Incredible, incredible work man. You're truly a gift to the community.

  • @mehdichamiani6838
    @mehdichamiani6838 8 місяців тому +5

    I really like these videos that are unqiue and advanced at the same time, there are always Netflix, Twitter, Amazon clones out there BUT this one rocks. Thanks Josh, really appreciate it man.❤❤

  • @_jb5261
    @_jb5261 8 місяців тому +16

    Great video Josh!
    For those building this, an improvement to this is to validate pdf pages on drag enter or click upload and show the error state in the upload input.
    Or you could show a message on each upload on the free tier stating that even if they upload a pdf with more than 5 pages only the first five pages will be accepted
    The second option is more user friendly and would probably work better.

  • @shivanshusingh-qy3iq
    @shivanshusingh-qy3iq 8 місяців тому +1

    One of the best tutorials I've come across. Amazing depth!

  • @flavioneto1081
    @flavioneto1081 8 місяців тому +7

    can't imagine how much effort went into it, this content for free is just insane. you're killing it bro

  • @zjsievers1
    @zjsievers1 7 місяців тому +15

    A true tutorial - The fact that you spent almost an entire chapter explaining why the auth-call back is important/how it works is extremely impressive and helpful.

    • @muhammadzainmumtaz6036
      @muhammadzainmumtaz6036 3 місяці тому

      bro can u tell me which database is useed in this project. im new😒😒

  • @developerpranav
    @developerpranav 8 місяців тому +26

    🤯🤯 God this is awesome! Auth + PDFs + Stripe + OpenAI Streaming! Josh you're a legend! This will get me a real job by the end of this year 😆
    Thank you so much!!

    • @joshtriedcoding
      @joshtriedcoding  8 місяців тому +8

      Appreciate ya man, that would be awesome

    • @ahmadalghali
      @ahmadalghali 8 місяців тому +2

      Hopefully you get a good job!
      However, technologies focusing on the having a REST api and SPA approach rather than tRPC is most likely what you will be doing in a job and that’s what will resonate more with your interviewers, some might not even have heard of tRPC and might pick a candidate that can show they understand the standard web practices betterZ
      Nevertheless, best of luck with your job search!

    • @developerpranav
      @developerpranav 8 місяців тому

      Thanks a lot for the insight! @@ahmadalghali

  • @edwardchungweb
    @edwardchungweb 7 місяців тому +49

    1:46:38 [React Query issue] As React Query 5 has just been released and the current version of tRPC (v10) still depends on React Query 4, the installation cmd of tRPC would be: pnpm add @trpc/server @trpc/client @trpc/react-query @trpc/next @tanstack/react-query@^4.18.0 zod . And this would be updated in tRPC v11.

    • @edwardchungweb
      @edwardchungweb 7 місяців тому +14

      2:06:22 React Query 5 has a breaking change that all callbacks have been removed from useQuery. So the use of onSuccess callback here is no longer feasible.

    • @amardeep6088
      @amardeep6088 7 місяців тому +5

      @@edwardchungweb hey then what would be the new code for this

    • @bradenstitt4678
      @bradenstitt4678 5 місяців тому

      @@amardeep6088Use useEffect if the status is successful or an error

    • @abrahamgonzalez3167
      @abrahamgonzalez3167 4 місяці тому +1

      @@bradenstitt4678 Hi! what would the code with useEffect be like?

    • @jacklagrosepiquette-qy3hq
      @jacklagrosepiquette-qy3hq 4 місяці тому

      This is my implementation, I use an useEffect for that
      useEffect(() => {
      // error code unauthorized :
      if (error?.data?.code === "UNAUTHORIZED" ) {
      router.push("/sign-in");
      }
      // success
      else if (!isLoading) {
      router.push((data !== undefined && data.success && origin) ? `/${origin}` : "/dashboard");
      }
      }, [data, isLoading]);
      @@amardeep6088

  • @josephdodd4208
    @josephdodd4208 8 місяців тому +2

    Absolutely insane to offer this kind of content for free! You are a true 🐐for doing this Josh! Pushing small business forward is a huge step to tackle the corporate conglomerate landscape we see today. Best of luck to everyone who will start their own side hustles from content like this, let's come up with great ideas 💡

  • @roberth8737
    @roberth8737 8 місяців тому +22

    Absolutely love these complete project sessions - awesome work Josh!

  • @chessknock17
    @chessknock17 8 місяців тому +8

    This is amazing. Please make more full-stack projects 🎉

  • @NuRRRL96
    @NuRRRL96 8 місяців тому +2

    Amazing job Josh! You've been a major help in my learning experience.
    Imo saving the file after every className would be amazing to show exactly how everything works.

  • @muaazsarfaraz1067
    @muaazsarfaraz1067 4 місяці тому +1

    You are a gem - 11hrs of straight valuable content with nothing behind paywall

  • @gabrielbianchi2246
    @gabrielbianchi2246 8 місяців тому +4

    Josh, you have officially stepped up your game big time
    You continue to impress me and the work you put into these videos is trully inspiring

  • @judevector
    @judevector 8 місяців тому +3

    Whaaaaaat,am I dreaming or what 🤯. Josh thank you so much this will help many of us that has Sass ideas but not very good at building pages like this Kickstart it . Thank you so much ❤

  • @dragosmorozan1841
    @dragosmorozan1841 8 місяців тому

    I really appreciate your style. The way you explain things is very clear, which is a significant advantage when learning something new like this. Thank you for this excellent tutorial!

  • @hashblast3r
    @hashblast3r 8 місяців тому

    Great job Josh. Love how you add explanations and side comments instead of just writing the code. You are great at teaching man! We will now expect one of these full projects every week 🤣🤣🤣🤣🤣

  • @mehulparekh619
    @mehulparekh619 8 місяців тому +3

    Its an amazing project. I was confused about the t3 stack but it is the best stack for me now. Trpc and prisma makes backend so much easier. Thanks Josh for such quality content !

    • @rohankupate5917
      @rohankupate5917 2 місяці тому

      Hey sir I have one problem after deployment on vercel can you help me . Suddenly my upload button stopped working?

  • @gokulkrishnan7989
    @gokulkrishnan7989 7 місяців тому +16

    Excellent work! A gentle suggestion would be add the following components as part 2. Feature flags/experimentation using posthog etc., event tracking using umami , and headless CMS for marketing. This would be deadly combo. Most of the tutorials do not cover these components with SaaS. These are very important for product optimization. Thank you

  • @joejiang8353
    @joejiang8353 7 місяців тому

    Great tutorial! Josh, you are a legend, so attentive to details and cover a wide range of topics!

  • @user-db1ue8om7v
    @user-db1ue8om7v 8 місяців тому +1

    Amazing! Congrats on this awesome release!

  • @mortenkristensen4541
    @mortenkristensen4541 Місяць тому +5

    Number #1 advise nobody ever gives you: To avoid too many conflicts (usually happens due to new versions of a package). Make sure your package.json file matches Josh's file on github. If you run into issues, align the two and write pnpm up. It will update all your packages to the matching versions of Joshs

    • @DivyarajsinhGohil14431
      @DivyarajsinhGohil14431 Місяць тому

      thanks man

    • @x-ecutors8601
      @x-ecutors8601 Місяць тому

      Hey, sooo, I was doing this. However, I noticed that everytime, I try downgrading the @tailwindcss/typography": ^0.5.12" to the same one with Josh. It just does not downgarde and was still like that.

  • @universecode1101
    @universecode1101 8 місяців тому +13

    This is the coolest project you did Josh 🚀

  • @markus_dev_cwb
    @markus_dev_cwb 8 місяців тому

    Incredible project Josh! Tks to share, amazing.

  • @elcontrastador
    @elcontrastador 8 місяців тому

    Your content is stellar. We appreciate you, Josh!

  • @user-tr7vl7vb3o
    @user-tr7vl7vb3o 2 місяці тому +3

    Great video,
    In the part of getting the user information at the beginning of creating the dashboard, I realised that you have to use 'await' in front of 'getKindeServerSession' and 'getUser' function, and accordingly make the page an async function.

    • @WarTornTales
      @WarTornTales 2 місяці тому +2

      hey, my code still doesn't work and your the only one who commented about a potential fix, but when I put await in front of both the functions instead of getting an error under email, I just get one under the "user" (in user.email)

    • @chinemelumchuba-nwene1503
      @chinemelumchuba-nwene1503 Місяць тому

      @@WarTornTales make the function enclosing the "await" keyword an async function by adding it like this:
      const page = async () => {
      const { getUser } = getKindeServerSession();
      const user = await getUser();
      if(!user || !user.id) redirect('/auth-callback?origin=dashboard');
      return (
      {user?.email}
      )
      }

    • @liwanshsaini1661
      @liwanshsaini1661 15 днів тому

      @@WarTornTales same issue mate. is there any solution? please help

  • @oluwaseunladeinde410
    @oluwaseunladeinde410 7 місяців тому +4

    This blew me away. First, it's a fully deployable application, the tech stack used is modern, the teaching was clean and clear, it's very in-depth content; very thorough. Then it's free at the same time. Josh, thank you very much.
    I have a question though, seems react-query has deprecated onsuccess from their UseQuery and ultimately trpc follows. Would there be an updated tutorial to improve on this as I got stuck at that point? Still reading up on my way around though.
    Nevertheless, thank you, Josh!

    • @zjsievers1
      @zjsievers1 7 місяців тому

      were you able to resolve this?

    • @leonvanzyl
      @leonvanzyl 6 місяців тому +3

      This doesn't bode well for the use of TRPC in production applications.
      Either way, the solution is to use the useEffect hook from React.
      import { useRouter, useSearchParams } from "next/navigation";
      import React, { useEffect } from "react";
      import { trpc } from "../_trpc/client";
      function Page() {
      const router = useRouter();
      const searchParams = useSearchParams();
      const origin = searchParams.get("origin");
      const { data, isLoading } = trpc.authCallback.useQuery(undefined);
      useEffect(() => {
      if (!isLoading && data) {
      // User synced
      router.push(origin ? `/${origin}` : "/dashboard");
      }
      }, [data, isLoading, origin, router]);
      }
      export default Page;

  • @backonbring
    @backonbring 8 місяців тому

    Just discovered your channel, and I must say, you create some of the best content out there! Keep going at it, I will definitely recommend your videos and I will for sure keep watching!

  • @mobythereal
    @mobythereal 8 місяців тому

    You really outdone yourself on this one. Congrats man what an amazing tutorial! Please keep these kind of videos up.

  • @shyamande1761
    @shyamande1761 2 місяці тому +3

    Can i use an alternative for planetScale, as it doesn't have any free plan

  • @tshiamotodd3644
    @tshiamotodd3644 8 місяців тому +3

    Hey Josh thank you for making this video... Quick question brother... The current free tier of pinecone does not support namespace so it makes it difficult to group vectors to a single file. Do you know of any other tool similar to pine cone that provides namespaces on its free tier?

  • @SoraKokai
    @SoraKokai 8 місяців тому +1

    Woooow, insane man, thank you for the content!

  • @rawazmahmood
    @rawazmahmood 8 місяців тому

    What a legend! Keep it up, Josh. This is insane!

  • @riodjajoesman4989
    @riodjajoesman4989 2 місяці тому +3

    Hey josh, in 2:04:38, you used onSuccess in the useQuery function but as of now it’s deprecated and cannot be used anymore. Can you suggest a workaround to this? Thanks

    • @joesuss4669
      @joesuss4669 2 місяці тому +1

      did you get a workaround? im facin the same issue.

  • @maby7228
    @maby7228 8 місяців тому +5

    Hello Josh, first of all, I loved the project, so I appreciate your great work. I've been following it, but I'm having an issue with the Pinecone integration. It seems that since you made the video, the way it works has changed a lot. Now, it has a different type of pod, a pod-starter. In your case, you can select the pod-s1, but whenever I try to implement it, I always get an error saying that I exceed the maximum transfer quota. I couldn't find a way to solve it since the documentation doesn't specify how to do this using Lang, as in your video. Besides, I don't understand much about AI things. I wanted to know if you knew of any solution.

    • @mitol5549
      @mitol5549 7 місяців тому +3

      I spent a lot of time, but I found a solution for pinecone 1.1.1 and pod type starter.
      in pinecone.ts:
      import { Pinecone } from '@pinecone-database/pinecone';
      export const pinecone = new Pinecone({
      apiKey: process.env.PINECONE_API_KEY!,
      environment: 'gcp-starter',
      });
      in api>uploadthing>core.ts:
      ...
      const pineconeIndex = pinecone.Index('quill');
      const embeddings = new OpenAIEmbeddings({
      openAIApiKey: process.env.OPENAI_API_KEY,
      });
      await PineconeStore.fromDocuments(pageLevelDocs, embeddings, {
      pineconeIndex,
      });
      ...
      that works for me...

    • @SrElmoGamer
      @SrElmoGamer 7 місяців тому

      @@mitol5549 I really need help. How you fix the type error in pineconeIdex? Type 'Index' is missing the following properties from type 'VectorOperationsApi': _deleteRaw, _delete, delete1Raw, delete1, and 16 more.ts(2740)
      pinecone.d.ts(8, 5): The expected type comes from property 'pineconeIndex' which is declared here on type 'PineconeLibArgs'

    • @michaelfrieze
      @michaelfrieze 7 місяців тому

      @@mitol5549 I am still getting a typescript error on pineconeIndex.
      "Type 'Index' is missing the following properties from type 'VectorOperationsApi': _deleteRaw, _delete, delete1Raw, delete1, and 16 more.ts(2740)"
      EDIT: Nevermind, the code you shared does work. I just had to update langchain to get it to work.
      I am using:
      "langchain": "^0.0.172"
      "@pinecone-database/pinecone": "^1.1.2",
      I am still able to use the free starter from pinecone.

    • @StabilDEV
      @StabilDEV 7 місяців тому

      this doesnt partition the index by pdf so every question will always be answered using all PDFs of all users... @@mitol5549

  • @AlphabetAYT
    @AlphabetAYT 8 місяців тому +1

    Found this gem and can't believe you are going to teach all of this for FREE! I am going to watch the whole thing and give an update.

  • @MarceloPlaza
    @MarceloPlaza 4 місяці тому

    Thank you so much. It is really a gem, so much information available that surpasses even entire courses or tutorials.

  • @jaygadhetharia7224
    @jaygadhetharia7224 4 місяці тому +4

    For 2:05:35 this might help u
    const query = trpc.authCallback.useQuery(undefined, {
    retry: true,
    retryDelay: 500,
    });
    // Check for errors in the query result
    if (query.error) {
    const errData = query.error.data;
    if (errData?.code === 'UNAUTHORIZED') {
    router.push('/sign-in');
    } else {
    // Handle other types of errors
    console.error("An error occurred:", query.error);
    }
    }
    // Continue with other logic based on the query result
    if (query.data?.success) {
    router.push(origin ? `/${origin}` : '/dashboard');
    }

    • @SiddharthKumarGope
      @SiddharthKumarGope 3 місяці тому

      can you explain how you came up with this solution.

    • @jaygadhetharia7224
      @jaygadhetharia7224 3 місяці тому

      just searching everywhere google , gpt etc
      @@SiddharthKumarGope

  • @jameshonour7661
    @jameshonour7661 4 місяці тому +4

    Hello developers, for anyone having the issue rendering the pdf file, which it does not show up on screen and the network request return a 403 error, this is how you could resolve it, go to core.ts file and under the onUploadComplete change the url from the modified one to file.url, somehow the url that Josh provided is not working, so go with the file.url instead and remember to delete all the files before retrying because the url of the files is already invalid. Hope this help!!

    • @teenageworrior1634
      @teenageworrior1634 2 місяці тому

      still show Failed to load PDF file. and pop up opens to download that pdf

    • @jameshonour7661
      @jameshonour7661 2 місяці тому

      ​@@teenageworrior1634 The issue might be with your browser. I get the same issue using Chrome because of the default behavior of the browser when dealing with PDF files; it triggers the download manager instead of displaying it, but even when I change the settings, it does not work. I do not know why, but there is one solution to this issue to my knowledge: using a different browser like Microsoft Edge.

    • @matarloum2894
      @matarloum2894 3 дні тому

      The file.url instead of the Josh url solved the rendering of the file. You saved my mental state. I still have the "Too many pages in PDF" even with small pdfs but probably is another error.

  • @Renzo-of3yn
    @Renzo-of3yn 8 місяців тому

    Josh, you are amazing! All these projects are very useful for us 🎉

  • @yantech.4249
    @yantech.4249 8 місяців тому

    Josh you are amazing. You turn a startup project to a free video tutorial. Thanks man you are one of the best on UA-cam

  • @user-vi6yv5xl7q
    @user-vi6yv5xl7q 7 місяців тому +4

    Hello. It is the 9 of November 2023. I am doing this course. I am at 1:31:29 and the code works only if I will create async Page.tsx component and if I will call the getUser function using await.
    I don't know why. But may be this comment will help somebody

  • @fuyu848
    @fuyu848 7 місяців тому

    Amazingly done video!, Love these complete long projects.

  • @jeffkyengofficial754
    @jeffkyengofficial754 Місяць тому

    Instant subscribing. To the up and up!!

  • @ismumchowdhury1533
    @ismumchowdhury1533 8 місяців тому

    Was actually just looking for the next tutorial! These are amazing keep it up ❤

  • @user-lp7oy8di4t
    @user-lp7oy8di4t 8 місяців тому

    "Great video! Looking forward to more tutorials on Next.js projects, especially ones related to inventory management. Your content is always top-notch!"

  • @TechMagic204
    @TechMagic204 Місяць тому

    I am madly impressed! Cheers mate!

  • @pjholmes2
    @pjholmes2 8 місяців тому

    Josh, this is really outstanding work. Thank you !

  • @ahbarajaib2357
    @ahbarajaib2357 20 днів тому

    Hi Josh, thank you for making this, i watched the intro to the course. Its amazing what you are doing.

  • @notromario
    @notromario 7 місяців тому

    Well done Josh, thank you. This is top content!

  • @yandartau4435
    @yandartau4435 8 місяців тому

    ayyyyyy, shout-out to you !!! needed this

  • @zxcvbnm-pb1we
    @zxcvbnm-pb1we 8 місяців тому

    What a video. Golden content. Everyone watched this content should definitely pay for it. This is insane. Subscribed.

  • @tomich20
    @tomich20 8 місяців тому

    Awesome Josh, im subscribing. Keep it up!

  • @wilsonmela6343
    @wilsonmela6343 8 місяців тому

    This is massive Josh, thank you.

  • @swapnilharpale-ic5fq
    @swapnilharpale-ic5fq 8 місяців тому

    Woahhhh what an effort to teach us end to end saas building. Thank you josh

  • @night23412
    @night23412 8 місяців тому

    okay this might actually be the greatest project I've seen on youtube

  • @lochanarathnayake11
    @lochanarathnayake11 8 місяців тому +2

    WTF , This Is Amazing Bro , The Best Saas Project Ever I Seen On The Internet , Thank You For Your Hard Work ....

  • @romulororizz
    @romulororizz 6 місяців тому

    You are amazing, man! Thank you so much for such a valuable content. Keep on keeping on, brother!

  • @_aryan_570
    @_aryan_570 8 місяців тому

    🙂Man, I'm speechless, I am learning so much here. Thank you so much.

  • @leonardojaques6586
    @leonardojaques6586 8 місяців тому

    Wow. I will definitely ~try~ to watch it all!

  • @soustitrejawad
    @soustitrejawad 2 місяці тому

    Absolutely phenomenal 😮

  • @goatslayer5957
    @goatslayer5957 3 місяці тому

    Love you Josh this is awesome!!! Thanks for making the web better!

  • @ahsanali580
    @ahsanali580 5 місяців тому

    Absolutely amazing content I've seen till now. Thanks for sharing your knowledge. Appreciate your hard work 💯

  • @larbiwiran3888
    @larbiwiran3888 8 місяців тому

    insane value provided, thanks josh you're in another level dude

  • @robertm4934
    @robertm4934 8 місяців тому

    I've began working on a lot of Next side-projects for my work, and although I follow a lot of the best practices that I've seen and read up on thus far, this video will cement a lot of things, I'm sure of it. I plan on watching this and re-creating it this weekend, thank you Josh! You and Web Dev Cody are saints 🙏

    • @rohankupate5917
      @rohankupate5917 2 місяці тому

      Hey sir I have one problem after deployment on vercel can you help me . Suddenly my upload button stopped working?

  • @user-fw1ok4lz2j
    @user-fw1ok4lz2j 8 місяців тому

    just wow man!! keep the good work

  • @yassineoh813
    @yassineoh813 6 місяців тому

    You are just awesome JOSH!!

  • @snehalgaurkhede
    @snehalgaurkhede 7 місяців тому

    This amazing project video ever seen on UA-cam!!🎉🎉

  • @biLLie_wiLLie
    @biLLie_wiLLie 8 місяців тому

    Wow! Big job. Thank you 👍

  • @sthefanocarvalho2823
    @sthefanocarvalho2823 8 місяців тому

    That's completely awesome! Amazing work
    Thanks for sharing
    You've just got a sub

  • @felixchukwu9133
    @felixchukwu9133 8 місяців тому

    Thanks for all the effort you have put in creating this project. These features are rare to find,even in paid courses

  • @kenkaneki2468
    @kenkaneki2468 8 місяців тому

    Thank you so much for this!! This is awesome❤

  • @theBrilliant1o1
    @theBrilliant1o1 6 місяців тому

    Your coding is an art, thank you

  • @boguldu
    @boguldu 7 місяців тому

    I learnt a lot with it! I take my notes and keep learning.

  • @crystaljaneroche7229
    @crystaljaneroche7229 4 місяці тому

    This really is very helpful. More power to you!! :)

  • @geekenway
    @geekenway 4 місяці тому

    Thank you very much for your dedication, consistency and hardwork.

  • @MuhammadBilal-kj9lp
    @MuhammadBilal-kj9lp 8 місяців тому +1

    I haven't watched the video but thank you so much for this hardwork. Appreciated

  • @elvissibetyu7228
    @elvissibetyu7228 7 місяців тому

    Thanks a lot Josh 💯 Awesome work.

  • @user-co4yk5pm5r
    @user-co4yk5pm5r 8 місяців тому

    Wow! so much value in one video

  • @74Bagas
    @74Bagas 8 місяців тому

    my man, SUPER!!! vielen dank. thank you very much.

  • @shiveshdurga1432
    @shiveshdurga1432 2 місяці тому

    Thank you so much for this video. This is amazing!!

  • @christianharris5783
    @christianharris5783 2 місяці тому

    Dude thanks for this! Ive been learning coding on my own and have been learning WAY more through this than just random projects. Thanks again!

    • @christianharris5783
      @christianharris5783 2 місяці тому

      also being new to this - how do you change from npm to pnpm? do you use the terminal to change this before you open the code in VSL?

  • @fikriahmad1459
    @fikriahmad1459 8 місяців тому

    this man is MVP. never disappointed !

  • @53Queijos
    @53Queijos 3 місяці тому

    much love and success for you bro, i do not have words

  • @mateocarino
    @mateocarino 8 місяців тому

    Awesome work by the way bro, thanks so much

  • @ismaeelll
    @ismaeelll 8 місяців тому

    Thank you so much man I am so glad for the youtube algorithm for suggestion you to me in that day ❤

  • @besizzo
    @besizzo 8 місяців тому

    These complete project sessions are 🔥🔥🔥

  • @alikhanmehboob610
    @alikhanmehboob610 8 місяців тому

    I liked the video just for the effort. Great work man!

  • @user-hv2mg3dz5y
    @user-hv2mg3dz5y 8 місяців тому

    daaayyummmnn !! bro your content is super good !!!

  • @Brocollipy
    @Brocollipy 8 місяців тому

    Great job, thanks so much for sharing.

  • @SmartWeb-jr1md
    @SmartWeb-jr1md 7 місяців тому

    Josh, you are undoubtably the best

  • @hamzamellahi120
    @hamzamellahi120 8 місяців тому

    love you content men, keep it up!

  • @silvers.9617
    @silvers.9617 7 місяців тому

    Great job, thank you! 👑