
Explore Next.js server components that render on the server, enabling caching and security, while building auth routes. Create login and signup pages with app router and common layouts.
Set up a Prisma service in NestJS to create users with a type-safe Prisma client, hash passwords with bcrypt, handle unique email errors, and return only id and email.
Apply a server action to create users with a form data payload, using the no-files interceptor to parse multipart form data, handle errors, and persist the user in Nestjs.
Enable NestJS authentication with passport local strategy, verify email and password, issue a jwt, protect routes with a guard, and wire up an auth module and login route.
Implement NestJS JWT authentication by extracting the current user, signing a token with their id, and sending it as a httpOnly, secure cookie.
Implement a global fetch wrapper in a Next.js app to send all post requests as JSON to a NestJS backend, converting form data to JSON and standardizing error handling.
Set the authentication cookie on the Next.js server from the NestJS login response. Parse the JWT from the Set-Cookie header and store it as a secure, HttpOnly cookie.
Implement authentication checks on the Next.js UI using server-side middleware to protect routes, redirect unauthorized users to /login, and exclude static assets with a custom matcher.
Implement an end-to-end logout flow in a Next.js and NestJS app by clearing the authentication cookie on the server and redirecting to the login page, while enabling programmatic navigation.
Learn to add a create product modal triggered by a floating action button, using client components, state management, and a Material UI modal to submit new products.
Implement product image uploads in the NestJS backend using Multer with disk storage to public/products, validate file type and size, and serve images as static content behind a JWT guard.
Build a product upload UI with a button and a hidden input to attach an image, display the file name, and upload via multipart form data to a NestJS server.
Expose the get product API in Next.js, fetch a product by id on the server, and render a single product with image, description, and price using a material UI grid.
Initialize the stripe js client with a publishable key in a Next.js UI, then generate a checkout session via the NestJS backend and redirect to Stripe hosted checkout.
Learn to configure stripe webhooks for checkout events, use the Stripe CLI for local testing, and update a product's sold status via Prisma, guided by session metadata.
This course will teach you how to build a modern Next.js app using the latest App directory approach. We will build a shopping app and learn all the core fundamentals of building a modern Next.js app. We will also connect the app to a NestJS backend and store data using Prisma ORM.
This architecture allows us to take advantage of the amazing performance & security features of Next.js with server-side rendering while still maintaining a clean scaleable backend using NestJS. By building a real working shopping app integrated with Stripe to accept payments we will go beyond the documentation & learn what it takes to build and deploy a full-stack web application to production.
Additionally, we will cover production deployment using AWS & Vercel to implement a continuous delivery pipeline and expose our application to the internet on a real working domain. This will ensure the app is automatically built & deployed with every commit without us having to do a thing.
The entire project will be protected with industry-standard JWT authentication so only authenticated users can access our application. We will utilize WebSockets to receive real-time updates from our backend whenever a new product is added or purchased. This will be facilitated with the usage of Stripe webhooks.
By the end of the course, we’ll have gone through the bulk of the Next.js documentation by building a real working app. You’ll be able to apply what you’ve learned to build your own modern full-stack app.