explaingit

bradtraversy/50projects50days

40,554CSSAudience · vibe coderComplexity · 1/5StaleLicenseSetup · easy

TLDR

A collection of 50+ small, self-contained web projects teaching front-end fundamentals through hands-on exercises in HTML, CSS, and vanilla JavaScript.

Mindmap

mindmap
  root((repo))
    What it does
      50+ mini projects
      One technique each
      Live demos included
    Tech stack
      HTML
      CSS
      Vanilla JavaScript
    Use cases
      Learn DOM manipulation
      Practice animations
      Build interface effects
      No frameworks needed
    Learning path
      Beginner friendly
      Theory to practice
      Copy and modify
    Project types
      Image galleries
      Form interactions
      Canvas drawing
      API integration

Things people build with this

USE CASE 1

Build muscle memory with DOM manipulation by coding interactive UI components like expanding cards and hidden search widgets.

USE CASE 2

Learn CSS animations and transitions by recreating effects like blurry image loading, scroll-triggered animations, and rotating menus.

USE CASE 3

Practice working with browser APIs by building projects like a drawing canvas, sound board, and GitHub profile lookup tool.

USE CASE 4

Study real interface patterns by examining complete, working code examples for common web design interactions.

Tech stack

HTMLCSSJavaScript

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose including commercial, as long as you keep the copyright notice.

In plain English

50 Projects in 50 Days is a collection of over fifty small, self-contained web projects built with HTML, CSS, and vanilla JavaScript, meaning JavaScript without any frameworks or libraries. The problem it addresses is that beginners learning web development often understand the theory of CSS and JavaScript but struggle to build anything practical because they lack exposure to how real interface effects are actually coded. Each project in this collection is a focused exercise that demonstrates one specific technique or visual pattern. Each project lives in its own folder within the repository and typically consists of just three files: an HTML file for structure, a CSS file for styling, and a JavaScript file for interactivity. The projects cover a wide range of front-end patterns including expanding image cards, animated progress steps, a rotating navigation menu, a hidden search widget, blurry image loading transitions, scroll-triggered animations, a split landing page, form animations, a sound board, a drag-and-drop interface, a drawing canvas app, toast notifications, GitHub profile lookups using an API, password generator, animated countdown timer, and many others. Each one includes a live demo hosted online so you can see the finished result before looking at the code. You would use this repository as a hands-on learning resource for front-end development fundamentals. It is particularly useful if you want to build muscle memory with DOM manipulation, CSS animations and transitions, and working with browser APIs. The entire stack is HTML, CSS, and plain JavaScript with no build tools or package managers required.

Copy-paste prompts

Prompt 1
I want to learn how to build animated progress steps in HTML and CSS. Show me the code structure from the 50projects50days repo and explain how the CSS transitions work.
Prompt 2
How do I create a drag-and-drop interface using vanilla JavaScript? Walk me through the event listeners and DOM manipulation needed based on the 50projects50days examples.
Prompt 3
Show me how to implement a scroll-triggered animation effect using vanilla JavaScript without any libraries, like in the 50projects50days collection.
Prompt 4
I need to build a form with smooth animations. What CSS and JavaScript techniques are used in the 50projects50days form animation projects?
Prompt 5
How can I fetch data from the GitHub API and display user profiles in vanilla JavaScript? Show me the pattern from the 50projects50days GitHub profile lookup project.
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.