Week 1: Fundamentals and Core JavaScript Concepts
Day 1: Interactive Drum Kit
- Concept: JavaScript Events and Audio Manipulation
- Project: Build a virtual drum kit that plays sounds on keypress and click events
- Key Learning Points:
- Event listeners (
keydown,transitionend) - Audio API (
HTMLAudioElement) - DOM manipulation (adding/removing classes)
- Event listeners (
- ES6+ Features:
constandletfor variable declarations- Arrow functions for concise event handlers
- Template literals for dynamic audio source strings
Day 2: Advanced To-Do List Application
- Concept: DOM Manipulation and Event Handling
- Project: Create a feature-rich to-do list with add, delete, and mark-as-complete functionality
- Key Learning Points:
- Creating and appending DOM elements
- Event delegation for dynamically created elements
- LocalStorage for data persistence
- ES6+ Features:
- Destructuring for extracting properties from event objects
- Template literals for creating list item HTML
- Array methods like
filter()andmap()for list manipulation
Day 3: Scientific Calculator
- Concept: Mathematical Operations and Function Logic
- Project: Develop a scientific calculator with basic and advanced mathematical functions
- Key Learning Points:
- Handling complex calculations and operator precedence
- Managing calculator state and display updates
- Implementing memory functions (M+, M-, MR, MC)
- ES6+ Features:
- Default parameters for optional function arguments
- ES6 modules for organizing calculator functions
Mathobject methods for advanced calculations
Day 4: Multi-Select Checkboxes
- Concept: Keyboard Events and Array Manipulation
- Project: Implement a list with checkboxes that allows multi-select using the Shift key
- Key Learning Points:
- Handling keyboard events in conjunction with mouse events
- Manipulating arrays based on user interactions
- Updating UI state based on selected items
- ES6+ Features:
Array.from()to convert NodeList to Arrayfor...ofloop for iterating over selected checkboxes- Arrow functions for callback in array methods
Day 5: Advanced Password Generator
- Concept: String Manipulation and Random Generation
- Project: Create a password generator with customizable options (length, character types)
- Key Learning Points:
- Generating random characters and numbers
- Implementing user-selectable options
- Ensuring generated passwords meet specified criteria
- ES6+ Features:
- Spread operator for combining character sets
Array.from()with a mapping function for password generation- Object destructuring for handling option parameters
Day 6: Interactive Canvas Drawing App
- Concept: HTML5 Canvas API and Drawing Functions
- Project: Build a drawing application with color selection, brush size, and save functionality
- Key Learning Points:
- Canvas context and drawing methods
- Handling mouse events for smooth drawing
- Implementing undo/redo functionality
- ES6+ Features:
- ES6 classes for organizing drawing tools and state
- Destructuring for extracting mouse coordinates
constfor declaring unchanging variables (e.g., canvas, context)
Day 7: Customizable Modal System
- Concept: Event Propagation and DOM Traversal
- Project: Develop a reusable modal system with customizable content and animations
- Key Learning Points:
- Creating and removing modals dynamically
- Implementing modal open/close animations
- Handling modal stacking and focus management
- ES6+ Features:
- Block scoping with
letandconst - Arrow functions for event listeners
- Template literals for modal HTML structure
- Block scoping with
Week 2: Intermediate JavaScript and DOM Skills
Day 8: Analog and Digital Clock
- Concept: Date Object and CSS Manipulation
- Project: Create a clock with both analog and digital displays
- Key Learning Points:
- Working with the
Dateobject - Dynamically updating CSS properties
- Implementing smooth transitions for clock hands
- Working with the
- ES6+ Features:
- ES6
Mapfor storing time unit to degree mappings - Destructuring the
Dateobject - Template literals for formatting digital time
- ES6
Day 9: Flex Panels Image Gallery
- Concept: CSS Flexbox and DOM Interaction
- Project: Build an interactive image gallery with expanding panels
- Key Learning Points:
- Manipulating CSS classes for animations
- Coordinating CSS transitions with JavaScript events
- Implementing responsive design with Flexbox
- ES6+ Features:
- Arrow functions for concise event handlers
Array.from()withforEachfor panel interactions- Template literals for dynamic content insertion
Day 10: Konami Code Detector
- Concept: Array Methods and Key Sequence Detection
- Project: Implement an Easter egg triggered by entering the Konami Code
- Key Learning Points:
- Capturing and processing keyboard input
- Maintaining a sequence of inputs
- Triggering actions based on specific sequences
- ES6+ Features:
Array.prototype.push()andslice()for managing the sequenceincludes()method for checking the correct sequence- Arrow functions for event handling
Day 11: Dynamic Text Shadow Generator
- Concept: Mouse Events and CSS Variable Manipulation
- Project: Create a text effect where shadow follows mouse movement
- Key Learning Points:
- Tracking mouse position relative to an element
- Dynamically updating CSS custom properties
- Implementing performance optimizations (e.g., debouncing)
- ES6+ Features:
- Destructuring mouse event properties
- Arrow functions for event handlers and utility functions
- Template literals for constructing CSS
text-shadowvalues
Day 12: Persistent Note-Taking App
- Concept: LocalStorage and Event Delegation
- Project: Develop a note-taking app that saves notes to LocalStorage
- Key Learning Points:
- Using LocalStorage for data persistence
- Implementing CRUD operations for notes
- Optimizing event listeners with event delegation
- ES6+ Features:
JSON.parse()andJSON.stringify()for data storage- Object methods shorthand in class definitions
Array.prototype.find()for note retrieval
Day 13: Interactive Quiz Application
- Concept: Asynchronous Operations and State Management
- Project: Build a quiz app with timed questions and score tracking
- Key Learning Points:
- Managing application state across questions
- Implementing a countdown timer
- Calculating and displaying final scores
- ES6+ Features:
- ES6 modules for separating concerns (questions, timer, scoring)
- Promises for handling question transitions
async/awaitfor managing quiz flow
Day 14: Custom Video Player
- Concept: HTML5 Media API and Custom Controls
- Project: Create a video player with custom controls and keyboard shortcuts
- Key Learning Points:
- Manipulating video playback (play, pause, skip)
- Implementing custom progress bar and volume control
- Adding keyboard shortcuts for player control
- ES6+ Features:
- Getter/setter methods for properties like volume
- Template literals for time formatting
async/awaitfor handling playback state changes
Week 3: Advanced Interactivity, APIs, and ES6 Features
Day 15: Weather Dashboard with Forecasts
- Concept: API Integration and Data Visualization
- Project: Build a weather app that displays current conditions and forecasts
- Key Learning Points:
- Fetching data from weather APIs
- Parsing and displaying complex JSON responses
- Implementing geolocation for local weather
- ES6+ Features:
fetch()API for making HTTP requestsasync/awaitfor handling asynchronous API calls- Destructuring complex API responses
Day 16: Autocomplete Search with Highlighting
- Concept: Regex and Dynamic DOM Updates
- Project: Create a search input with autocomplete suggestions and result highlighting
- Key Learning Points:
- Implementing debounce for performance optimization
- Using regex for flexible search matching
- Dynamically updating the DOM with search results
- ES6+ Features:
- Promises for handling search requests
- Template literals with embedded expressions for result highlighting
- Arrow functions for callback methods
Day 17: Voice-Controlled Note-Taking App
- Concept: Speech Recognition and Synthesis APIs
- Project: Develop a note-taking app that supports voice input and text-to-speech
- Key Learning Points:
- Implementing browser speech recognition
- Converting text to speech for note playback
- Handling different browser speech API implementations
- ES6+ Features:
- Class syntax for organizing speech recognition logic
async/awaitfor managing speech recognition sessions- Array methods for processing recognized speech
Day 18: Interactive Map with Custom Markers
- Concept: Geolocation API and Third-party Map Integration
- Project: Create an interactive map with custom markers and info windows
- Key Learning Points:
- Integrating a third-party mapping library (e.g., Leaflet.js)
- Using the Geolocation API to center the map
- Creating and managing custom map markers
- ES6+ Features:
- Destructuring for extracting coordinates
- Template literals for constructing info window content
- Promises for handling asynchronous geolocation requests
Day 19: Animated Navigation Menu
- Concept: CSS Transitions and Intersection Observer
- Project: Build a responsive navigation menu with smooth animations
- Key Learning Points:
- Implementing CSS transitions for smooth animations
- Using Intersection Observer for scroll-based effects
- Creating a mobile-friendly, collapsible menu
- ES6+ Features:
- ES6 modules for separating menu logic
- Arrow functions for Intersection Observer callbacks
- Spread operator for combining menu items
Day 20: Theme Switcher with CSS Variables
- Concept: Dynamic Theme Management
- Project: Implement a theme switcher using CSS custom properties
- Key Learning Points:
- Manipulating CSS custom properties with JavaScript
- Persisting user theme preference
- Creating smooth transitions between themes
- ES6+ Features:
- Object methods for theme definitions
- Ternary operator for conditional theme application
- Arrow functions for event handlers
Day 21: Animated Circular Progress Indicators
- Concept: SVG Manipulation and Animation
- Project: Create animated circular progress bars using SVG
- Key Learning Points:
- Manipulating SVG elements with JavaScript
- Implementing smooth animations for progress updates
- Creating reusable components for progress indicators
- ES6+ Features:
- ES6 classes for encapsulating progress bar logic
- Generators for creating unique IDs
- Destructuring for extracting dimensions and values
Week 4: Advanced Applications and Modern JavaScript Concepts
Day 22: Infinite Scroll Image Gallery
- Concept: Infinite Scrolling and Lazy Loading
- Project: Build an image gallery that loads more images as the user scrolls
- Key Learning Points:
- Implementing infinite scroll functionality
- Lazy loading images for performance optimization
- Managing large datasets efficiently
- ES6+ Features:
async/awaitfor handling image loading- Array methods (
map,filter) for processing image data - Optional chaining for safely accessing nested properties
Day 23: Kanban Board with Drag and Drop
- Concept: Drag and Drop API and State Management
- Project: Create a Kanban-style task board with draggable task cards
- Key Learning Points:
- Implementing the HTML5 Drag and Drop API
- Managing application state across multiple lists
- Persisting board state to LocalStorage
- ES6+ Features:
- ES6 modules for separating concerns (drag-drop, state management)
- Object/Array destructuring for handling drag events
- Spread operator for immutable state updates
Day 24: Real-time Chat Application
- Concept: WebSockets and Real-time Communication
- Project: Develop a real-time chat application with multiple rooms
- Key Learning Points:
- Setting up WebSocket connections
- Implementing real-time message broadcasting
- Managing chat rooms and user presence
- ES6+ Features:
async/awaitfor handling WebSocket connections- ES6 classes for organizing chat logic
- Template literals for message formatting
Day 25: Pomodoro Timer with Notifications
- Concept: Web Workers and Notification API
- Project: Build a Pomodoro timer with background time tracking and notifications
- Key Learning Points:
- Using Web Workers for background processing
- Implementing the Notification API for alerts
- Managing application state across worker and main thread
- ES6+ Features:
- Class syntax for timer logic
- Promises for handling notifications permissions
- Destructuring for timer configuration
Day 26: Cryptocurrency Portfolio Tracker
- Concept: Real-time Data and Chart Visualization
- Project: Create a dashboard for tracking cryptocurrency portfolios
- Key Learning Points:
- Integrating with cryptocurrency APIs
- Implementing real-time price updates with WebSockets
- Visualizing data with a charting library (e.g., Chart.js)
- ES6+ Features:
async/awaitfor API calls and WebSocket handling- Object methods for portfolio calculations
- Destructuring for extracting relevant data from API responses
Day 27: Full-text Search Engine
- Concept: Text Indexing and Search Algorithms
- Project: Implement a client-side full-text search engine
- Key Learning Points:
- Creating an inverted index for efficient searching
- Implementing relevance scoring and result ranking
- Optimizing search performance for large datasets
- ES6+ Features:
- ES6
MapandSetfor efficient data structures - Generators for lazy evaluation of search results
async/awaitfor non-blocking indexing operations
- ES6
Day 28: Browser-based Code Editor
- Concept: Text Editing and Syntax Highlighting
- Project: Build a simple code editor with syntax highlighting and auto-completion
- Key Learning Points:
- Implementing a text editing interface
- Integrating a syntax highlighting library
- Adding basic auto-completion functionality
- ES6+ Features:
- ES6 modules for editor components
- Proxy objects for tracking document changes
async/awaitfor loading language definitions
Day 29: WebGL-powered 3D Visualization
- Concept: WebGL and 3D Graphics
- Project: Create a 3D data visualization using WebGL
- Key Learning Points:
- Setting up a WebGL context
- Implementing basic 3D transformations
- Creating interactive 3D visualizations
- ES6+ Features:
- TypedArrays for efficient data storage
- ES6 classes for encapsulating WebGL logic
- Destructuring for handling 3D coordinates
Day 30: Progressive Web App (PWA) Conversion
- Concept: Service Workers and Offline Functionality
- Project: Convert a previous project into a Progressive Web App
- Key Learning Points:
- Implementing Service Workers for offline support
- Creating a Web App Manifest
- Optimizing for performance and offline use
- ES6+ Features:
async/awaitin Service Worker setup- ES6 modules for organizing PWA features
- Object spread for merging configuration options
This 30-day challenge provides a comprehensive journey through modern JavaScript development, covering a wide range of concepts and practical applications. Each day builds upon previous knowledge, culminating in advanced projects that showcase the power and flexibility of JavaScript in web development.