
Learn to build a full stack React Native e-commerce app powered by Express.js and MongoDB, with cross platform Android and iOS, PayPal or credit card payments, and an admin dashboard.
Set up prerequisites for the React Native and NodeJS course by mastering JavaScript basics, React fundamentals, and HTTP methods, then install NodeJS, Visual Studio Code, and Expo Go for testing.
Set up the Express.js backend to power the React Native e-commerce app, install Nodemon for live-reload, and configure server.js and npm scripts in a backend folder.
Install mongoose to connect to MongoDB, define a product schema linked to a user, add a review schema, and create a product model with timestamps.
Build the core e-commerce backend with a product controller for fetch all and get by id. Support admin create, update, delete, and apply async handler with pagination and keyword search.
Build product api controllers with public endpoints for listing and fetching products, and admin-only endpoints for creating, updating, and deleting products, including sample defaults and error handling.
Develop a product review creation controller that allows authenticated users to add a rating and comment, prevents duplicate reviews, updates total reviews, and recalculates the average product rating.
Define product routes in express to support get products, create product, get product by id, update, delete, and create product reviews, using a router exported for server use.
Set up a cloud-based MongoDB Atlas database for a React Native app by creating a project and cluster, securing credentials with an env file, and connecting via mongoose.
Define how user data is stored in MongoDB by creating a user schema with name, email, password, and admin flag, and implement bcrypt hashing with pre-save and a compare method.
Generate a JWT for the user ID, sign it with a secret, and send it as an HTTP-only, same-site cookie that expires in 30 days to secure sessions.
Develop a robust user management system with login, registration, and profiles, including admin tasks. Integrate validator for input checks and JWT-based tokens set as HTTP-only cookies.
Logout by clearing the jwt cookie and sending a 200 status with a success message. Retrieve the authenticated user's profile by id and update with validated email and password.
Implement admin-only user controllers to manage users: fetch all users, delete a user by id, view by id excluding password, and update user details with email validation.
Design and implement api user routes with express, including register, login, logout, profile management, and admin actions, plus routes to list, get by id, and update users.
Implement authentication middleware to protect routes using JWTs stored in cookies, verify user identity, distinguish normal and admin access, and enforce 401 unauthorized when needed.
Apply authentication and admin middleware to product and user routes to ensure logged-in users can create reviews or update profiles, while admins can add, delete products and update user details.
Enable cors and cookie parser in the express app to support the React Native client, parse json and urlencoded bodies, and access authentication tokens from cookies.
Seed the MongoDB database by importing sample users and products, linking each product to the admin user, using a Node.js script with Mongoose and dotenv.
Fix bugs in the full-stack e-commerce app by ensuring the password field is required with salt hashing, and correcting routes, middlewares, and user/product controllers.
Switch from back end to front end by building a React Native app with Expo. Start the app with npm start, scan QR code, and run it in Expo Go.
Set up an expo app with expo router, build a root stack layout, implement a three-tab navigation for home, orders, and profile, and adjust app.json and package.json for router entry.
Learn to use redux toolkit RTK query to fetch and cache product data from a backend API in a React Native app, scaffolding the API slice with a base URL.
Implement a products API slice with RTK Query, adding get products and get product details endpoints, and integrate it into a configured store with middleware and provide tags.
We build a reusable React Native rating component that renders five stars with Font Awesome icons, driven by a value and optional text.
Create a reusable message component for React Native that renders success, error, or info alerts. It accepts a variant prop (default error) and children, applying variant colors and styles.
Create a reusable product card for the home screen that displays name, image, price, stock, status, and rating using Redux data and a get image URL helper.
Implement the product component's availability patch with stock-based styling, display in-stock or sold-out text, and finalize rating and layout styles for container, image, and info area.
Create a dynamic React Native header with a logo, search bar, and cart icon, using navigation and URL params for search and pagination.
Build a dynamic header in a React Native e-commerce app, featuring top row with logo and cart icon and a search row with input, icons, and clear and show-all actions.
Explore building a dynamic header in a full-stack e-commerce mobile app with React Native, including a static bottom row for welcome messages, a search bar, and a cart badge.
Develop the home screen to fetch and display a list of products from the back-end API, integrating a header for search and a product component with pagination for large datasets.
Implement a responsive home screen with paginated buttons, persistent search, and a two-column product grid, including loading, header with search and cart, and error handling.
Implement the home screen style for a React Native e-commerce app by applying safe area layout, platform-specific padding, centered content, and a paginated, styled button set with active states.
Develop the product details screen in a React Native app, displaying image, details, information, and rating for a single product, with planned quantity and add-to-cart features.
Deliver part 2 of product details screen by implementing loading and error handling: render a spinner during fetch, show an error message with a back button, and handle no data.
build a product image card component in a React Native e-commerce app, constructing full image URLs from a base URL, handling missing images, and styling for centered display.
Create a product details card in React Native, wire a quantity picker, and display product name, price, rating, reviews, description, and stock status on the product screen.
Develop the product details screen by adding an image card component, showing stock status, implementing a quantity picker from 1 to stock, and wiring an add to cart button.
Build the product details screen with an image card component featuring white background, corners, padding, and shadow; style the name, rating, price, description, stock, picker, and add to cart button.
Develop an advanced cart system with a Redux Toolkit slice and a cart utility file to calculate items price, shipping, tax, and the total, with async storage persistence.
Build cart slice with redux toolkit, hydrate from async storage, add to cart, remove from cart, save shipping address and payment method, clear and reset cart, persist updates using utility.
Integrate the cart into the header and product details using redux toolkit state and async storage, display item counts, and enable add-to-cart actions.
Build the cart screen in a React Native e-commerce app, enabling viewing items, updating quantities, removing items, and displaying the cart total via the Redux cart slice.
Implement a shopping cart interface that shows an empty cart message, renders a flat list of items, enables add-to-cart, product detail navigation, quantity picking, and item removal.
Build and style the shopping cart screen in a React Native app, implement renderItem, add an order summary with total calculated as quantity times price, and a checkout button.
Create a shopping cart screen in a React Native app with item details, price, quantity picker, remove icon, and a bottom aligned order summary showing totals and a checkout button.
Implement authentication in a React Native mobile app by creating an auth slice and user API slice with login, registration, and logout mutations using Redux Toolkit Query and AsyncStorage.
Persist the Redux store with redux-persist for auth and cart in a React Native app, using AsyncStorage and a PersistGate to maintain sessions.
Build a complete login screen for a react native app using redux toolkit query, implement a login mutation to authenticate via API calls, and manage credentials and routing.
Implement a login screen using Redux toolkit query mutation, manage user state and redirects with local search params, and build a reusable form container with a keyboard avoiding view.
Implement a responsive login screen in a React Native app, styling a front-form container with keyboard avoiding view, logo and slogan, and email and password inputs with visibility toggle.
Implement the user login screen by adding a sign-in button with loading state and a link to register, including touchable opacity, activity indicator, and form styling.
Style the user login screen with password input and toggle, a full-width login button, and a register link; show a welcome message using redux state and navigate home after login.
Implement a centralized error handling middleware in an Express.js backend to catch errors, return a user-friendly response, and hide stack traces in production, with login flow.
Build the user registration screen in a React Native app, capturing name, email, and password with validation, using redux toolkit query to register and update authentication, then redirect to user.
Build the registration screen in a React Native app with name, email, password, and confirm password fields and a visibility toggle. Reuse login styles and validate strength and mismatch.
Integrate a product reviews section on the product screen to display existing reviews and prepare Redux data flow, while setting up a create review mutation for posting reviews.
Continue styling the product review section and integrate the add review feature using the create review mutation, a review modal, and user auth, showing login prompts when not registered.
Implement the add review modal for the product screen, including rating and comment inputs, a loading indicator, and backend API submission to create new product reviews.
Continue implementing the add review modal in the React Native app, detailing modal overlay styling, content, rating selection, review input, and the submit button’s enabled and disabled states.
Install an add review modal on the product screen, wiring a create review mutation with rating and comment validation, show success or error toasts, and refresh product details.
Implement the shipping screen to collect delivery details, save them to the Redux cart slice, and navigate to the payment screen after login verification, with proper redirects.
Create a shipping screen that pre-fills from cart shipping address, validates inputs, saves the address via Redux, and navigates to the payment screen, using safe area and keyboard handling.
Implement shipping screen part 3 by adding postal code and country inputs with a numeric keyboard and a continue button that triggers a submit handler to navigate to payment screen.
Builds a payment method selection screen where users pick PayPal or credit card after entering shipping address, saves the choice to the Redux store, and navigates to place order screen.
This lecture expands the payment screen, wiring a touchable continue button with a submit handler, styling the form group, radio buttons, and labels, and preparing for backend order model integration.
Design and implement a mongoose order schema in a back-end folder, detailing user reference, order items with product data, shipping and payment details, pricing components, paid and delivered statuses, timestamps.
Develop backend order management endpoints and a price calculation utility for items, shipping, tax, and total. Create orders, fetch by user or ID, and update paid or delivered status.
Build order api controllers to fetch my orders, fetch an order by id with populated user details, and update order to paid with payment result handling and stock updates.
Enable admin-only delivery updates in the update order to delivered controller, marking orders delivered with a timestamp, and fetch all orders with user details for admins.
Set up order api routes in the back end to create and fetch orders. Secure endpoints with protect and admin middleware, enabling get by id, pay, deliver, and mine routes.
Install and configure the PayPal checkout server SDK, load env vars, and validate client id and secret to switch between sandbox and live environments with a PayPal http client.
implement backend routes to support PayPal payments, including a config endpoint for the PayPal client ID and create order and capture order endpoints with validation and error handling.
Learn to implement PayPal order capture with a dedicated router, performing order retrieval, capture requests, response mapping, and server config for client id and sandbox URL.
Implement a Redux Toolkit query orders API slice with PayPal integration, enabling create and capture of PayPal orders, and fetch PayPal client id for client-side payment processing.
Build the place order screen as the final review, showing shipping details, payment method, and a summary of items and total cost, with client-side navigation guards and backend api dispatch.
Create the place order screen by rendering cart items, shipping address, and payment method, then compute and display the order summary with item totals, shipping, tax, and total.
Build the place order screen with conditional error messages, a disabled button, and a loading indicator in React Native, using a left and right column layout and detailed item/total styling.
Build and style place order screen, apply total text and button styles, navigate to order screen, and record the order in MongoDB Atlas with items, shipping, and total price.
Explore the order screen in a full-stack e-commerce app, detailing shipping, address, items, and payment status, while implementing PayPal payments via a WebView in React Native.
Set up a PayPal checkout in a React Native WebView with a retry-loading PayPal SDK, create backend orders, and manage approval, cancellation, and errors to finalize the payment.
Build the admin order flow with delivered mutations, loading and error handling, and toast feedback, while integrating PayPal payments and a web view for shipping details and items.
Fix message display in the order screen and disable add to cart when stock is zero, ensuring paid and delivered statuses update via focus effect and refetch in Expo Router.
We fix the fragment error by switching to push navigation on product and place order screens, test cart and checkout flows, and plan to switch to an exporter for navigation.
Build an orders screen in a React Native e-commerce app, fetching and displaying user orders with login handling, a loading indicator, and details like total price, payment, and delivery status.
Wire a FlatList of orders to show order number, total price, and paid status, with a view order button navigating to the order screen using the order id.
Develop the profile screen as the user's personal hub, linking to orders, history, and account settings, with admin panels to edit and create products, and manage users and orders.
Implements a profile screen with a safe area view, scrollable content, a profile card with image and username, and a navigation menu including account information, orders, cart, and admin items.
Explore styling and navigation for the profile screen, including profile image, username, and menu items, with admin vs normal user behavior and future steps to update account information.
Implement the account information screen in a React Native app to let users update name, email, and password with pre-filled data and profile mutation feedback via toast.
Implement the account information screen with a scrollable form for name, email, password, and confirm password, handle API errors via toast, and show a loading state during update.
Implement the account information screen in a React Native app, detailing safe area layout, a styled form container, and email/password update flows with validation and success messages.
Step into the admin role to build an orders list screen that fetches all orders via redux toolkit query and shows payment and delivery statuses.
Implement orders list screen part 2 by adding a delivery status cell with delivered logic and a red times icon for undelivered, plus a view details button to order screen.
Build an admin user list screen that fetches and displays all users in a centralized table, enabling editing or deleting accounts via get users query and delete user mutation.
Implement a user list screen in a React Native app, featuring a FlatList of users, admin indicators, and edit or delete actions with navigation to the user edit screen.
Implement the user list screen styling and interactions, including header, table rows, cell formatting, action buttons, and delete confirmation, while noting admin restrictions, and preview the upcoming user edit screen.
Create an admin user edit screen that fetches a user’s details and updates name, email, and admin status, saving changes via get user details and update user mutation.
Implement a user details screen in React Native with safe area view, keyboard avoiding view, and a scrollable name and email form. Handle loading, errors, admin toggle, and update actions.
Explore styling and interactions for the user edit screen in a full-stack React Native app, including form layout, admin toggle, and navigation flows that update users and reflect changes.
Build a backend image upload endpoint using Multer, configure disk storage, file type filters, and a unique file naming scheme, and expose an accessible image URL.
Build an admin product list screen with paginated data, enabling fetch, view, edit, create, delete, and image upload of products using product mutations and API slice.
Implement a paginated product list screen with dynamic page buttons, conditional rendering when data is missing, and navigation to add or edit products using router parameters.
Implement the product list screen part 3 by adding a delete button with a trash icon and pagination, and wire a create product mutation with a backend endpoint and sample image uploads.
Implement a mobile product edit screen that fetches product data, allows editing multiple fields, and integrates an image picker and image uploader to manage product images directly in the app.
Implement a product image upload flow: request media permissions, pick an image, upload via mutation, update the image, and show success or error toasts.
Continue building the product edit screen by adding form groups for name, price, image with upload, stock, category, and a multi-line description, with a submit button and loading indicators.
Implement the product edit screen for a full-stack e-commerce mobile app. Style the form, handle image uploads, and validate price and stock for live updates.
Replace React Navigation with Expo Router in the place order screen, wiring router.push and router.back using use router and use local search params, and uninstall the old navigation package.
Fix the no route named screens warning by adding a layout jsx and hiding the header; implement loaders in the product list and during add or delete actions.
Resolve Expo SDK incompatibility by upgrading to the latest Expo version, aligning dependencies, and following Expo documentation to keep the React Native app running smoothly.
Unlock the power of full-stack mobile development by building a complete, modern e-commerce application from the ground up! In this hands-on course, you'll master the essential technologies that drive today's top mobile experiences: React Native for a dynamic frontend, coupled with a robust Node.js, Express.js, and MongoDB backend. This isn't just about learning concepts; it's about building a tangible, production-ready project that you can proudly add to your portfolio.
We'll start by setting up your optimal development environment, ensuring you're equipped with Node.js, VS Code, and ready to launch your apps seamlessly using Expo Go.
The course then dives deep into both the frontend and backend. On the React Native side, you'll design and implement a user-friendly mobile interface, focusing on creating responsive layouts that look great on any device. You'll build core e-commerce functionalities, including:
A comprehensive product listing page with detailed product views.
Secure user authentication, covering user registration, login, and protected routes.
An efficient admin panel for full product management (create, read, update, delete).
Seamless product image upload directly from your mobile device, integrating with your backend.
On the backend with Node.js, Express.js, and MongoDB, you'll architect powerful RESTful APIs. You'll learn to:
Design and manage your database schema for users, products, and more.
Implement secure authentication and authorization logic, including token-based security and role-based access control for administrative features.
Develop robust API endpoints for all CRUD operations on products and other resources.
Handle file uploads securely, preparing your application for real-world scenarios.
By the end of this course, you won't just understand the MERN stack; you'll have built a fully functional React Native e-commerce mobile application that demonstrates your ability to create secure, scalable, and user-friendly mobile solutions. This project-based approach ensures you gain practical, in-demand skills, preparing you for a career in full-stack mobile development or empowering you to launch your own mobile store. Join us to transform your coding aspirations into a tangible, impressive mobile application!