Skip to content

PerfAct-Flip/100-JavaScript-Projects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 JavaScript Learning Journey: Project Checklist

This repository outlines a structured approach to mastering JavaScript through a series of small, progressively challenging projects. My goal is to build a strong foundation by practicing core concepts and gradually integrating more advanced topics, leading up to more complex applications.

Each project in this list is designed to reinforce specific JavaScript concepts. You can tick off the checkboxes as you complete each one!


Phase 1: The Absolute Basics

Focus: Variables, Data Types, Operators, Basic I/O. Get comfortable with syntax and fundamental building blocks. Use console.log() heavily.

  • "Hello World" Variations:
    • Display "Hello World" in the console.
    • Display "Hello [Your Name]" using a variable.
    • Display a message with a number (e.g., "Today is day 5 of my journey.").
  • Simple Arithmetic Calculator:
    • Add two numbers.
    • Subtract two numbers.
    • Multiply two numbers.
    • Divide two numbers.
    • Challenge: Take user input for numbers (using prompt()).
  • Variable Swapping: Swap the values of two variables without using a temporary variable.
  • Data Type Checker: Write a function that takes a variable and logs its data type using typeof.
  • Temperature Converter (C to F & F to C):
    • Create a function for Celsius to Fahrenheit conversion ($F = C \times 9/5 + 32$).
    • Create a function for Fahrenheit to Celsius conversion ($C = (F - 32) \times 5/9$).

Phase 2: Control Flow & Functions

Focus: If/Else, Loops, Functions, Parameters, Return Values. Introduce decision-making and reusable blocks of code.

  • Even or Odd Checker: Write a function that takes a number and returns "Even" or "Odd".
  • Largest of Two Numbers: Write a function that takes two numbers and returns the larger one.
  • FizzBuzz: Loop from 1 to 100; print "Fizz", "Buzz", "FizzBuzz", or the number.
  • Factorial Calculator: Write a function that calculates the factorial of a given number ($n! = n \times (n-1) \times \dots \times 1$).
  • Simple Interest Calculator: Create a function that calculates simple interest ($SI = (P \times R \times T) / 100$).
  • Grade Calculator: Take a score (0-100) and return a letter grade (A, B, C, D, F).
  • Vowel/Consonant Checker: Write a function that determines if a single character is a vowel or a consonant.
  • Simple Login System (Conceptual): Check predefined username/password against user input.
  • Countdown Timer (Console Based): Take a number from the user and count down to 0, logging each second.
  • Area Calculator (Rectangle, Circle, Triangle): Create a function that calculates area based on shape and dimensions.

Phase 3: Arrays & Objects

Focus: Data Structures, Iteration. Work with collections of data.

  • Array Sum & Average: Given an array of numbers, calculate their sum and average.
  • Find Max/Min in Array: Given an array of numbers, find the maximum and minimum values.
  • Array Reversal: Reverse an array without using the built-in reverse() method.
  • Remove Duplicates from Array: Create a new array containing only unique elements from a given array.
  • Object Properties Lister: Create a person object and iterate through its properties, logging key: value.
  • Book Object:
    • Create an object for a book (title, author, yearPublished, isRead).
    • Create an array of book objects and list all book titles.
    • List only unread book titles.
  • Shopping Cart (Array of Objects): Represent items as objects, add them to a cart array, and calculate the total price.
  • Simple To-Do List (Array of Strings/Objects): Implement functions to add, remove, and list to-do items.
  • Student Grade Tracker (Array of Objects): Calculate average grade for each student and find the student with the highest average.
  • Frequency Counter (String/Array): Given a string or an array, count the frequency of each character/element.

Phase 4: DOM Manipulation

Focus: Interacting with HTML, Events. Bring your JavaScript to life in the browser. You'll need index.html and style.css for these.

  • Basic Button Click Counter: A button and a display area; each click increments a displayed counter.
  • Text Changer: An input field and a button; change text in a <p> tag based on input.
  • Image Switcher: Cycle through an array of image URLs with "Next" and "Previous" buttons.
  • Background Color Changer: A button that changes the body's background color randomly on each click.
  • Show/Hide Element: A button to toggle the visibility of a <div>.
  • Basic Form Validation: A simple form; check if name and email fields are not empty on submission.
  • Accordion Menu: Create multiple collapsible sections using JavaScript to toggle their visibility.
  • Simple Calculator (UI based): Buttons for numbers and operations; display results in an input field.
  • Interactive To-Do List (UI based): Input to add tasks, list of tasks with delete buttons, mark as complete.
  • Modal Window: A button that opens and closes a modal overlay.

Phase 5: Advanced Concepts & APIs

Focus: Asynchronous JS, Fetch API, Local Storage, Classes, Modules. Tackle more complex scenarios and real-world interactions.

  • Quote Generator (Local Data): An array of quotes; display a random one on button click.
  • Quote Generator (API Fetch): Use an API to fetch and display a random quote. Handle loading/errors.
  • Weather App (API Fetch): Take city name as input, use a weather API to display current weather.
  • Typing Speed Test: Display text, user types it, calculate WPM and accuracy.
  • Simple Quiz App: Questions in an array of objects; display one, check answers, keep score.
  • Tic-Tac-Toe Game: Implement game logic (player turns, win conditions, draw) for a 3x3 grid.
  • Memory Game (Card Matching): Flip cards to find matching pairs; track moves and time.
  • Hangman Game: Choose a random word; user guesses letters; display progress.
  • Drawing App (Canvas API): Allow users to draw simple lines or shapes on an HTML canvas.
  • Basic Data Table with Sorting: Display data from an array of objects in an HTML table; implement column sorting.
  • Local Storage Counter: A counter that persists its value using localStorage.
  • Theme Switcher (Dark/Light Mode): Toggle between light/dark theme using CSS variables and localStorage.
  • Custom Countdown Timer (with setInterval/setTimeout): User inputs date/time, app displays live countdown.
  • Digital Clock: Display the current time that updates every second using setInterval.
  • Image Carousel/Slider: Display multiple images with navigation (next/previous buttons, dot indicators).
  • Basic Chat Application (Simulated): Input for message, display area; simulate messages from other users.
  • URL Shortener (Conceptual/API Integration): User inputs long URL, app calls shortening API, displays shortened URL.
  • Currency Converter (API Integration): Convert between different currencies using an exchange rate API.
  • Pagination for Data Display: Display large lists of items in pages instead of all at once.
  • Sticky Navigation Bar: Make a navigation bar stick to the top of the viewport when scrolling past it.
  • Scroll-to-Top Button: A button that appears when scrolling down and scrolls user back to top.
  • Animated Progress Bar: A progress bar that fills up over time or based on user interaction.
  • Star Rating Component: An interactive 5-star rating component where users can select a rating.
  • Drag and Drop List: Allow users to reorder items in a list by dragging and dropping them.
  • Form with Multi-Step Navigation: Break a long form into multiple steps with "Next" and "Previous" buttons.

Phase 6: Advanced JavaScript & Framework Preparation

Focus: ES6+, OOP, Advanced Patterns. Think about code structure, reusability, and preparation for larger applications/frameworks.

  • Class-Based Counter: Reimplement the counter project using a JavaScript class.
  • Book Library (Class-Based): Define Book and Library classes; Library manages Book objects.
  • Polymorphic Animal Sounds: Create base Animal class and derived classes (Dog, Cat) with distinct makeSound() methods.
  • Module-Based Calculator: Split the calculator logic into separate JavaScript modules (e.g., math.js, ui.js).
  • Debouncing/Throttling Demo: Create a search input field; use debouncing to delay API calls.
  • Promises/Async/Await Demo: Refactor previous API calls (e.g., Quote Generator, Weather App) to use async/await.
  • Error Handling Examples: Implement try...catch blocks for common scenarios (e.g., invalid input, failed API calls).
  • Data Validation Library (Small Scale): Write a set of reusable validation functions (e.g., isValidEmail, isNumeric).
  • Simple Data Filtering/Searching: Given an array of objects, implement a search bar that filters the data.
  • Custom Event Emitter: Create a simple event emitter class that allows on(), emit(), and off() events.

Phase 7: More Complex Projects & Integration

Focus: Combine multiple concepts into a cohesive application.

  • Pokedex (API): Fetch data from a Pokémon API; display Pokémon, types, stats; implement search/filtering.
  • Blog Post Viewer (Dummy API): Fetch blog posts from a dummy API; display list, click to view details.
  • Basic E-commerce Product List: Display products with images, names, prices; add "Add to Cart" button.
  • Recipe Finder (API): Search for recipes based on ingredients or keywords using a recipe API.
  • Movie Database (API): Search for movies using an API; display movie details, posters.
  • Calendar View (Basic): Display a calendar for the current month; allow navigation.
  • Expense Tracker: Input for expense name/amount; list expenses, calculate total; use local storage.
  • Drawing App with Color Picker: Enhance the drawing app with different brush colors.
  • Simple Charting (Using Canvas or a basic library like Chart.js): Display simple bar or pie charts.
  • Memory Game with Difficulty Levels: Add options for different grid sizes and number of pairs.
  • Minesweeper (Simplified): Implement a simplified version of the game.
  • Snake Game: Implement a classic Snake game with simple graphics on a canvas.
  • Flappy Bird (Simplified): Implement a very basic version on a canvas.
  • Kanban Board (Drag-and-Drop): Simulate a Trello-like board with columns and draggable cards.
  • Browser Extension (Simple): Create a very basic extension (e.g., change background color, display time).
  • Image Gallery with Lightbox: Clicking on a thumbnail opens a larger image in a modal.
  • PDF Viewer (Using a library like PDF.js, very advanced): Display a PDF in the browser.
  • Video Player Controls: Build custom controls (play/pause, volume, progress bar) for an HTML <video> element.
  • Speech Recognition Integration (Web Speech API): Take voice input and convert it to text.
  • Text-to-Speech Integration (Web Speech API): Convert text on the page to spoken audio.

Phase 8: Advanced Concepts & Architectural Thinking

Focus: Larger applications, performance, and best practices.

  • Client-Side Routing (Single-Page Application Concept): Build a simple SPA with multiple "pages" without full page reloads.
  • Performance Optimization Demo: Identify and optimize a slow part of one of your previous projects.
  • Web Worker Demo: Offload a heavy computation to a Web Worker to keep the UI responsive.
  • Web Components (Simple): Create a custom HTML element (e.g., a <my-button>) using Web Components.
  • Unit Testing (Jest/Mocha): Write unit tests for the functions in one of your projects.
  • Basic Build Process (Webpack/Parcel - Introduction): Set up a simple build process to bundle your JavaScript files.
  • Integration with a Backend (Node.js/Express - Conceptual/Basic): Create a very simple Node.js backend that serves data to your frontend.
  • Real-time Collaboration (Conceptual, if you understand WebSockets): Simulate a shared whiteboard or text editor experience.
  • Progressive Web App (PWA) Features (Conceptual): Add a web manifest and service worker to one of your simpler apps.
  • Your Dream Project (Scaled Down): Take a larger project idea you have and break it down into manageable JavaScript features.

💡 Tips for Success:

  • Start Small: Don't try to build everything at once. Focus on one feature at a time.
  • Understand the "Why": Don't just copy-paste. Try to understand why a piece of code works the way it does.
  • Use console.log(): It's your best friend for debugging.
  • Browser Developer Tools: Learn to use them effectively (Elements, Console, Sources, Network tabs).
  • Version Control (Git/GitHub): Start using Git from day one. Commit frequently.
  • Break Down Problems: If a project feels too big, break it into smaller, manageable tasks.
  • Practice, Practice, Practice: Consistency is key. Even 15-30 minutes a day makes a huge difference.
  • Refactor: Once a project works, go back and try to make your code cleaner, more efficient, and more readable.
  • Read Documentation: MDN Web Docs are an invaluable resource.
  • Community: Don't hesitate to ask questions on forums (Stack Overflow), Reddit (r/learnjavascript), or Discord servers.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published