Convert Figma logo to code with AI

bradtraversy logo50projects50days

50+ mini web projects using HTML, CSS & JS

37,130
9,128
37,130
28

Top Related Projects

101,622

JavaScript 3D Library.

30 Day Vanilla JS Challenge

📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings

Short code snippets for all your development needs

💯 Curated coding interview preparation materials for busy software engineers

Quick Overview

50projects50days is a GitHub repository containing 50 mini web projects built with HTML, CSS, and JavaScript. These projects are designed to be completed in 50 days, providing hands-on practice for web developers to improve their skills through practical, real-world examples.

Pros

  • Diverse range of projects covering various web development concepts
  • Well-structured code with clear comments for easy understanding
  • Suitable for beginners and intermediate developers looking to enhance their skills
  • Includes both frontend and some basic backend projects

Cons

  • Some projects may be too simple for advanced developers
  • Limited focus on modern JavaScript frameworks or libraries
  • Lack of in-depth explanations or tutorials for each project
  • No standardized testing or error handling across projects

Code Examples

Here are a few code snippets from different projects in the repository:

  1. Expanding Cards (Project 1):
const panels = document.querySelectorAll('.panel')

panels.forEach(panel => {
    panel.addEventListener('click', () => {
        removeActiveClasses()
        panel.classList.add('active')
    })
})

function removeActiveClasses() {
    panels.forEach(panel => {
        panel.classList.remove('active')
    })
}

This code adds click event listeners to panels and toggles the 'active' class.

  1. Progress Steps (Project 2):
const progress = document.getElementById('progress')
const prev = document.getElementById('prev')
const next = document.getElementById('next')
const circles = document.querySelectorAll('.circle')

let currentActive = 1

next.addEventListener('click', () => {
    currentActive++

    if(currentActive > circles.length) {
        currentActive = circles.length
    }

    update()
})

This snippet manages the progress steps, updating the UI when the 'next' button is clicked.

  1. Rotating Navigation Animation (Project 3):
const open = document.getElementById('open')
const close = document.getElementById('close')
const container = document.querySelector('.container')

open.addEventListener('click', () => container.classList.add('show-nav'))

close.addEventListener('click', () => container.classList.remove('show-nav'))

This code implements a rotating navigation menu by adding and removing a CSS class.

Getting Started

To get started with any project in this repository:

  1. Clone the repository:

    git clone https://github.com/bradtraversy/50projects50days.git
    
  2. Navigate to the desired project folder:

    cd 50projects50days/project_name
    
  3. Open the index.html file in your browser to view the project.

  4. Explore the HTML, CSS, and JavaScript files to understand and modify the project as needed.

Competitor Comparisons

101,622

JavaScript 3D Library.

Pros of three.js

  • Powerful 3D graphics library for creating complex, interactive 3D visualizations
  • Extensive documentation and large community support
  • Versatile, supporting various rendering techniques and 3D model formats

Cons of three.js

  • Steeper learning curve for beginners compared to simple HTML/CSS/JS projects
  • Larger file size and potentially higher performance requirements
  • May be overkill for simple web projects that don't require 3D graphics

Code Comparison

three.js example:

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

50projects50days example:

const panels = document.querySelectorAll('.panel');
panels.forEach(panel => {
    panel.addEventListener('click', () => {
        removeActiveClasses();
        panel.classList.add('active');
    });
});

The three.js code sets up a 3D scene, camera, and renderer, while the 50projects50days code manipulates DOM elements for simple interactivity. three.js is more complex but offers powerful 3D capabilities, whereas 50projects50days focuses on straightforward web development concepts using vanilla JavaScript.

30 Day Vanilla JS Challenge

Pros of JavaScript30

  • Focuses exclusively on vanilla JavaScript, enhancing core language skills
  • Shorter project duration (30 days) may be more manageable for some learners
  • Includes audio/video manipulation projects, offering diverse multimedia experience

Cons of JavaScript30

  • Less emphasis on modern CSS techniques and responsive design
  • Fewer projects overall, potentially limiting the breadth of topics covered
  • Some projects may feel less "real-world" applicable compared to 50projects50days

Code Comparison

JavaScript30 (Drum Kit project):

function playSound(e) {
  const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
  const key = document.querySelector(`.key[data-key="${e.keyCode}"]`);
  if (!audio) return;
  audio.currentTime = 0;
  audio.play();
  key.classList.add('playing');
}

50projects50days (Expanding Cards project):

function removeActiveClasses() {
  panels.forEach(panel => {
    panel.classList.remove('active')
  })
}

panels.forEach(panel => {
  panel.addEventListener('click', () => {
    removeActiveClasses()
    panel.classList.add('active')
  })
})

Both repositories offer valuable learning experiences for web developers, with JavaScript30 focusing more on core JavaScript concepts and 50projects50days providing a broader range of modern web development techniques. The choice between them depends on the learner's specific goals and preferences.

📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings

Pros of javascript-algorithms

  • Focuses on in-depth explanations of algorithms and data structures
  • Provides implementations in multiple programming languages
  • Includes Big O notation analysis for each algorithm

Cons of javascript-algorithms

  • Less practical for beginners looking to build real-world projects
  • May be overwhelming for those new to computer science concepts
  • Lacks visual elements and interactive components

Code Comparison

javascript-algorithms (Binary Search implementation):

function binarySearch(array, key) {
  let left = 0;
  let right = array.length - 1;
  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    if (array[mid] === key) return mid;
    if (array[mid] < key) left = mid + 1;
    else right = mid - 1;
  }
  return -1;
}

50projects50days (Progress Steps project):

const progress = document.getElementById('progress')
const prev = document.getElementById('prev')
const next = document.getElementById('next')
const circles = document.querySelectorAll('.circle')

let currentActive = 1

Summary

javascript-algorithms is an excellent resource for developers looking to deepen their understanding of algorithms and data structures. It provides comprehensive explanations and implementations in various languages. However, it may be less suitable for beginners or those seeking practical, project-based learning.

50projects50days, on the other hand, offers a more hands-on approach with visual and interactive components, making it ideal for beginners and those looking to build real-world projects quickly. The trade-off is that it may not delve as deeply into theoretical concepts or provide as much language diversity as javascript-algorithms.

Short code snippets for all your development needs

Pros of 30-seconds-of-code

  • Focuses on concise, reusable code snippets for various programming tasks
  • Covers a wide range of JavaScript concepts and utilities
  • Includes explanations and examples for each snippet

Cons of 30-seconds-of-code

  • Less emphasis on complete projects or applications
  • May require more programming knowledge to understand and implement
  • Limited to JavaScript and related technologies

Code Comparison

30-seconds-of-code snippet (Array manipulation):

const chunk = (arr, size) =>
  Array.from({ length: Math.ceil(arr.length / size) }, (v, i) =>
    arr.slice(i * size, i * size + size)
  );

50projects50days snippet (DOM manipulation):

const panels = document.querySelectorAll('.panel');

panels.forEach(panel => {
    panel.addEventListener('click', () => {
        removeActiveClasses();
        panel.classList.add('active');
    });
});

The 30-seconds-of-code snippet demonstrates a concise array manipulation function, while the 50projects50days snippet shows DOM interaction in a practical project context.

💯 Curated coding interview preparation materials for busy software engineers

Pros of tech-interview-handbook

  • Comprehensive resource for technical interview preparation
  • Covers a wide range of topics, including algorithms, system design, and behavioral questions
  • Regularly updated with community contributions

Cons of tech-interview-handbook

  • Primarily text-based content, lacking interactive coding exercises
  • May be overwhelming for beginners due to the breadth of information
  • Less focus on practical project-based learning

Code Comparison

tech-interview-handbook (JavaScript algorithm example):

function binarySearch(arr, target) {
  let left = 0;
  let right = arr.length - 1;
  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    if (arr[mid] === target) return mid;
    if (arr[mid] < target) left = mid + 1;
    else right = mid - 1;
  }
  return -1;
}

50projects50days (HTML/CSS/JavaScript project example):

<div class="progress-container">
  <div class="progress" id="progress"></div>
  <div class="circle active">1</div>
  <div class="circle">2</div>
  <div class="circle">3</div>
  <div class="circle">4</div>
</div>

The tech-interview-handbook focuses on algorithmic problem-solving and interview preparation, while 50projects50days emphasizes practical web development projects. The code examples reflect this difference, with tech-interview-handbook showcasing an algorithm implementation and 50projects50days demonstrating a UI component structure.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

50 Projects in 50 Days - HTML/CSS and JavaScript

This is the main repository for all of the projects in the course.

#ProjectLive Demo
01Expanding CardsLive Demo
02Progress StepsLive Demo
03Rotating Navigation AnimationLive Demo
04Hidden Search WidgetLive Demo
05Blurry LoadingLive Demo
06Scroll AnimationLive Demo
07Split Landing PageLive Demo
08Form WaveLive Demo
09Sound BoardLive Demo
10Dad JokesLive Demo
11Event KeycodesLive Demo
12Faq CollapseLive Demo
13Random Choice PickerLive Demo
14Animated NavigationLive Demo
15Incrementing CounterLive Demo
16Drink WaterLive Demo
17Movie AppLive Demo
18Background SliderLive Demo
19Theme ClockLive Demo
20Button Ripple EffectLive Demo
21Drag N DropLive Demo
22Drawing AppLive Demo
23Kinetic LoaderLive Demo
24Content PlaceholderLive Demo
25Sticky NavbarLive Demo
26Double Vertical SliderLive Demo
27Toast NotificationLive Demo
28Github ProfilesLive Demo
29Double Click HeartLive Demo
30Auto Text EffectLive Demo
31Password GeneratorLive Demo
32Good Cheap FastLive Demo
33Notes AppLive Demo
34Animated CountdownLive Demo
35Image CarouselLive Demo
36HoverboardLive Demo
37PokedexLive Demo
38Mobile Tab NavigationLive Demo
39Password Strength BackgroundLive Demo
403d Background BoxesLive Demo
41Verify Account UiLive Demo
42Live User FilterLive Demo
43Feedback Ui DesignLive Demo
44Custom Range SliderLive Demo
45Netflix Mobile NavigationLive Demo
46Quiz AppLive Demo
47Testimonial Box SwitcherLive Demo
48Random Image FeedLive Demo
49Todo ListLive Demo
50Insect Catch GameLive Demo
51Simple TimerLive Demo

NOTE ON PULL REQUESTS: All of these projects are part of the course. While I do appreciate people trying to make some things prettier or adding new features, we are only accepting pull requests and looking at issues for bug fixes so that the code stays inline with the course

License

The MIT License

Copyright (c) 2020-2021 Traversy Media https://traversymedia.com

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.