
Understand what SVG is, how vector graphics differ from raster images, and why scalable SVGs are ideal for logos and icons. Learn inline SVG, styling shapes, and JavaScript interactivity.
Explore three common ways to use svgs: inline svg, image tag, and css background, and learn to create a rectangle with width, height, and fill, plus simple javascript-based manipulation.
Learn to render rectangles and circles with code, control their position using x and y coordinates, define size with width, height, and radius, and apply fill and stroke colors.
Create lines in web apps using simple coordinates, start and end points, and stroke width. Set stroke color to black or gold to shape simple designs.
Explore how to set SVG width and height and use viewBox to zoom and crop regions. Practice shaping rectangles and circles with varied fills to see the viewBox effect.
Use the polygon element to draw shapes by listing points as x,y coordinates, connect them with lines, fill the interior, and apply stroke for triangles and other polygons.
Add and close multiple polygons by specifying coordinates, then create an inner triangle with white fill and a black stroke using example points such as 50 200 and 200 100.
learn to adjust polygon element points to shape triangles, set fill and stroke colors, and tweak coordinates to create engaging JavaScript web art.
Explore drawing complex polygons with svga by defining points to form a star, enabling stroke and fill to reveal lines and shapes, and experiment with abstract art.
Explore how the view box attribute controls zoom and display by adjusting x, y, width, and height, and how it relates to the viewport for scaling.
Explore how viewBox attributes enable SVGs to scale with the viewing window by removing explicit width and height, allowing auto-resizing and zooming within the viewport.
Explore the path element and its d attribute, using M, L, H, and V commands with absolute or relative coordinates to define the starting point and craft complex shapes.
Continue exploring path elements by grouping shapes with the G keyword and adding multiple paths inside 300 by 300, using the Z command and a CSS class like upper to set teal fill.
Explore Bezier curves in paths using the c command to form cubic curves with start, end, and two control points; visualize the curve with guide points.
Master Bezier curves by composing shapes and charts through curve logic and adjustable control points, creating smooth squiggly lines, and applying stroke and fill settings for visuals.
Explore Bezier curves in JavaScript by chaining path commands, filling shapes, and using the s command to reflect control points for smooth curves.
Learn how to build more complex Bezier curves in SVG using path d, cubic 'C' commands, and successive 's' reflections, then optionally add lines to shape intricate graphics.
Learn to draw a quadratic bezier curve in SVG with the Q command and a single control point, ending at a chosen point.
Explore SVG arcs in JavaScript by using the path 'a' command with rx and ry radii, x-axis rotation, and the large-arc and sweep flags to draw circular or elliptical curves.
Explore how to use SVG arc commands with large-arc-flag and sweep-flag to create overlapping arcs, adjust colors, and experiment with drawing order for layered shapes.
Explore SVG edit, an online SVG editor, to create simple SVGs, adjust fills and text, and export as SVG or PNG; note that complex shapes are hard to code.
Style inline svg to target parts with css transitions and animations. Group foliage with a g element, hover to change color, and apply wind-like transforms with fixed height and width.
Explore loading scalable vector graphics in an img tag or as a background, export SVG assets, and control sizing with inline styles to build dynamic, text-heavy logos and web UI.
Learn to use SVG as a responsive background image with CSS and media queries, scale with percentage widths, and set explicit heights for crisp, centered backgrounds.
Render a circle on top of existing SVG elements and generate multiple red circles with JavaScript by grouping them and constraining placement within the outer rectangle for tree-like structures.
Create pine trees by exporting a triangle path, grouping it as pine, and using SVGA's use with xlink to place 20 trees at random coordinates.
Learn to procedurally generate trees in SVG by cloning a base pine element, randomizing x and y coordinates, and adjusting transforms to create varied sizes within bounds.
Programmatically compute random widths and heights with svga math to generate pine trees and form a densely packed forest.
Refactor your JavaScript project by removing unused code and consolidating repeated logic, extract a getRandom function, and implement a remove all pine trees button that cleans up the dom.
Learn to generate complex svg trees by deeply cloning a template, removing duplicate ids, and use for loops to randomize ellipse sizes and positions to create oak trees.
Sort the tree elements by their y axis to simulate depth, collecting them in an array, then sort and insert into the DOM in depth order.
Leverage data-y-axis attributes to store y coordinates and access them with element.dataset.yAxis for sorting by y axis, enabling reusable tree rendering.
Refactor JavaScript to fix tree positioning by accounting for tree height in the y axis, and simplify by consolidating event listeners into a dispatching div for oak and pine trees.
Refactor repetitive DOM attribute assignments by introducing a reusable setAttributes function that uses a for-in loop to iterate over object keys and applies attributes like class and data-y-axis to elements.
Implement client-side saving of SVGA as an SPG file by wiring a save button and file name input, creating a blob, and triggering a browser download.
Create and download an SVG file from blob data using object URLs, a dynamic download link, and a delayed revoke of the URL to release resources.
Learn to save your app art as a png file by drawing on a canvas, creating a downloadable image, and adding a name validation check for unnamed files.
This lecture demonstrates refactoring image download logic into a reusable function, wiring up buttons with data-format attributes to download svg or png images via blob creation, conversion, and cleanup.
Refactor a function to do one thing, convert to a draft format, return the draft, and trigger a download after arrival, using callback and promise patterns with an SVGA URL.
Refactor three image-related functions into a single object with methods like save image, convert to png, and download image, ensuring correct this binding and streamlined event handling.
Refactoring part 3 demonstrates encapsulating a module for reuse, exporting as a module, and wiring an image saver with an init function to manage name formats and cross-browser compatibility.
Refactor the main functionality into a tree generator object initialized on dom content loaded, encapsulating variables to create oak and pine trees sorted by y axis on the terrain.
Continue refactoring by turning the attributes function into a method, using this and indentation. Encapsulate randomization and order by y axis in the object, test with pine and oak trees.
Test cross-browser compatibility for Chrome, Safari, and Firefox, fix syntax and data attribute issues, ensure proper layering, and verify exports to SVG and PNG across browsers.
Intermediate coders learn to ensure the dom is loaded before accessing elements by placing event listeners in a domcontentloaded handler, ensuring scripts run after the dom parses.
Apply resets and box-sizing border-box, center the main container using margin auto at 80vw, and style buttons with hover and active feedback for a clean, responsive ui.
Adjust button widths and input alignment for full-width use, then implement media queries to improve mobile responsiveness. Center controls and use flex wrap to reflow with breakpoints.
Apply responsive CSS tweaks: adjust margins, set button widths to 80vw, and add a 575px breakpoint with inherit widths to resize inputs properly across browsers.
Design a modal overlay to customize PNG export size, with width and height inputs, a download and cancel option, and a dimmed full-screen overlay that centers the modal.
Implement a versatile download flow that detects image formats like png and other formats, pops a modal when needed, and passes explicit width and height to the image saver.
Refactor JavaScript for intermediate coders by conditionally setting dimensions based on format, preventing unwanted width and height when downloading as PMG, and streamline DOM handling with forEach and event listeners.
Style a modal with flexbox and responsive sizing, adjust inputs and buttons, and implement a slide-in animation using CSS keyframes for a polished, interactive UI.
Add a size reset button to reset width and height inputs for maintaining aspect ratio, refine modal button interactions, and ensure consistent behavior across browsers.
Conclude the web app project by enabling a cursor pointer on hover for visual feedback. Tinker with different backgrounds, objects, animations, and aspect ratio preservation to extend the project.
Get here - source files from the projects of this section.
learn practical react fundamentals, keep components simple and small, use functional components, manage state with props or move the state up to a parent, and debug with browser console errors.
Create a simple React app by rendering content into a root div, enable JSX, and build reusable components—class components and stateless functional components—using props to pass data.
Learn the core of building web apps with React: components, GSX/JSX syntax, React Router for single-page apps, ES6 features, Webpack bundling, modular CSS, Redux state management, debugging, and plain JavaScript.
Pin webpack and webpack dev server to version 1 to align with the course setup, and verify dependencies in package.json to prevent breaking changes and ensure consistent development.
Learn to set up React on your machine, install essential packages like React, React DOM, Webpack, and Babel, configure bundling, and transpile ES6 code for web apps.
Learn to invoke JavaScript functions within a web app, define a name mapper function, map data with keys, and return results using direct function calls and dev tools feedback.
Learn how to apply inline styles in React with a style object, setting background color and font size, and compare inline styles to separate CSS files.
Get here - the source files from this section!
Explore how the virtual DOM in React updates only changed parts of the DOM to boost performance. Compare function components and class components, and see rendering with ReactDOM.render using props.
Explore ES6 class components in React, using render, state, and a name mapper to produce JSX elements. Set up a webpack dev server with content base public to enable reload.
Learn to structure a React app by splitting logic into components, organizing files in a components folder, and exporting and importing them for a simple main app with live reload.
Split the welcome component into its own file, import it, and pass data via props to demonstrate how React components nest and share data top-down.
Learn how to validate props in React components using PropTypes, default props, and custom validators to ensure correct types, required fields, and safe defaults.
Get here - the source files from this section!
Explore how state works in React by building a stateful layout component, initializing with constructor, updating via setState, and observing downward data flow and efficient re-renders with the virtual DOM.
extract the button into its own component and pass state and change handlers as props, illustrating React's unidirectional data flow from parent to child.
Reuse a timer component to show how each instance keeps its own state, with a constructor and bound methods, updating time via setInterval and setState on click to start.
Split a timer into subcomponents and place state in the parent, using uni-directional data flow and props to drive header and button components, with the timer starting on mount.
Demonstrate componentWillUnmount to clear an active setInterval, preventing setState on an unmounted React component. Show conditional rendering of timers based on isTimerMounted and discuss mounting lifecycle.
Enable hot loading in the webpack dev server with a react hot loader, so only updated components reload and preserve their state during edits.
Get here - the source files from this section!
Explore how React handles events and prevents default behavior, while learning to mock data, pass it via props, and render a name list by mapping over data with keys.
Explore simple event handling in JavaScript and React, turning anchors into links with on click and preventing default behavior. Learn binding this, handling form submissions, and inspecting event targets.
Explore how web apps capture and display values by binding event listeners to JavaScript events—from change, focus, blur, and key press to touch—updating state on the fly in React.
Use input events to filter a names list without mutating the original data, by maintaining a filter text state. The lecture covers case-insensitive matching, filtering, and immutable data practices.
Learn to split a function into components by creating a name list and a name row, mapping over names to render each with props and keys, and choosing component types.
Get here - the source files from this section!
Learn to build a single-page app with React Router, install and configure routes, use browser history, and implement nested routes with a persistent header and footer.
Explains client-side routing challenges with direct URLs, and how to enable history API fallback or hash history in webpack dev server to load index.html and render routes like /timer.
Create a front page component named home and wire an index route to load it by default on page load, using a layout with header, footer, and navigation links.
Make name profiles by turning a name list into clickable entries that open a detailed user profile, with fields like location, city, and catch phrase.
Learn to implement nested routes in a JavaScript web app by using path parameters (id) to render a name profile from a names list, and fix root-relative loading.
Link user profiles by matching IDs to names with simple JavaScript and react router links, and render navigable profile links.
Explore how React Router handles redirects with browser history push, conditional redirects on data loads, and path mapping from users to names with parameter support.
Learn how to make route parameters optional by wrapping them in brackets, enabling redirects to names when a parameter is missing, such as users or users/1.
Build a name profile and enable back navigation with the browser history and history API. Render user data conditionally (name, email, city, catchphrase) and handle missing users gracefully.
Explore customizing back navigation in a web app by using a click handler with browser history push or replacing a button with a link to named routes like /names.
Learn to switch the active class in React navigation with activeClassName to highlight the current link. The lesson links an external CSS file and uses index link for conditional activation.
Explore inline styles in React by using a style object to mimic the active class, and compare inline styling with external stylesheets, noting advantages and disadvantages of each approach.
Refactor your app by extracting the navigation into a reusable NavList component, wiring it with props, children, and the spread operator, to support dynamic links and an active class name.
Get here - the source files from this section!
Refactor a React app by extracting a header into its own component and adding a dedicated footer for cleaner imports and modular structure.
Refactor to improve code organization by moving components into dedicated folders (name list, timer, home, 404) and updating imports, ensuring the app remains functional.
Create a web store page by building a product list and details components, generate 25 fake products with faker in the browser, and wire a /products route.
Install faker with npm and import it to generate data in the project. Map the products array into card-like divs with keys, displaying name, price, color, and description.
Build a product row and a product profile component in react, passing props for name, color, material, and price, and set up routing to /products and /products/:productId.
Move the products array into a shared module and export it as default, then initialize state with these products to render a product profile by id using react-router links.
Add images to a web app by integrating the product profile, embedding image sources, and generating placeholder content with faker, including optional inline styling.
Reuse the product profile component across home and product pages by passing an id prop, randomizing selections from the product data, and linking to individual product routes.
Explore using a basic css framework to create a responsive navigation bar and product details with a lightweight grid delivered via CDN and styled with pure css classes.
Use pure CSSA as a grid system to organize information into responsive grids, adjusting to screen size with media break points, and automatically resizing images via the pure image class.
Write modular CSS in React by scoping styles to components with CSS modules. Configure webpack with style-loader and css-loader, import component CSS, and apply local hashed class names.
Explore CSSA styling in a component-based workflow, creating a CSSA file, injecting and importing styles, and applying name classes with backgrounds; enable camelCase in the loader and adjust the config.
Add a menu to the navigation bar by building a full-width header, styling with modular CSS, and aligning links with flexbox while managing the active state for clarity.
Create a styled background for a product section by importing styles, adding a container div, and applying center, no-repeat, and cover settings with a responsive height.
Apply margins and styling to the product list, set explicit width and height, center text, remove bullets, add a border, and implement a hover scale with a short transition.
Style the name list by removing the blue background, adjusting font size, and adding margins and borders using the name-list styles.
Format the product profile page by placing the image beside the text and adjusting margins, using the pure cssa framework for a responsive layout.
Extract CSSA styles into a separate stylesheet with webpack's extract text plugin, outputting styles.cssa and linking it for production while keeping hot reload in development.
Extract css to a separate file and keep the plugin ready for future use, then verify the app runs in the web pack production setup while css styles remain injected.
Get here - the source files from this section!
"This guy knows his stuff. Really good course. Has a ton of content! I watch this all the time. His SVG knowledge is impressive. I also liked the React stuff." - Daniel S.
Do you want to take the next steps in your web development career or programming hobby? This course is for you.
This course is project-based so you will not be learning a bunch of useless coding practices. At the end of this course you will have real world apps to use in your portfolio. We feel that project based training content is the best way to get from A to B. Taking this course means that you learn practical, employable skills immediately.
In Part 1, you will learn hands-on how to create SVG animations in the browser using HTML & CSS. Together with your expert instructor Chris Veillette of Mammoth Interactive, you will:
Recognize why you should use SVGs for web development.
Create SVG shapes.
Embed SVG on a web page.
Make a landscape scene entirely with code!
In Part 2, you will master the fundamentals of React and Redux by developing apps. You will learn how to do all of the following, and more!
Lay out a web app in a logical way
Use JSX, a pre-processor that adds XML syntax to JavaScript
Build a single-page app using React Router
Code in ES6 and JavaScript
Use webpack, a bundler for code
Transition from webpack 1.0 to webpack 2.0
Write modular CSS
Use Redux, a predictable state container for JavaScript apps
Refactor code (alter code to make it simpler and more efficient)
Fix bugs and handle errors
The beauty of taking an online course like this is the ability to replay any of the lectures at any time. There is no time limit or final tests. You get to learn at your own pace with a practical model method of learning.
One of the best features is that you can watch the courses at any speed you want. This means you can speed up the or slow down the video if you want to.
You can use the projects you build in this course to add to your LinkedIn profile. Give your portfolio fuel to take your career to the next level.
Learning how to code is a great way to jump in a new career or enhance your current career. Coding is the new math and learning how to code will propel you forward for any situation.
Learn it today and get a head start for tomorrow. People who can master technology will rule the future.