
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Build a portfolio with 20 JavaScript web projects, featuring setup, code delivery, and hands-on apps like quote generator, infinite scroll, and canvas tools.
Join our online classroom to stay accountable, team with accountability buddies, and finish this JavaScript web projects course with a supportive community that helps you become alumni and mentors.
Discover how JavaScript adds interactivity to web pages by responding to user actions with logic and outputs, turning static sites into dynamic web apps using the window object and dom.
Explore free Ztm resources for JavaScript learners, including coding challenges, open source projects, cheat sheets, blogs, monthly newsletters, career paths, and community channels.
Learn how to set up your Mac or Linux environment for JavaScript web projects by installing Git, Visual Studio Code, and Homebrew, then configure GitHub hosting.
Install and configure Git and Visual Studio Code on Windows, including Git Bash, default editor setup, and open with code and terminal-in-folder workflows.
Master Visual Studio Code basics by creating a template project with live server and color highlight extensions, using Emmet for html boilerplates.
Learn to test JavaScript with console.log and dev tools, including the network tab, then publish for free using GitHub pages by initializing a repo, pushing changes, and enabling master/main branch.
Build a random quote generator that fetches quotes asynchronously from a REST API, handles CORS with a proxy, and uses a responsive UI with loader, new quote button, and Twitter.
Duplicate the template to Desh Generator, open it in Visual Studio Code, go live, then apply a circuit board background from pattern dot com and import Montserrat to center UI.
Create a styled quote container using Emmet-based HTML, with a quote, author, and social buttons, and implement responsive styling using rem units, rgba colors, borders, and a mobile media query.
Configure the button container with flexbox and top margin to space buttons apart, then style each button with rem sizing, rounded corners, hover brightness, and active press effects.
Fetch quotes from an API or a local quotes array, store the results, and display a random quote with text and author using async fetch and try-catch.
Populate the UI with dynamic quote text and author using DOM manipulation in JavaScript. Wire up new quote and Twitter buttons and adjust font size for long quotes.
Learn to build a reusable loader in JavaScript by toggling a loader and quote container with loading and complete functions, fetching quotes from an api or a local array.
Fetch quotes from API with an async getQuote function, build a URL with method, lang, and format JSON, and handle errors via try-catch while using a proxy to bypass CORS.
Bind API data to DOM elements for quote and author, showing unknown when blank. Resize long quotes and enable Twitter sharing via event listeners.
Add a loading animation using a div with class loader and id loader from a W3Schools example. Use the hidden attribute to toggle visibility during get function, revealing the quote.
Improve code readability by using self-explanatory names like show loading spinner and remove clutter from comments. Review recursion and error handling to prevent infinite loops, and test edge cases.
Learn to implement an infinite scroll gallery with a customizable loading animation, fetch UN flash API images, and reveal descriptions on hover with mobile-friendly responsive design.
Create a custom animated loader using an svg cube, customize colors and size, download the animated svg, and integrate the code or image into your JavaScript web project.
Learn to center elements on the page, implement a loader overlay, and set up a project while applying Google fonts and styling the title.
Create a responsive image layout by styling the image container, adjusting margins and font size, and applying a mobile media query, then prepare API integration.
Learn to fetch random photos from the Unsplash API with fetch, build the request using an API key and count, and implement getPhotos to load images on page load.
Fetch photos from an API, populate a global photos array, and render a dynamic gallery with anchor and image elements. Add a reusable setAttributes helper to keep code DRY.
Learn to implement infinite scroll in JavaScript by using the window scroll event and inner height to load more photos near the bottom, and refine when loads occur.
Implement an infinite scroll feature in JavaScript by loading images with a load event, tracking images loaded and total images, and using a ready boolean to trigger further loads.
Analyze web performance with developer tools to spot slow image loading and poor user experience. Optimize by shipping only necessary data and adjusting initial loads for faster, readable code.
Explore picture-in-picture by triggering requestPictureInPicture on a video element and using the screen capture API getDisplayMedia to share a screen or window, staying on top.
Duplicate the template to start the project, rename it, and set up a video element with id video, height 360, width 640, with controls, and hide it initially.
Explore practical styling of HTML elements, focusing on a button container and button with borders, padding, border radius, 3D box shadows, gradients, and hover and active states.
Learn to add functionality with JavaScript by wiring a video element to display a user-selected screen stream via get display media, then trigger picture in picture with a button.
Explore how async/await works in JavaScript, why await requires an async function, and how top-level await and ECMAScript proposals shape cross-browser code.
Build a joke teller with JavaScript by calling a joke API to fetch a random joke and using a text-to-speech API to narrate it when you press a button.
Style and build a JavaScript web project using a project-specific template, with a container, button, and dynamic audio, and apply a flexbox-centered layout and a left-aligned robot gif background.
Learn to build a responsive layout by adding a tablet-or-smaller media query, center and cover the background, and style a button with hover, active, and disabled states, including box-shadow.
Demonstrate wiring a button to fetch a random joke through a text-to-speech API and play the audio. Learn to obtain an API key, test endpoints, and use a JavaScript SDK.
Explains how to fetch jokes from the Joke API, handle single and two-part jokes, and implement async/await with try/catch to unify responses for a text-to-speech project.
Connect the joke API with a text-to-speech flow in a JavaScript project, fetch jokes, pass them to a Voice RSS speech call, and play the resulting audio to narrate jokes.
Wire the joke button to call the get jokes function on click, toggle the button's disabled state during playback, re-enable after the audio ends, and hide the audio element.
Review two practical topics: organizing JavaScript with a separate voice.js file for the voice RSS API, and protecting API keys by moving requests to a server to keep keys hidden.
Learn to build a light/dark mode web site with a toggle that changes background, a primary orange-to-purple color shift, and icons, while ensuring smooth navigation and updating illustrations.
Explore setting up an HTML/CSS project in VS Code, implementing light/dark themes with CSS variables, applying a hero patterns background, and creating a fixed, smooth-scrolling navigation.
Learn to customize a JavaScript web project by integrating Google fonts like Oswald, applying fonts to headings and navigation, using undraw SVG illustrations, and enabling light/dark mode with icons.
Build a custom toggle switch in JavaScript to switch between light and dark modes by listening for a checkbox change event, then set the data-theme attribute on document.documentElement.
Build a JavaScript theme toggle that updates navigation, text, and images for dark and light modes via a switch theme function, with a refactored image mode using template strings.
Learn how to persist user theme preferences with local storage by setting and getting a theme value, defaulting to dark, and syncing UI switches across sessions.
practice the dry principle by refactoring repetitive JavaScript code into a single toggle dark/light mode function, improving readability and maintainability in a code review.
Recognize imposter syndrome as a natural sign of growth and use practice and time to gain experience. Teach others on Discord to reinforce learning and stay kind while you progress.
Modify a modern website built from a Creative Tim template by adding text, images, and font awesome icons, with animate on scroll effects, staggered card entrances.
Set up a project template from a Tailwind CSS starter kit, download and unzip the package, choose the landing page, and customize HTML, assets, and components for a JavaScript portfolio.
Set up and customize project content by editing the nav title, swapping Font Awesome icons, and adding Unsplash images for background, cards, and team avatars.
Integrate JavaScript in HTML, use the AOS animate-on-scroll library, and manage script load order to avoid AOS not defined errors and improve perceived speed.
Learn to add animation on scroll using the AOS library, configuring delay and duration to animate the title, paragraph, cards, images, and sections with staggered fades and flips.
Learn how script loading and execution order affects performance, exploring script tags, the aos library, and nav bar code; compare async and defer, and optimize above-the-fold rendering.
Create a mobile-friendly, responsive navigation with sliding CSX animations, centralize colors using CSX variables and a color tool, and integrate Google fonts and toggle-ready JavaScript.
Set up an HTML/CSS project using CSS variables and custom properties to apply a cohesive color scheme, and implement an animated hamburger navigation with a toggle in JavaScript.
Design a full-screen navigation overlay with a dark semi-transparent backdrop, fixed position and 100vw by 100vh, using a nav, ul, li, and anchor links with interactive hover effects.
Learn to build an animated hamburger menu that toggles navigation using a change class, a translate X overlay, and smooth slide-in and slide-out transitions for a responsive UI.
Learn to implement staggered CSS animations with JavaScript triggers, using animation shorthand, duration, delay, linear timing, and animation-fill-mode to slide navigation items in from top to bottom and out.
Refactor to dry up code by using a reusable nav animation function, class replace, and template strings, while driving listeners from arrays for efficient overlay and navigation transitions.
Understand how JavaScript runs at load, then uses event listeners to react to actions, updating the user interface as data changes, with frameworks like React or Angular simplifying patterns.
Create a web music player with album artwork, song title and artist, current time and duration, and play, next, previous controls with scrub and infinite looping.
Set up HTML and CSS music player in VS Code using template and image and music folders. Implement styling with border radius, box shadow, object fit cover, Spartan fonts.
Add a progress bar with current time and duration and play, previous, and next buttons using Font Awesome icons, styled with CSS and wired to JavaScript.
Learn to control audio playback in JavaScript by implementing play and pause for a custom icon, using the audio element's play and pause methods, DOM querying, and icon swaps.
Build a JavaScript music player that loads songs from an array of objects, updates image, title, artist, duration, and audio on startup, and enables previous and next with wrap-around.
Populate a functional progress bar by syncing current time and duration from an audio element, using the timeupdate event and destructuring to dynamically display progress in JavaScript.
Format the current time and duration by converting seconds to minutes and seconds with Math.floor and the remainder operator, then update the DOM and enable click-to-seek on the progress bar.
Click the progress bar to jump to song positions with an event listener, width, and offset. Calculate percentage from offset x and width in the audio, then set current time.
Explore a code review that contrasts text content vs innerText and how reflow impacts performance, using dev tools paint flashing to visualize updates.
Just updated with all modern features of HTML5, CSS3 and JavaScript! Join a live online community of over 900,000+ developers and a course taught by industry experts that have actually worked both in Silicon Valley and Toronto with JavaScript!
This course is focused on efficiency and getting you hired by building your dream portfolio so you can get a job or work as a freelancer. Never spend time on confusing, out of date, incomplete tutorials anymore! Graduates of Andrei’s courses are now working at Google, Tesla, Amazon, Apple, IBM, JP Morgan, Facebook, + other top tech companies (seriously, google this to verify some testimonials).
Whether you want to become a freelancer, get hired, or to just advance your career, this brand new course will take you step by step through 20 JavaScript projects that you will be able to customize and put on your portfolio right away. Along the way, you will learn to build projects using HTML, CSS and JavaScript and truly build your skills as a JavaScript developer.
Whether you want to one day learn React, Angular, Vue JS, Node.js, Svelte, or any other toolchain of a modern developer, at the end of the day, JavaScript fundamentals are key, and learning JavaScript is an investment that will pay off many years into the future. By solidifying your JavaScript knowledge and being able to build thing without crutches like libraries and frameworks, you will future proof yourself.
Here is the truth: It’s easy to find JavaScript projects to work on online. You can copy and paste code. You can watch YouTube videos. That’s simple (and free). This course is different in that not only de we have modern projects using the latest features of JavaScript, and browser APIs, but we also do a Code Review of each project. After we build a website, we go through the code and talk about how we can improve the code, how to improve the security, or improve the performance of your projects.
It’s like having a senior developer finally teach you what good code means, what are the common mistakes beginners make, and how to write maintainable code.
All code is going to be provided to you, and even if you don’t like to code along, you will get access to the code for the projects to put them on your portfolio right away.
So what are we building? Get ready for this:
Spock Rock Game - Confetti.js, Modules
Quote Generator - Fetch, Async/Await, Quote API, CORS
Picture-in-Picture - Picture-in-Picture API, Screen Capture API
Bookmarks App - DOM, localStorage
NASA APOD - Fetch, Async/Await, NASA API, DOM, localStorage
Animated Navigation - CSS Animations
Infinite Scroll - Fetch, Async/Await, Unsplash API, DOM, Scroll Event Listener
Countdown App - Date, localStorage
Music Player - HTML 5 Audio API
Calculator - Math Methods
Splash Page - DOM Basics
Light/Dark Mode - DOM, localStorage
Form Validation - DOM, Forms
Joke Teller - Fetch, Async/Await, Joke API, Text-to-Speech
Video Player - HTML 5 Video API
MS Paint Clone - Advanced HTML Canvas, localStorage
Pong Clone - Advanced HTML Canvas
Math Sprint Game - SetInterval, DOM, Array Methods, localStorage
Animated Template - Template, AOS.js
Drag and Drop - Drag and Drop API, localStorage
We will be using modern ES6,ES7,ES8,ES9,ES10 features to master JavaScript! Think of this as a full on JavaScript bootcamp to get you from a beginner to a confident programmer! on top of that, we also cover common UI/UX practices to make sure we have good designs and our projects are mobile friendly.
The course is not about making you just code along without understanding the principles so that when you are done with the course you don’t know what to do other than watch another tutorial. No! This course will push you and challenge you to go from an absolute beginner in JavaScript to someone that is able to build projects on their own.
So the best time to begin? It's Today! By taking that first step right now, you are that much closer to developing the skills that get you hired and closer to your dream career.
See you inside the course :)
Taught By:
Andrei Neagoie is the instructor of the highest rated Development courses on Udemy as well as one of the fastest growing. His graduates have moved on to work for some of the biggest tech companies around the world like Apple, Google, Amazon, JP Morgan, IBM, UNIQLO etc... He has been working as a senior software developer in Silicon Valley and Toronto for many years, and is now taking all that he has learned, to teach programming skills and to help you discover the amazing career opportunities that being a developer allows in life.
Having been a self taught programmer, he understands that there is an overwhelming number of online courses, tutorials and books that are overly verbose and inadequate at teaching proper skills. Most people feel paralyzed and don't know where to start when learning a complex subject matter, or even worse, most people don't have $20,000 to spend on a coding bootcamp. Programming skills should be affordable and open to all. An education material should teach real life skills that are current and they should not waste a student's valuable time. Having learned important lessons from working for Fortune 500 companies, tech startups, to even founding his own business, he is now dedicating 100% of his time to teaching others valuable software development skills in order to take control of their life and work in an exciting industry with infinite possibilities.
Andrei promises you that there are no other courses out there as comprehensive and as well explained. He believes that in order to learn anything of value, you need to start with the foundation and develop the roots of the tree. Only from there will you be able to learn concepts and specific skills(leaves) that connect to the foundation. Learning becomes exponential when structured in this way.
Taking his experience in educational psychology and coding, Andrei's courses will take you on an understanding of complex subjects that you never thought would be possible.
--------
Jacinto is a Senior Developer with the Canadian Broadcasting Corporation with a diverse background, including 5 years experience as a teacher in Canada and South Korea. He has had a passion for technology from a very young age, which led him to build his first computer at age 12 and start using design software at 16. As an instructor for the Zero To Mastery Academy, Jacinto combines these artistic and critical thinking skills to create high quality projects that will add real value to student’s portfolios and jump start their careers in web development.
Starting out learning something new can be challenging and there are so many resources available that it can be overwhelming. Jacinto understands that for some, bootcamps and post-secondary education are too time-consuming or expensive for many to consider. With that in mind, he does his best to create the highest quality courses that are inexpensive and beginner-friendly.
As a self-taught developer, Jacinto started from scratch and learned enough to land a Senior Developer job after only 4 months working through online courses. He knows it is possible to upgrade your skills and switch careers without spending excessive time or money. He couldn’t be happier to be in this exciting and growing industry and aims to provide students with the same opportunity.
See you inside the courses!