Top Related Projects
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:
- 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.
- 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.
- 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:
-
Clone the repository:
git clone https://github.com/bradtraversy/50projects50days.git
-
Navigate to the desired project folder:
cd 50projects50days/project_name
-
Open the
index.html
file in your browser to view the project. -
Explore the HTML, CSS, and JavaScript files to understand and modify the project as needed.
Competitor Comparisons
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
50 Projects in 50 Days - HTML/CSS and JavaScript
This is the main repository for all of the projects in the course.
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.
Top Related Projects
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
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot