
Explore how to implement high fidelity designs with Material-UI and React, blending design and development to build polished, production ready web apps and elevate your React skills.
Choose Material UI for React projects because it is built specifically for React, supports server-side rendering, responsive design, and flexible customization with consistent design.
Explore Material-UI components, theming, and responsive design in React. Migrate from Create React App to Next.js and implement SEO, Google Analytics, cloud functions with Firebase, and deployment.
Ensure you have a computer (mac or windows), a code editor, and basic reactjs knowledge to begin environment setup for material-ui projects that look the same on both platforms.
As you may know, Material-UI has recently updated to a new major version 5 and rebranded as MUI. MUI v5 introduces syntax changes that differ from the version shown here in the course. Because of that if you want to follow along with the course as shown in the lectures then you must install the same version as I used during recording.
So in the next lecture when you install Material-UI please run the command npm install --save @material-ui/core@4.4.0 and make sure to add the @4.4.0 as that will specify the correct package version.
Most of the components and concepts you'll learn in this course will transfer to the latest version so it's still very worthwhile following along with the course. The course will teach you everything you need to know to have a head start when you get started learning the latest version. I am currently working on new content for MUI v5 so stay tuned for that early next year!
Set up the development environment by installing Node.js and npm, creating a React app with npx, installing React Router DOM and Material-UI, and configuring the Roboto font.
Review the project design and functionality for each page, prepare assets with image optimization, and start building the header by styling Material-UI components and integrating React Router for navigation.
Explore the high-fidelity design for the first project built with Material UI and React, including the home page, header, navigation via React Router, and Adobe XD assets.
Refine layout skills with a responsive grid system, animations, and icons across services, iOS and Android apps, and website development pages, while implementing contact forms, modals, and the estimate workflow.
Learn practical image optimization for fast, high fidelity web apps by using SVGs whenever possible, optimizing JPEG/PNG, and applying workflows with tools like PageSpeed Insights, TinyPNG, SVG OMG, and Photoshop.
Remove boilerplate and organize assets in the source folder, then simplify app.js. Run npm start to verify hello and prep the header for the next video.
Build a full-width header with the Material UI app bar and toolbar, exploring a simple example with a menu button, title, and login button.
Implement app bar transitions using Material-UI's scroll-to-hide effect and elevation scroll. Learn to use useScrollTrigger to switch the app bar from flat to elevated as you scroll.
Explore how to centralize and customize your app’s look using Material UI theming, including palette management, theme provider setup, and creating themes with JS-based styling.
Explore the Material UI default theme, focusing on the palette across common colors, light and dark types, and auto-generated primary and secondary accents for cohesive app styling.
Define a centralized material ui palette with common colors for primary and secondary. Use a theme provider to apply the palette across components and generate light and dark variants.
Master material ui typography theming by configuring font family, rem-based variants (h1–h3), and colors (primary, secondary, error) to create consistent, responsive text across your app.
Learn to apply inline styling with material ui by using makeStyles and useStyles, access the theme, and use the toolbar mixin to create a margin under a fixed app bar.
Add the company logo to the Material UI app bar by importing the logo from assets and removing toolbar gutters, setting a responsive height, and adding alt text.
Fix the manifest error by deleting manifest.json and its link, replace favicon.ico with favicon.png in the public folder, and update the title to Arc Development for a clean, running app.
Learn to build a header navigation with Material UI tabs and React Router, using useState to track the active tab, highlight it with an indicator, and animate transitions between views.
Set up material-ui tabs and tab components, align them to the right, and apply railway font, bold 1rem typography, with theme-based styles for active tabs.
Explore Material UI buttons in ReactJS, including contained, text, outlined, and floating variants with icons. Learn to group buttons, add dropdowns, and use the component prop with React Router seamlessly.
Create an orange, rounded 'free estimate' button in the header's top right corner using Material-UI's contained Button with the secondary color, then style and theme it for reuse.
Enhance header navigation by wiring the tabs to track the currently selected page with useState and an onChange handler.
Learn to implement navigation in a React app using React Router and Material UI tabs, with routes, exact matching, and link components to render distinct pages.
Synchronize the active tab with the URL on page load using React's useEffect, mapping routes to tab indices, and enable the header logo to navigate home.
Add a hover popover menu from Material UI to the header, manage the selected menu option, and implement responsive design that switches from tab-based desktop navigation to drawer-based mobile navigation.
Explore how to implement a Material-UI menu in a header that opens on hover, manages anchor elements, open state, and item selection with accessibility features.
Explore advanced customization of Material UI menus using menu list composition and styled components. Adjust focus styles, text color, background, icons, and transitions with the API and overrides.
Explore setting up a hover-activated Material-UI menu for the services tab, wiring anchor elements, aria props, and menu items for custom software, mobile apps, and website development.
Demonstrates turning menu items into links to service pages with slash routes, updating on click to set the active tab, and resolving routing and focus issues for seamless navigation.
Style the Material-UI menu to match the header by applying a blue paper background, white text, and zero elevation, then refine hover, borders, and active item tracking.
Implement menu item selection in the header by tracking a selected index and mapping a menu options array with name and link, updating on click and applying active styling accordingly.
Refactor the menu state into a JavaScript switch to map routes to the correct active tab and selected index on refresh, ensuring accurate navigation.
Master responsive design with fluid units and media queries in Material UI and ReactJS, comparing fixed, adaptive, and responsive approaches, and learn best practices including testing and grid layouts.
Apply Material UI breakpoints and the use media query hook to implement responsive design, using up and down rules and the default theme.
This lecture clarifies when to use 'rem' vs 'em' vs '%' vs 'px'
Learn to build a responsive header with Material-UI media queries, hiding tabs on small screens and using a drawer, while adjusting logo and toolbar spacing across breakpoints.
Replace tabs with Material-UI drawers on small screens using responsive design, introducing left, right, top, and bottom side panels with anchor, open, and onClose controls.
Implement a responsive swipeable drawer using Material-UI, manage its open state with useState, and customize the icon button and hover styles for mobile-friendly navigation.
Master the Material UI list component, including primary and secondary actions, icons, avatars, and text, and apply nested, dense, and selected list variations within a responsive drawer.
Replace the example drawer with a mobile navigation list using Material-UI's list components and links, disable typography and padding, add dividers and button props, and close the drawer on click.
Style the swipeable draw by applying a class prop to override Material-UI base styles, targeting the paper component with a blue background and white text for list items.
Manage list item selection in a Material UI drawer by syncing with the active tab value and applying a selected style and opacity.
Refactor the header by removing duplicate logic and using a routes array, then generalize the useEffect switch to set active and selected indexes.
Refactor the header to dynamically render tabs and drawer items by mapping a routes array, adding aria properties and event handlers. This consolidates redundancy and improves accessibility.
Learn to implement a clipped app bar above a temporary drawer in Material-UI, control z-index with the theme, and refine drawer items for a clean mobile UI.
Section 4 intro guides building a responsive footer with Material-UI grid, arranging links in a column, adding the left black slash logo, and showing social icons via the hidden component.
Create a full-width, themed footer using Material-UI styles, add a decorative adornment image, and adjust with z-index and responsive breakpoints to set up grid-based links for the next video.
Explore how the Material UI grid system controls layout and responsiveness across screen sizes. Learn to use containers and items with breakpoints, spacing, and flexbox concepts to build consistent layouts.
Explore Material-UI grid layouts by configuring container and item components, adjusting direction, and using justify and align items across main and cross axes.
Set up a basic material-ui grid in the footer using container and item, center links with justify, and stack columns with direction column for a clean, responsive layout.
Use Material-UI grid spacing to create margins around items, apply grid item styling, and turn grid items into navigation links with React Router, outlining link styling and active tab planning.
Refactor the header and footer to share active tab state, updating value and selected index via props, so footer navigation reliably highlights the correct tab on navigation and refresh.
Explore how to build responsive layouts with Material UI's hidden component and grid system by controlling visibility across breakpoints, enabling mobile-friendly navigation and dynamic content rendering.
Implement and style social media icons in the footer using a Material-UI grid, responsive sizing, and accessible external links that open in a new tab.
Assemble a polished landing page with a responsive hero, services grid, and info blocks, and import After Effects animations into a React app to guide users toward a free estimate.
Learn how to export After Effects animations to React using the bodymovin plugin. Explore setup, basic export basics, and limitations, including partial support for expressions and exporting JSON plus images.
Configure the bodymovin animation by tweaking the exported json and bundling it into a data.js file that imports images and exports the json for direct use in a React app.
Learn how to render Bodymovin json animations with React Lottie, configure default options (loop, autoplay, renderer settings), import animation data, and integrate in a Material-UI ReactJS landing page.
Build the hero block on the home page using Material-UI grid, placing left text beside a right animation, and include learn more and free estimate buttons with an arrow.
Style the hero block by aligning the animation to the right, centering text with a Material-UI typography component, and implementing responsive grid and breakpoints to maintain layout and spacing.
Center and style hero block buttons with Material-UI theming, hover effects, and responsive breakpoints to switch layouts between horizontal and stacked, ensuring consistent typography and spacing.
Create the services block using a grid layout with text, a learn more button, and an icon on the right for custom software development, styled through the theme.
Refine the services block by adjusting spacing, margins, and alignment at small breakpoints using Material-UI breakpoints and use media query to ensure mobile-friendly layouts that avoid touching the screen edges.
Rename the header and footer to iOS/Android app development and add a new iOS/Android services grid block with responsive icons and borders.
Import and swap icons, duplicate the custom software grid item for website development, and optimize the grid layout for responsive, fast, seo-friendly website sections.
Explore the material UI card component, learning how card content and actions organize information, and how header, media, and collapse interconnect for flexible layouts.
Refine the revolution block by adjusting margins, typography, and theme styles, then optimize padding and border radii with responsive breakpoints for a flush, full-width look on small screens.
Create the information block on the home page using a row-based grid with about us and contact us sections, a background image, white typography, and a learn more button.
Create the contact us block by duplicating the about us grid item and wrapping both in a container; move absolute positioning to the container for a responsive row-to-column layout.
Build a reusable call to action component with a background image, overlaid text, and a free estimate button, arranged in a responsive grid for desktop and mobile.
Import desktop and mobile backgrounds, apply them to the grid container, and overlay centered text with a styled free estimate button, using breakpoints and positioning to maintain a consistent design.
Refine a call to action with responsive Material-UI layouts in ReactJS by adjusting margins, switching to column on small screens, centering text, and parallax background effects.
Wire up every home, header, and call-to-action button with React Router links and props. Fix active tab state and render logic in App.js for proper navigation.
Implement clear active tab navigation on the landing page by wiring onClick handlers to set value and selected index across the hero and service buttons.
Explore building the remaining pages using grid components in material UI, detailing grid containers, items, and item containers with row or column directions to create diverse layouts.
Create the services page layout by arranging a column-direction grid with text blocks, icons, and images for iOS and Android app development and website development, plus a learn more button.
Set up and mirror the services page layout in a React app using Material-UI. Create services.js, style with make styles, and integrate grid, typography, buttons, and icons.
Refine the services page with responsive material ui design, aligning text and icons across breakpoints by adjusting margins, widths, and typography, and adding a centered services title.
Learn to design a custom software development page with Material-UI and ReactJS by using a grid-based layout to combine arrows, text, icons, and Lottie animations in responsive rows and columns.
Set up the custom software development page using Material-UI and React, building a responsive grid with back and forward navigation, typography, and copying text from the Adobe XD design file.
Shape and align a custom software development page’s middle icons using material-ui and react, refining grid layouts, padding, borders, hover styles, and navigation with icon buttons.
Build a responsive grid with an animated digital documents and data section alongside a scale animation, using Lottie, and fine-tune alignment and sizing to prevent cutoffs.
Implement responsive page layouts with Material-UI grids, typography, and lottie animations, adjusting max heights, centering content, and stacking at breakpoints for a polished ReactJS page.
Implement responsive design on the custom software development page by using material-ui hidden components, use media query with theme breakpoints, and center/stack content for mobile layouts.
Learn to build a responsive custom software development page with Material UI and ReactJS, centering text and icons across breakpoints, and integrating a call to action.
Explore the iOS/Android app development page layout, featuring a top navigation with arrows, responsive two-part sections, text, Lottie animation, and icon grids built with grid containers and typography variants.
Set up the iOS and Android app development page using Material-UI and ReactJS, creating components, navigation arrows, text sections, and a responsive animation with Lottie.
This lecture builds a responsive iOS/Android page with a grid of icons, centered typography, adaptive spacing, a capped animation width, and a reusable call-to-action component using Material-UI.
Design a website development page with Material-UI grid layouts, icons, header, and body text, aligning typography variants and flex positioning to mirror the page structure.
Set up the website development page by creating websites.js, importing material-ui components, building a responsive grid layout, and wiring navigation between pages with back and forward arrows.
Learn how to build a responsive website development page with Material-UI and ReactJS by implementing grid items, typography, spacing, and breakpoint-based centering for flexible layouts.
Design the revolution page using Material-UI grid layouts, typography variants, icons, images, and Lottie animations, with a responsive left-right layout, a technology section, and an animated process section.
Develop and assemble the revolution page using material-ui and reactjs, building a responsive grid layout with typography, vision and technology sections, and a Lottie-powered animation.
Build the revolution page process section using a responsive grid of blocks, each with a colored background, an icon, a title, and a description, styled with typography.
Continue implementing the revolution page by importing icons, duplicating grid items, updating titles, images, and text, and applying section-specific background colors to build a polished design.
Explore responsive design techniques for the revolution page, adjusting spacing, typography alignment, and image sizing across breakpoints with Material-UI and use media query, ensuring centered content and no horizontal scrolling.
Build a structured about us page using a grid layout with a left-aligned title, center mission statement, history and team sections, avatars, captions, and precise alignment across the grid system.
Build the about us page in a React and Material-UI project by wiring grid and typography, styling a mission statement, and arranging a history section with an image.
Build the about us team section using material-ui grid and avatar components, center typography, and caption styling to display founder profiles, yearbook image, and pet photos with responsive layout.
Develop a fully responsive about us page with material ui and reactjs, using use media query, hidden elements, and breakpoint-based grid to center typography and images across devices.
Build a responsive contact us page with material UI grid, icons, and text fields, featuring a two-column layout, input validation, and a confirmation modal for a clean, reliable user experience.
Explore the Material-UI text field overview, covering standard, filled, and outlined variants, essential props like required, disabled, label, and helper text, and how to use input adornments and validation.
Build a responsive contact page in a Material-UI and ReactJS app by creating the contact component, wiring a grid layout, text field, typography, and a background image.
Implement a contact information section using a column grid, phone and email icons, blue typography, and spacing to align text with icons, preparing for next steps with text fields.
Learn to build a contact form with Material-UI text fields in React, converting them to state-controlled inputs via useState and onChange for name, email, phone, and message.
Learn to style Material-UI text fields by overriding the input label and base input in the theme, control borders, hover and focus states, and create a bordered message input.
Wrap the contact section in a grid item to preserve left alignment while centering content, adjust large and extra large breakpoints, and apply margins and padding for responsive spacing.
Implement responsive design by making text fields full width and centered, adapt layouts at the medium breakpoint, and refine typography, margins, and background styles.
Learn to validate text fields with Material-UI by applying the error prop and helper text, wiring onChange handlers, and using regex to validate email and phone inputs.
Validate four inputs: name, email, phone, and message, in a Material-UI React app, enabling the send button only when all fields are valid, with tel: and mailto: links.
Implement a confirmation dialog using Material UI to validate contact form inputs, showcasing the dialog's open state, onClose handling, actions, and responsive styling.
Demonstrates setting up a material-ui dialog in a React app, using useState to toggle open, wiring onClick and onClose, and organizing the form with grid, typography, and text fields.
Style Material-UI dialogs in React by adjusting margins, centering actions, refining typography, and adding responsive padding via paper props and breakpoints for a clean, spacious confirm dialog.
Set the dialog z-index to 1302 so it stays above the app bar. Apply responsive breakpoints to switch to full-screen on small screens and prevent horizontal scrolling.
implement email sending for the contact form by using a serverless firebase backend and the node mailer package to deliver messages to your chosen recipient.
Explore Firebase's serverless back-end services—authentication, real-time databases, and cloud functions—and use a cloud function url with a get request and query strings to send emails.
Set up a Firebase project for the Material-UI course, install and configure Firebase tools, initialize functions in JavaScript, and enable admin access to deploy serverless functions.
Learn to send emails from a cloud function with node mailer by creating a transporter (smtp or other), setting mail options, and calling the send mail function to dispatch.
Set up nodemailer in a cloud function, configure a Gmail transporter, enable less secure app access, store credentials in Firebase environment variables, deploy the function, and test via its url.
Fix the environment variable username to enable sending messages. Enable cors for the firebase function by configuring origin true and wrapping nodemailer transporter in the cors handler.
Connect the Google Firebase cloud function to the contact page using Axios to send form data, show a loading indicator, and display success or error feedback with Material UI.
Learn to install Axios, perform a get request with query params, and handle success, error, and finally flows in a React app to test email sending.
Explore Material-UI progress indicators to communicate loading states during network requests, including circular indeterminate and determinate, and linear variants with theme-based colors.
Learn to implement a material ui circular progress indicator, manage a loading state during a network request, and show a spinner in the submit button.
Explore how Material UI snack bars deliver a brief message with optional actions like undo or delete, while supporting anchor origin positions, open state, and on close handling.
Implement a material-ui snack bar in a react contact form, controlling visibility with an alert state, showing success or error messages at the top center, auto hiding after four seconds.
Wire the contact form frontend to a Firebase cloud function, sending name, email, phone, and message via Axios query strings, and dispatch both recipient and receipt emails.
Create the final page by building an interactive estimate calculator on the right and a left-side title with a Lottie animation, managing questions, options, and costs to total the estimate.
Set up the estimate page layout with Material UI and ReactJS, building the structure, typography, and option grids with icons and a Lottie animation.
Convert the estimate page to a dynamic, active-question interface by defining a default questions array and rendering the active title, subtitle, and its options with icons.
Implement a React-based question navigation by partitioning questions into software and website groups with an active flag, and manage nested state immutably using lodash's cloneDeep.
Build a robust React question navigation by immutably cloning state with cloneDeep and useState, track the active index, and toggle next and previous flags with icon buttons.
Fixes navigation on the estimate page by disabling the previous and next buttons at the first and last questions, using a navigation disabled function and disabled icons to clearly indicate state.
Turn the estimate options into clickable buttons, implement a handleSelect function to toggle each option's selected state, and apply an orange background to selected options for clear multi-select feedback.
Implement a single-option selection mechanism in the estimate questions by detecting the select-one subtitle and toggling previously selected options, ensuring only one option is active per question.
Implement an estimate dialog in a Material-UI and ReactJS app, incorporating a contact form with name, phone, email, and message fields, controlled via state and responsive layout.
Build and display an interactive estimate calculator by selecting options across questions and showing the final cost in a dialog. Apply the final question multiplier to reflect pricing dynamics.
Demonstrates implementing a selection review for the estimate by displaying chosen options with check marks beside the confirmation, using a grid layout and state to track service and options.
Build a dynamic platform summary for the estimate review by extracting selected platforms (web, iOS, Android) and rendering a grammatically correct sentence via a template string.
Develop and review feature selections in a React app, mapping features, updating state, and formatting chosen features into readable text for estimates in a Material-UI design.
Complete the selection review by calculating custom features and user counts from questions, then display the chosen features and their low, medium, or high complexity in a readable project estimate.
guide implementing a website selection review, clear prior options when switching services, extract the chosen website category (basic, e-commerce, or interactive), and display it in the UI.
See how to refine the estimate page with responsive design across breakpoints, adjusting margins, typography, alignment, and dialogs using Material-UI and ReactJS.
Learn to send an estimate by updating a Firebase cloud function, differentiating website versus custom software emails, and implementing on-screen feedback with circular progress and snack bars.
Learn to add a loading state, snack bar alerts, and a circular progress spinner to the estimate flow, with success or error feedback and conditional enabling of the estimate button.
Learn how the get estimate button toggles between disabled and enabled based on unanswered questions and a selected last question. See how array length and last question validation drive state.
Refine the estimate UI with material UI by adjusting typography line height and adding a placeholder, then enforce form validation to disable the request button until complete.
Welcome to the #1 documentation recommended paid resource for learning Material-UI!
Across 35 hours and more than 200 lectures, I will teach you absolutely everything there is to know about building finely designed applications using hands-down the most useful tool I've learned since React itself -- Material-UI!
Take your web development skills to a whole new level and separate yourself from the average React developer by gaining the confidence to build professionally designed applications!
After learning React, I think many developers run into a common problem -- what are the best practices for actually building your own project!? You may have an idea in your head for a really cool application or website but feel like you wouldn't know exactly how to go about creating it with React. Are you supposed to build every little component and piece of functionality from scratch? Definitely not! Learn to let Material-UI do the heavy lifting for you with its comprehensive customizable component library with integrated styling, theming, grid, and responsive design systems.
Most of the courses you take while learning React are focused on teaching you the core concepts and fundamental syntax/structures necessary to understand and build React applications. This is usually done by building either a handful of small projects, each focused around a certain concept or by building a large project and incorporating each concept as you go. Learning like this is great, and absolutely essential to understanding the subject.
However, I have noticed that due to the focus on the underlying concepts and functionality, most of the designs and layouts aren't particularly interesting! None of the designs are bad by any means -- and that isn't the focus of pure React courses so this isn't a problem -- but they aren't usually something you would give to a paying client, so that does leave a bit of a gap when you begin working on your own. That's precisely why I made this course!
We're going to build two complete projects from scratch based on just design files -- including my own actual production website!
I'm going to walk you through the learning process that I went through when I built my first production application -- all the way from starting the project with a blank screen to deploying a fully responsive website. What I really try to emphasize is the way to think about structuring layouts in Material-UI. We'll first go over screenshots of the design we're about to build and visually breakdown the grid setup necessary to achieve each look, along with the corresponding code snippets! Then we actually hop into the code editor to put it into action.
We'll also be going over the documentation for each Material-UI component before we use it in our project so you'll be familiar with all the different capabilities, not just the features we use! Each component is extremely flexible and one of my goals for this course was giving you enough familiarity with the entire current ecosystem to be ready to understand any future updates.
A key part of building production applications is making sure that your styles and functionality don't just work on your system, but are flexible and responsive to any environment. That's why I drill responsive design practices so you'll understand not only the concepts to keep in mind but how to actually implement them with Material-UI and get perfect styles on the biggest, smallest, and every screen in between. This will hopefully become second nature and we'll all enjoy more optimized user-experiences across the web.
We will also be covering extra topics like SEO in React, switching our project over to Next.js and the benefits from doing so, hooking up Google Analytics to start making data-driven decisions, integrating animations from After Effects, and so much more!
The Course Content Includes:
Setting up a new project with create-react-app, React Router, and Material-UI
Guided explanations of the documentation for almost every Material-UI component followed by implementing them in our project
Different image optimization strategies
Creating a theme for your application by mastering Material-UI's centralized styling system
Learning how to use responsive design to ensure your applications look perfect on any screen size and orientation!
Using the Material-UI grid system to align complex layouts perfectly
Exporting animations from Adobe After Effects and efficiently importing them into a React application with react-lottie
Leveraging serverless functionality with Google Firebase Cloud Functions
Sending emails through Node.js
Making network requests in React while displaying feedback like loading spinners with Material-UI
Search Engine Optimization (SEO) in React applications
Migrating a project from create-react-app to Next.js and why
Cross-browser testing and support
Deploying a Next.js project and adding a custom domain name -- for two different hosting platforms
Incorporate Google Analytics to collect data about who is interacting with your application and what they're doing
Build custom organizational functionality to control data displayed in tables including search, filtering, delete, and undo
Along with lifetime access to over 35 HOURS of content, you'll also find easy access to support through active Q/A.
You've got nothing to lose -- this course comes with a 30-day money-back guarantee in case you aren't completely satisfied!
Tackle the challenge, blur the line between design and development, and learn to create the projects you've envisioned.