Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
MERN Stack Course: Build a Video Sharing Web App with AWS
Rating: 4.7 out of 5(15 ratings)
8,004 students

MERN Stack Course: Build a Video Sharing Web App with AWS

Master MERN Stack, AWS, and TypeScript to Create a Video Sharing MERN App with Download, Video Sharing and Auth Features
Created byVapa Academy
Last updated 10/2024
English
English [Auto],

What you'll learn

  • How to Build a Full-Stack Video Sharing Web App Using the MERN Stack (MongoDB, Express, React, Node JS).
  • Use TypeScript for Both Frontend and Backend Development, Ensuring Type Safety and Maintainable Code.
  • Implement Secure User Authentication Using JWT (JSON Web Token).
  • Create a Fully Responsive UI Using Tailwind CSS, Ensuring the App Looks Great on All Devices.
  • Handle File Uploads and Manage Storage Efficiently with AWS S3 for Video and Image Content.
  • Set Up Video Download and Sharing Functionality Within the Web Application.
  • Manage CRUD Operations (Create, Read, Update, Delete) for Videos and User Profiles.
  • Implement Search Functionality to Find and Play Specific Videos From the App.
  • Add Privacy Controls to Video Posts, Allowing Users to Choose Between Public and Private Settings.
  • Set Up Password Recovery and Reset Mechanisms Using Email.
  • Allow Users to Update Their Profile Information, Such as Name and Email.
  • Use Multer for Handling File Uploads in Node JS Applications.
  • Structure a Scalable and Maintainable Backend Using Express and MongoDB.
  • Learn Best Practices for Deploying Full-Stack Web Apps to Vercel.
  • Gain Hands-On Experience with Real-World Development Practices, Including Using AWS Services for Cloud Storage and Video Management.

Course content

1 section136 lectures13h 4m total length
  • Video Sharing Web App Project - Source Code0:05
  • Video Sharing Web App Project - Live Demo8:22

    Explore building a complete video sharing web app with the MERN stack and AWS, covering S3 storage, Redux state management, React Router navigation, user authentication, and video upload and playback.

  • Downloading Node Part - 12:33

    Install node.js and npm, download and configure VS Code, and verify installations with node --version and npm --version to prepare the development environment for the MERN stack app.

  • Setting Up The Vite Ts Part - 22:54

    Set up the frontend by creating a vite ts project with react and typescript, install dependencies, and run the dev server to view localhost.

  • Installing Tailwind Css Part - 31:44

    Install tailwind css along with postcss and autoprefixer as development dependencies, generate postcss.config.js and tailwind.config.js, and start configuring a color theme for the website.

  • Configuring and Checking Tailwind Css Part - 42:57

    Test and configure Tailwind in a React app by updating index.html, applying Tailwind through src and index.css, and verifying via a hello world render, including Tailwind config setup.

  • Configuring Ts in Back-end With Ts Part - 54:54

    Configure the backend with TypeScript by creating a backend folder, installing TypeScript, and generating tsconfig.json with strict, commonjs, ES2016, and dist output.

  • Setting Up Back-end Server Part - 63:26

    Set up a back-end server for a MERN video sharing app by installing express and @types/express, creating src/index.ts, and running with ts-node-dev on port 8000.

  • Setting Up The GitHub Part - 74:06

    Push your completed backend and frontend configurations to GitHub, create a repository, set up .gitignore to exclude node_modules and .env, initialize git, stage and commit changes, and push to master.

  • MongoDB Atlas Setup in Browser Part - 84:06

    Configure a MongoDB Atlas cluster in the browser for a 'my video hub' project on AWS. Add network access, either by IP or allowing anywhere, to enable connections.

  • Connecting DB With Mongoose Part - 95:55

    Connect db with mongoose by loading the Mongo URI from a .env file using dotenv, export a connect db function, and call it from index.ts to verify db runs.

  • Improvident DB Connectivity and Port Part - 102:35

    Configure the dot env port to 8000 for database access, load it via dotenv in index.ts, fall back to 8080, and push the changes to GitHub.

  • Defining Our First Schema Part - 116:45

    Create a mongoose user schema in the model folder following mvc, specifying name, email (required and unique), password, token, upload and download counts (default 0), with timestamps.

  • Starting Our Sign Up Controller Part - 125:21

    Implement the sign up user flow in the auth controller by validating email and password, checking for existing users, creating a new user, and returning responses.

  • Understanding and Sending Response Part - 135:10

    Create a reusable send response utility in src/utils/sendResponse.ts for Express controllers, handling status, success, message, and data with a response data interface and standard http status codes.

  • Understanding Routing in The Back-end Part - 145:36

    Learn to set up a scalable backend routing structure in a MERN app, including typing register requests and organizing versioned routes from index to sign up endpoints.

  • Checking Our API Using Postman Part - 156:07

    Test backend APIs with Postman by configuring a video hub folder structure, creating an auth signup request, and verifying user creation in MongoDB after enabling express.json.

  • Saving Password Securely in DB Part - 167:07

    Implement secure authentication by generating a 16-byte hex token with the crypto library and hashing passwords with bcrypt via a password helper, then store hashed passwords in MongoDB.

  • Finally Completing Our Sign Up Controller Part - 172:16

    Complete the sign up api: validate email uniqueness, hash password with crypt, generate token via crypto, and return success or error in the auth route.

  • Starting The Sign in Controller Part - 189:17

    Sign in with jwt using passport and passport-jwt in a stateless MERN workflow. Configure secret in env vars, extract bearer token, and initialize passport in index.ts.

  • Setting Up The Passport JWT Strategy Part - 196:33

    Set up a passport jwt strategy, verify user existence, and generate a json web token with a one-day expiry using an env secret for secure authentication.

  • Completing The Sign in Controller Part - 208:14

    Complete the sign in controller by validating user credentials with a hashed password check, generating a JWT token, and returning success or error responses for the MERN video sharing app.

  • Understand The JWT Authentication Part - 213:18

    Learn how jwt authentication flows from api version one to sign in, verifying passwords with bcrypt, and generating a jwt token for front-end use.

  • Creating Layout Part - 228:15

    Integrate the backend API with the frontend to visualize the design. Create a reusable layout with header, footer, and dynamic content via children, using React and tailwind CSS.

  • React Icons and Completing Layout Part - 233:30

    Create a main component that renders children with a flex column layout, centered items, full width, and a top margin; add a footer with social anchors and install react-icons.

  • Creating Sign Up Page Part - 249:04

    Build a centered sign up form with email and password fields, a sign up button, and join us today header, styled with tailwind and wired for react router dom.

  • Creating Sign in Page Part - 256:34

    Leverage react-router-dom to configure routing for sign up, sign in, home, and all videos pages in a MERN video sharing app, enabling seamless navigation without page refresh.

  • Capturing Email and Password From Sign Up Form Part - 265:56

    Capture sign-up data with useState, type definitions, and onChange for email and password; prevent default submit and prepare backend submission with future redux store integration.

  • Understanding The Form Data and useState Part - 274:50

    Learn to manage sign in form state with useState by creating auth form data for email and password, preventing default submission, and handling changes and submit events with TypeScript.

  • Setting Up Cors Part - 286:37

    set up cors between frontend port 5173 and backend port 8000, configure origins, and use axios with a base URL to post signup data to the backend.

  • Setting Up Redux Store Part - 298:14

    Configure the Redux Toolkit store using Redux Toolkit, define auth state with user, loading, and token, create an auth slice, and connect selectors for centralized state management.

  • Configuring Store Part - 303:50

    Configure the redux store with configureStore and the auth reducer in store.ts. Define route state and app dispatch types, and wrap app with the React Redux provider to share state.

  • Hitting Back-end API From Front-end Part - 316:32

    Send an asynchronous signup request from front end to back end using redux toolkit createAsyncThunk, with a typed payload and error handling.

  • Signing Up The User From Front-end Part - 323:04

    Dispatch the sign-up action from front end, sending the url, payload, and configuration to back end via axios, and handle success or user exists errors on the sign-up page.

  • Implementing Notification Part - 333:57

    Implement a front-end signup flow with toast notifications showing signup success or warnings, using a toaster container with top right positioning in the MERN video sharing app with AWS.

  • Sign in The User Part - 344:15

    Create a sync thunk for sign in that posts to the backend auth/sign in endpoint, uses a try/catch with toast feedback, and stores data.user.token in local storage.

  • Setting Up The Token in Local Storage Part - 357:21

    Set up token handling and local login state by wiring the sign-in async action to update the logged-in user, manage loading, and handle pending, fulfilled, and rejected cases.

  • Completing Sign in Part - 365:50

    Learn how to implement sign in in a MERN app by returning and storing a jwt token in local storage, enabling authorization and subsequent actions.

  • Revisit Store Part - 374:24

    Revisit authentication in MERN stack by implementing an auth reducer with create async thunk and JWT tokens; integrate backend API, sign in and sign up flows, UI, and git workflow.

  • Back-end API for Getting User Details Part - 389:38

    Implement a JWT-protected endpoint to fetch authenticated user details, validating the user from the JWT payload and returning non-password data for the MERN stack video sharing app.

  • Understanding Authorized Route in Back-end Part - 395:34

    Implement and test an authenticated route in the back-end by introducing a dedicated authenticated request handler, wiring JWT-based passport authentication, and securing the user profile endpoint.

  • Making Sidebar Part - 4010:24

    Build a toggleable left sidebar for a MERN video app, implement navigation and user profile UI, and manage state, routing, and data fetching in React.

  • Making User Profile Part - 4112:09

    Implement a mobile top nav and fixed sidebar, then build a centered user profile with an editable name and email form controlled by React state.

  • Completing The Side Bar and Profile Part - 424:41

    Toggle edit state to show save or edit, pre-populate user name and email in the profile, and fix sidebar visibility and routing in the MERN video sharing app.

  • Setting The User Details Part - 439:31

    Demonstrates fetching user details in a MERN app by using an auth reducer thunk, reading token from local storage, and calling backend profile API with a bearer token.

  • Implementing Protected Route in Front-end Part - 447:04

    Guard front-end routes with protected routing by checking a local storage token and redirecting unauthenticated users to sign in, while routing authenticated users to their profile.

  • Completing User Profile of User Part - 454:08

    Implement automatic redirection to the user profile after sign-in by wiring navigation with react-router, handle loading states, and refine the sign-in flow for a responsive MERN app.

  • Log Out User Part - 465:23

    Implement logout in the MERN video sharing web app by updating the auth reducer to remove the token from local storage via dispatch and navigate to the sign-in page.

  • Fixing The Bug in User Profile Part - 471:55

    Fixing the bug in user profile revisits authentication and authorization, token storage, and sending authenticated requests. It covers updating frontend with user details and logout redirects.

  • Back-end API for Updating User Part - 486:25

    Implement and test the back-end update user API with authentication, validate name and email, handle errors (including internal server error), and return appropriate statuses.

  • Integrating The Back-end API for Updating User in Front-end Part - 494:47

    Toggle the edit state on click, submit updated user data to the backend via post to /api/v1/user/update using a token header, and display success or error messages.

  • Updating User in Local State Part - 504:12

    Update user details in local state without calling an API by implementing an update user function in the auth reducer, dispatching updates for name and email, and validate changes persist.

  • Defining Custom Hook for Sending Auth Token Part - 513:30

    Create and export a custom hook for config with jwt to send auth tokens and update user details in real time within the mern stack video sharing app on aws.

  • Configuring Node-mailer Part - 525:36

    Install nodemailer and configure a Gmail smtp transport to enable sending signup emails. Load email and password from a .env file (process.env) and use a Google app password for authentication.

  • Sending Static Mail Part - 532:53

    Create a reset password mail function in the mailer using a transporter to send mail via Gmail to the user email with a reset password subject and html content.

  • Creating Transporter to Send Email Part - 545:51

    Demonstrates how to implement the reset password email function in the auth controller using ES6 exports, validate input, fetch the user, send the reset email, and test with Postman.

  • Designing Our First ejs Page Part - 557:37

    Install ejs and create a reset password email template using reset_email.ejs with inline CSS, a token variable, and a front-end reset link in an MVC view.

  • Configuring ejs Part - 563:35

    Configure ejs to render a reset password email by importing ejs, joining the view path, and passing a token variable, then test sending from the backend.

  • Understanding The Flow of Update Password Part - 572:06

    Understand the password reset flow in the MERN video sharing app: from backend reset email and token to front-end validation and updating the user password.

  • Complete The Back-end API to Update Password Part - 585:50

    Implement the update password back-end API by using the token from request params to identify the user, hash the new password, save changes, and return a success response.

  • Solving The Bug of The Updating Password Part - 591:42

    Fix the password update flow by generating a new security token after hashing the password, using crypto random bytes to prevent multiple updates in the backend.

  • Design The Reset Password Page Part - 608:31

    Builds the reset password page in the frontend using a React FC with an email input, useState, and form submission, then navigates to sign in after sending the reset email.

  • Integrating The Back-end to Send Reset Password Email Part - 615:53

    Integrate the front end with the back end API to send the reset password email in a MERN stack app, using async post calls with try/catch finally and loading state.

  • Completing The Reset Password Front-end Part - 622:05

    Develop and test the reset password front-end by implementing routing in router.tsx, wiring the reset password email flow, and previewing the page in local dev.

  • Integrating The Logic for Updating The Password From Back-end Part - 635:44

    Learn to implement the reset and update password flow in a MERN app by extracting the token from the URL and posting the new password to the backend.

  • Completing The Updating of Password Part - 645:20

    Implement and link the update password flow, test reset vs update password routes, debug backend routes, and verify login after password update while integrating front-end and back-end APIs.

  • Setting Up AWS Credentials Part - 656:54

    Create an IAM user and generate access keys, then configure environment variables for AWS access. Create and configure an S3 bucket, set the region, and prepare for video uploads.

  • Configuring AWS Client in Back-end Part - 665:42

    Configure the backend to upload files to an AWS S3 bucket by installing multer and Multer S3, creating an S3 client with region and credentials from environment variables.

  • Multer Middle-ware to Directly Upload in AWS Bucket Part - 676:12

    Configure a multer middleware to upload videos and thumbnails directly to an s3 bucket for a MERN video sharing app, with auto content type, metadata, two fields, and unique naming.

  • Defining Video Schema Part - 685:19

    Define a video schema in TypeScript for the MERN stack app, including title, description, S3 path, uploaded by user reference, privacy, thumbnail, and timestamps, then export the video model.

  • Defining Type of Video Schema Part - 693:49

    Define a video schema for the mern stack course using mongoose, including title, description, path, s3 key, url, privacy, thumbnail, and createdat/updatedat timestamps.

  • Understanding The Working of Uploading Part - 709:29

    Learn to implement the AWS file controller and route in a MERN stack app, configure Multer S3 middleware, handle video and thumbnail uploads, and enforce authenticated access.

  • Completing Uploading Video Controller Part - 716:13

    Complete the uploading video controller by saving video details to the database, validating user and video file data, and returning a success payload with video path, title, description, and thumbnail.

  • Testing API for The Uploading of Video Part - 726:00

    Test the upload api for videos using postman, generate and use a bearer token, and troubleshoot s3 permission errors while uploading a file to aws bucket.

  • Configuring APIs for The Uploading of Video Part - 733:12

    Configure APIs to enable video uploading by granting S3 permissions, test with postman, and ensure backend defaults for title and description in the MERN video sharing app.

  • Completing Upload Video API in The Back-end Part - 743:14

    Complete the upload video API in the back-end by fixing description handling in the AWS file controller and validating video and thumbnail uploads.

  • Fixing The Bucket Policy Part - 756:34

    Implement backend uploads to S3, create video and thumbnail keys, fix the bucket policy for public access, and validate uploads through the controller.

  • Designing Upload Page Part - 768:52

    Design and implement the frontend upload page for a video sharing app, adding video and thumbnail inputs, a public/private dropdown, and a live preview.

  • Completing The Upload Page Part - 778:06

    Develop the upload page for a video sharing MERN app by implementing title and optional description, privacy dropdown, and submit button, then link the route in router.tsx.

  • Designing Our First Text Editor Part - 783:04

    Install and integrate React Quill to build a description editor, apply full width, padding, border gray 300, rounded md, and on focus outline none with ring blue 600.

  • Capturing The Data From The Front-end Part - 799:37

    Capture inputs for video upload page using React useRef and state for video src, thumbnail, title, and description with React Quill. Implement change handlers to generate object URLs for previews.

  • Creating Url for Thumbnail and Files Uploaded Part - 805:13

    Wire change handlers for title, description, and privacy on input and select controls, implement a submit handler with prevent default, and plan to store the description paragraph in database next.

  • Understanding How to Send Files to The Back-end Part - 814:40

    Send captured title, description, and media to the back end using form data. Append title, description, video, and thumbnail, and manage loading and errors with a try-catch flow.

  • Sending The Files and Other Details to The Back-end Part - 825:02

    Learn to send frontend data to the backend with a post request, using form data and JWT-authenticated headers to upload video and thumbnail to AWS S3.

  • Testing of Uploading The Video From Front-end Part - 834:27

    Implement a loading state for video uploads and reset the form after success, setting title and description blank, privacy false, and video src and thumbnail null, with backend api integration.

  • Back-end API For Fetching Latest Videos Part - 845:22

    Develop and expose a back-end API to fetch public videos, populate uploader email, and return sorted results, using a MERN stack with AWS integration.

  • Back-end API for Fetching Single Video Part - 854:57

    Develop a back-end API to fetch a single video by id, with error handling and populated uploader email, returning 200 with the video or 500 on failure.

  • Back-end API for Deleting The Single Video Part - 864:43

    Implement a delete video API by id in the back end, handling errors and returning clear success or not found responses, with bearer token authorization.

  • Back-end API for Downloading Video Part - 878:28

    Implement a download video API that extracts the id, fetches the video by id, and streams it from AWS S3 to the client with content-disposition and content-type headers.

  • Understanding How Downloads Worked Part - 882:36

    Pass the user id in the request to increment a logged in user's download count, then save the user; the lecture covers video API operations.

  • Back-end API for Updating Video Details Part - 898:17

    Implement a back-end api to update video details - title, description, video file, thumbnail, and privacy - using id lookup, object.assign, and save with robust error handling.

  • Testing Back-end API for Updating The Video Part - 906:58

    Update the video through the back-end API by locating it, updating title, description, privacy, and optional video and thumbnail files, and validate changes with Postman in the AWS context.

  • Revisit Git Part - 911:12

    Update the video update flow in the backend, handle thumbnail and new video file cases with middleware. Then commit and push changes while preparing frontend visualization.

  • Defining Types of Video in The Video Reducer Part - 928:18

    Define video types and video state in the frontend reducer to interact with backend video APIs, enabling CRUD operations, file updates, and JWT-based axios configuration.

  • Integrating The Back-end API for The Public Videos Part - 937:49

    Implement a fetch public videos flow by defining an async thunk, using jwt config, calling the backend API to retrieve an array of videos, and handling errors with toast messages.

  • Selecting The Public Video Part - 943:47

    Implement a public videos fetch workflow in a MERN app by building a video slice with create slice, reducers, and extra reducers, handling pending, fulfilled, and rejected states.

  • Designing Hero Video Card Part - 959:14

    Design a hero video card for a MERN stack video sharing app with hover-enabled thumbnail, offering download, share, and open actions, plus title, description, and duration.

  • Understanding React Player Part - 967:36

    Learn to integrate the react-player package to handle video playback in a MERN stack app, including installation, thumbnail setup, hover-activated overlay for share and download, and play/pause controls.

  • Designing The Share and Other Icons Part - 979:32

    Implement share and open-in-new-tab icons for the video player by adding a link tag with React Router Dom, external styling, and a copy-to-clipboard function that shows a toast when copied.

  • Formatting The Video Duration Part - 984:59

    Format the video duration on the hero video card, display it only when greater than zero, using a format duration function for minutes and seconds with a time icon.

  • Designing The All Videos Page Part - 998:42

    Design the all videos page by fetching public videos and mapping them to hero video cards in a responsive grid, with routing and state management.

  • Designing The Home Video Page Part - 1009:29

    Design a two-section home page with a hero video card and a recently added videos area, using public videos, loading and playing states, and a watch now and play button.

  • Completing The Home Video Section Part - 1015:58

    Continue building the home page by adding a react player and a watch now button with tailwind styling, a transition, and center the hero card while setting isPlaying on click.

  • Understanding The Slider Part - 1028:46

    Build a responsive video slider in a MERN stack app with React Slick, covering setup, slider settings, responsive breakpoints, and integration with the home page.

  • Fixing The Design Bug Part - 1032:31

    Fix the design bug by integrating the react slick video slider, copying required css files, and updating app.tsx and home.tsx to render the video slider on the home page.

  • Integrating The Back-end API for Downloading The Video Part - 1047:35

    Implements video download by hitting the back-end API through the video reducer's async thunk, using video id and user id in query params, handling blob response for download.

  • Integrating The Download Functionality to The Front-end Part - 1053:16

    Develop the front-end download workflow for a video in a MERN stack video sharing app, including loading state, token verification, dispatching the download with video id, and error handling.

  • Designing The Single Video Page Part - 1068:58

    Design the single video page by fetching the video by id and managing loading and downloading states. Implement a blob-based download with an anchor click and feedback via toasts.

  • Completing The Single Video Page Part - 1078:34

    Designs the single video page for a MERN stack video sharing app, implementing loading state, an overlay with video title and description, and play and download buttons with styling.

  • Showing Data on Single Video Page Part - 1087:57

    Show how to render a single video page by conditionally displaying a React player when a video exists, with an overlay, a top-right download button, and AWS-based single video retrieval.

  • Adding Loader on Single Video Page Part - 1092:50

    Finish the single video page with a download button, verify sharing and navigation, and plan backend search API and dashboard UI integration for the MERN video sharing app.

  • Back-end API To Fetch Videos Uploaded by Logged in Users Part - 1108:45

    Set up a back-end API to fetch videos uploaded by the logged-in user using AWS, validating user identity with JWT and returning the user's video data.

  • Back-end API to Fetch Videos for Logged in User to The Front-end Part - 1116:12

    Integrate the back-end API for fetching videos of the logged-in user into the front end using a redux async thunk, with jwt config and loading state management in extra reducers.

  • Understanding Update of Video Part - 1126:01

    Build the user video gallery in a MERN app by creating the my videos component, fetching user videos with redux dispatch and jwt config, and guarding the route.

  • Styling Active Link Part - 1136:18

    Rewrite the my videos page from scratch, implement a flex layout with a left sidebar and main content, and style the active link.

  • Integrating The Delete of Video to The Front-end Part - 1148:46

    Implement delete video functionality on the front end by wiring a delete video action, updating the reducer state, and handling backend delete via jwt-authenticated requests.

  • Completing Deleting of Video Part - 1152:50

    Implement delete video flow by calling delete video with the correct id and jwt-config, update local state via the video reducer, and commit changes; next session covers editing videos.

  • Designing The Update Video Page Part - 1162:15

    This lecture fixes the thumbnail display by correcting capitalization, guides designing the update video page, and shows a pre-populated edit form with notes on future full video updates.

  • Pre Populating The Data for The Update Video Page Part - 1178:02

    Learn how to pre-populate the update video page using a central redux toolkit state, dispatch an edit video action, and navigate to the edit route with the selected video data.

  • Integrating The Back-end API for Update of the Video to The Front-end Part - 1188:39

    Implement the core update functionality by building an asynchronous update video thunk and sending a jwt-authenticated multipart form data put request with video, thumbnail, title, and description.

  • Understanding The Update Functionality Part - 1196:23

    Learn how to implement the update video functionality by rewriting the submit handler, building form data for file and thumbnail, and dispatching an update video action with JWT config.

  • Completing All The Video Pages Part - 1203:05

    Edit video details on the my videos page, update comments and bold descriptions, then save. Integrate the back end API to update videos and push changes.

  • Implementing Searching of Videos Part - 1217:03

    Implement search functionality for videos by combining public and user videos, then filter results by title and description using a thunk-based API call and a search bar.

  • Integrating The Search With UI Part - 1227:48

    Learn to connect a search bar to the MERN video app, combining public and user videos, and dispatch get search results when the query term changes.

  • Displaying Search Results Part - 1233:05

    Display search results by conditionally rendering a responsive grid of hero video cards from the search results array when a search term exists, using video.id as the key.

  • Designing a Custom Loader Part - 1242:36

    Design a reusable React loader component with a centered, spinning circular box using flexbox to center and fill the screen, ready to show during delays on pages.

  • Design User Dashboard Page Part - 1258:26

    Design a user dashboard page that shows the logged-in user's name, email, role, and counts of uploaded and downloaded videos, with details fetched via a token in local storage.

  • Displaying User Info Part - 1268:58

    Display and style a user info card on the dashboard, showing the logged-in user's name, email, and role with envelope icon and a responsive layout.

  • Showing User Upload and Download Count Part - 1274:57

    Display a responsive dashboard showing uploaded and downloaded video counts from the logged-in user, with flex layouts and styled sections.

  • Toggling Between Sign in and Dashboard Page Part - 1284:37

    Toggle between sign in and dashboard based on local storage token, showing home, my videos, upload video, and user profile, with skeletal loading planned for the next step.

  • Implementing Skeleton Loading and Loader Part - 1299:02

    Implement skeletal loading in a mern stack video app using react loading skeleton, rendering skeletons on home and video pages during loading with a responsive grid.

  • Deploying Front-end Part - 1304:58

    Deploy the frontend of the video hub to Vercel, create the final commit message, push changes, and launch a live site with cdn and serverless features.

  • Configuring The Vercel.json for Front-end and Back-end Part - 1315:23

    Configure vercel.json for front-end and back-end deployments, using rewrites to prevent 404 errors and routing all paths to index.html, and specify routes, build commands, and included files.

  • Understanding The Restriction on .env Variables by Vercel Part - 1325:13

    Push frontend and backend changes to Vercel, deploy the MERN video app, and fix deployment issues including 404s. Rename the reserved AWS secret key to AWS_secret_key and update references.

  • Deploying Back-end Part - 1335:54

    Configure AWS credentials and environment variables, set up Multer S3, and deploy and test a hello world API to verify front-end and back-end communication.

  • Solving The Cors Error and Testing Part - 1345:42

    Fix CORS error by aligning the frontend URL with the backend API, deploy changes, and test sign up, sign in, and video upload in the deployed MERN video sharing app.

Requirements

  • Students Don't Need To Have Any Prior Knowledge To Take This Course; They Will Learn Everything From It.

Description

In this comprehensive MERN Stack course, you’ll learn how to build a fully functional video-sharing web application from scratch, integrating cutting-edge technologies such as AWS, TypeScript, Tailwind CSS, and more. Whether you are a beginner or an intermediate developer, this course will guide you through the entire process of creating a full-stack web app that enables users to upload, share, and download videos. You’ll master the MERN stack (MongoDB, Express, React, Node.js) while diving into essential features like authentication, video streaming, and secure file uploads.

Throughout the course, you will work on a hands-on project: a fully responsive video-sharing platform where users can sign up, upload their videos, manage their profiles, and control privacy settings. You'll learn how to leverage AWS for video and image storage, making your app scalable and secure. Additionally, you’ll explore how to implement essential CRUD operations, manage authentication with JWT (JSON Web Token), and offer features like password recovery, search functionality, and user profile updates.

This course emphasizes building real-world skills through practical experience, and by the end of the project, you’ll have a deployable web app that demonstrates your expertise in modern web development. You’ll also learn how to deploy your app to Vercel, ensuring your project is live and ready to share with the world.


Video Sharing Web App Project:


  • Users can sign up, sign in, and manage their profiles, including updating their name and email.

  • Video uploads to AWS with Multer, allowing for scalable and secure file storage.

  • Video download and share features, enabling users to download videos or share video links.

  • Privacy settings for public or private video posts.

  • Full CRUD operations for managing user-generated content.

  • Password recovery and reset options via email.

  • JWT-based authentication for secure access to the platform.

  • Video search functionality allowing users to find and play videos.

  • Fully responsive design using Tailwind CSS for optimal display on any device.

  • Deployment to Vercel for hosting your web application.

By the end of this course, you'll have gained all the skills you need to build and deploy a full-fledged video-sharing web app using the MERN stack and AWS, and you’ll be confident in applying these skills to future projects.

Who this course is for:

  • Beginner And Intermediate Developers Looking To Master The MERN Stack.
  • Developers Interested In Building Full-Stack Web Applications.
  • Anyone Wanting To Learn How To Implement Secure User Authentication With JWT.
  • Students Looking To Gain Hands-On Experience With Type-Safe Development Using TypeScript.
  • Aspiring Web Developers Who Want To Build A Real-World Video Sharing Platform.
  • Developers Interested In Learning How To Work With AWS S3 For File Storage And Management.
  • Frontend Developers Looking To Expand Into Full-Stack Development.
  • Developers Wanting To Implement Video Streaming, Uploading, And Sharing Features.
  • Students Who Want To Learn How To Deploy Full-Stack Web Apps To Vercel.
  • Anyone Interested In Learning Tailwind CSS To Create Modern, Responsive User Interfaces.