Skip to content

Welcome to my JavaScript DSA 30 day Challenge repository! Embark on a learning journey with me as I delve into Data Structures and Algorithms through a series of engaging web applications. This collection of 30+project serves as a record of my daily progress, showcasing diverse projects that reinforce fundamental programming concepts in JavaScript.

Notifications You must be signed in to change notification settings

dadihemasri/Javascript-DSA-challenge

Repository files navigation

JavaScript DSA Challenge πŸš€

Welcome to my JavaScript DSA Challenge! This journey is designed to learn Data Structures and Algorithms concepts through engaging and creative web applications. Each day, I'll be working on a new project to reinforce my understanding of fundamental programming concepts in JavaScript. This repository serves as a record of my daily progress as I build various projects from scratch to enhance my understanding of programming concepts using JavaScript.

Overview πŸ“œ

In this initial practice project, I've decided to create a Role Playing Game (RPG). An RPG is a game in which players assume the roles of characters in a fictional setting. Players take responsibility for acting out these roles within a narrative, either through literal acting or through a process of structured decision-making regarding character development.

The goal of this project is to learn and reinforce fundamental programming concepts in JavaScript by crafting my RPG from scratch. Throughout this project, I will be working with a variety of concepts, including:

  • Arrays
  • Strings
  • Objects
  • Functions
  • Loops
  • If/else statements

By developing an RPG, I aim to not only enhance my coding skills but also to create a dynamic and interactive experience that incorporates the essence of storytelling within a game.

🌈 Day-1 Project Screenshots Explore the live project here.

image

Overview πŸ“œ

In the Day 2 project, I extended my coding practice by creating a Calorie Counter application. The purpose of this project is to apply and reinforce fundamental programming concepts in JavaScript while building a dynamic and interactive Calorie Counter. Throughout this project, I will be working with a variety of concepts, including:

1. User Input Validation

Purpose: Ensure valid user input.

Key Concepts:

  • Regular Expressions
  • Input Sanitization

2. Dynamic Interface Update

Purpose: Provide real-time feedback to users.

Key Concepts:

  • DOM Manipulation
  • Template Literals

3. Event Handling

Purpose: Respond to user interactions.

Key Concepts:

  • addEventListener()
  • Event Object

4. Calculations and Logic

Purpose: Derive meaningful results from user input.

Key Concepts:

  • Mathematical Operations
  • Conditional Statements

5. Clearing Form and Resetting State

Purpose: Allow users to start fresh.

Key Concepts:

  • Reset Function
  • Class Manipulation

6. Interactive Web Application

Purpose: Develop a user-friendly application.

Key Concepts:

  • CSS Styling
  • User Feedback

7. Practical Application of JavaScript Concepts

Purpose: Apply fundamental JavaScript concepts.

Key Concepts:

  • Arrays
  • Strings
  • Objects
  • Functions
  • Loops
  • If/else statements

8. Web Application Flow

Purpose: Define a logical flow for the application.

Key Concepts:

  • Sequence of Actions

9. Alerts and Error Handling

Purpose: Inform users and handle errors.

Key Concepts:

  • alert()
  • Error Flags

Day-2 Project Output

The Calorie Counter application allows users to input their daily calorie budget, and track calories consumed during breakfast, lunch, dinner, snacks, and calories burned through exercise. The application calculates the remaining calories and provides a summary of the user's budget, consumed calories, and burned calories.

🌈 Project Screenshots

Explore the live project here

image

Overview πŸ“œ

In the Day 3 project, I will be creating a basic MP3 player using HTML, CSS, and JavaScript. The project will cover essential string and array methods like find(), forEach(), map(), and join(). These methods are crucial for developing dynamic web applications.

Key Concepts Covered:

  • Handling audio playback
  • Managing a playlist
  • Implementing play, pause, next, previous, and shuffle functionalities
  • Dynamically updating the user interface based on the current song

🌈 Project Screenshots

Explore the live project here.

image

Overview πŸ“œ

In the Day 4 project, I focused on working with dates in JavaScript, tackling the challenges of navigating various methods, formats, and time zones. The goal of this project is to enhance my understanding of the JavaScript Date object, including its methods and properties. Additionally, I aimed to master the art of correctly formatting dates.

Key Concepts Covered:

  • JavaScript Date object
  • Date methods: getDate(), getMonth(), getFullYear()
  • Formatting dates
  • Handling time zones

Implementation Details:

1. Getting Current Date

I used the JavaScript Date object to get the current date, including the day, month, and year.

const currentDate = new Date();
const day = currentDate.getDate();
const month = currentDate.getMonth() + 1; // Note: Months are zero-based
const year = currentDate.getFullYear();

🌈 Project Screenshots

Explore the live project here.

image

Overview πŸ“œ

In the Day 5 project, I tackled the Palindrome Checker challenge, building a web application to determine whether a given input is a palindrome. A palindrome is a word or phrase that reads the same forward and backward, ignoring punctuation, case, and spacing.

Key Concepts Covered:

  • String Manipulation
  • Conditional Statements
  • DOM Manipulation

Implementation Details:

1. String Manipulation

I employed various string manipulation techniques to remove non-alphanumeric characters, convert all characters to the same case, and check for palindromes.

2. Conditional Statements

Utilizing conditional statements, I determined whether the input is a palindrome or not and updated the user interface accordingly.

3. DOM Manipulation

The results were dynamically displayed on the webpage using DOM manipulation, providing real-time feedback to the user.

🌈 Project Screenshots

Explore the live project here.

image

Overview πŸ“œ

In this Day-6 project, we're diving into the world of football cards. The goal is to create a web application that processes football team data and dynamically displays player information. You'll work on handling events, manipulating the Document Object Model (DOM), and filtering data based on specific criteria.

Key Concepts Covered:

  • Object Destructuring
  • Event Handling
  • Data Filtering
  • Switch Statements
  • Default Parameters

Implementation Details:

1. Object Destructuring

Learn how to efficiently extract values from objects using object destructuring. This skill will be crucial in extracting player information from the football team dataset.

2. Event Handling

Implement event handling to respond to user interactions. This will allow users to trigger actions like viewing detailed player information or applying filters.

3. Data Filtering

Explore techniques to filter and display specific subsets of football player data. This involves creating a responsive interface that dynamically updates based on user preferences.

4. Switch Statements and Default Parameters

Understand how to use switch statements and default parameters for efficient and structured code. These concepts will be applied in various aspects of the project for better control flow.

5. Object.freeze() and the map() Method

Discover how to make objects immutable using Object.freeze() and utilize the map() method for transforming data. These techniques will contribute to building a robust and scalable application.

🌈 Project Screenshots

Visualize the live project here.

image

Overview πŸ“œ

In this project, we'll dive into creating a TODO application that harnesses the power of local storage. You'll learn how to handle form inputs, manage data persistently, and perform CRUD operations on tasks. The focus will be on implementing event listeners and toggling UI elements to enhance user experience.

Key Concepts Covered:

  • Form Input Handling
  • Local Storage Management
  • CRUD Operations (Create, Read, Update, Delete)
  • Event Listeners
  • UI Element Toggling

Implementation Details:

1. Form Input Handling

Explore the process of capturing and processing user input from a form. Understand how to extract information efficiently and use it to create new tasks in the TODO list.

2. Local Storage Management

Learn to utilize local storage to store and retrieve TODO tasks persistently. This will enable users to access their tasks even after closing and reopening the web application.

3. CRUD Operations

Implement Create, Read, Update, and Delete operations on TODO tasks. Users will have the ability to add new tasks, mark them as completed, edit existing tasks, and remove tasks from the list.

4. Event Listeners

Implement event listeners to respond to user actions effectively. This includes triggering actions such as task creation, completion, editing, and deletion.

5. UI Element Toggling

Enhance the user interface by dynamically toggling elements based on the application's state. This will provide a seamless and intuitive user experience.

🌈 Project Screenshots

View the live project here.

image

Overview πŸ“œ

In this project, you will be diving into the fascinating world of recursion. Recursion is a programming concept where a function calls itself, allowing you to break down a complex problem into simpler sub-problems. The goal is to build a decimal-to-binary converter using JavaScript. This project will not only enhance your understanding of recursion but also provide insights into the call stack and allow you to visualize the recursion process through an animation.

Project Highlights πŸš€

  1. Recursion Fundamentals: You'll delve into the fundamentals of recursion, understanding how a function can call itself to solve a problem.

  2. Decimal-to-Binary Conversion: The main objective is to create a converter that takes a decimal number as input and outputs its binary representation.

  3. Visual Representation: Through the use of animations, you will visually represent the recursion process. This adds an extra layer to your learning by making abstract concepts more tangible.

  4. SetTimeout Function: You'll utilize the setTimeout function to create a step-by-step animation, allowing you to observe the changes in the call stack.

  5. Call Stack Exploration: Gain insights into the call stack, understanding how it behaves during recursive function calls.

  6. Stack Methods: Explore and use stack-related methods to manage the recursion process effectively.

Project Link and Screenshots πŸ–₯️

Explore the live project here.

image image

Technologies and Concepts πŸ› οΈ

  • JavaScript
  • Recursion
  • setTimeout function
  • Call stack
  • Stack methods

How to Use πŸ› οΈ

  1. Clone this Repository:
    git clone https://github.com/dadihemasri/Javascript-DSA-challenge.git
    
    

Repository Structure

javascript-dsa-challenge/
|-- Day-1_Role_Playing_Game/
    |-- index.html
    |-- script.js
    |-- styles.css
|-- Day-2_Next_Project/
    |-- ...
|-- Day-3_Another_Project/
    |-- ...
|-- ...

🚧 Future Projects

Stay tuned for daily updates as I add new projects to this repository. Each project is crafted to build on the concepts I've learned, providing a comprehensive learning experience in JavaScript and Data Structures/Algorithms.

Connect with Me 🌐

If you have any questions or suggestions, feel free to reach out:

Happy coding! πŸŽ‰

About

Welcome to my JavaScript DSA 30 day Challenge repository! Embark on a learning journey with me as I delve into Data Structures and Algorithms through a series of engaging web applications. This collection of 30+project serves as a record of my daily progress, showcasing diverse projects that reinforce fundamental programming concepts in JavaScript.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published