Frontend-Expert contains bunch of exercises available in the FrontendExpert course. All the implementations have been done in ReactJS for consistency. A CI/CD pipeline will be setup soon and exercises done up till that point can be easily viewed as a part of the deployed website. Detailed description can be found in each exercise's README.
- SignUpForm: Implement a sign-up form in HTML with some given prerequisites.
- ItemCart: Implement an item cart in HTML with static data.
- Spaghetti Recipe: You've been provided with a recipe for spaghetti as raw text, and you need to convert this recipe into a properly marked-up HTML file.
- Blog Post: You've been provided with a blog post as raw text, and you need to convert this post into a properly marked-up HTML file.
- Rainbow Circles: You're given an HTML file with three nested divs, each with a unique ID. Using only CSS, style the HTML to have the appearance of six concentric colored circles.
- Navbar: You're given an HTML file for the top navigation bar of a website, style the navigation bar as per the given conditions.
- PigEmoji: You're given an HTML file with the markup for a pig emoji. Using only CSS, style the HTML to have the appearance of a pig emoji.
- PurchaseForm: You're given an HTML file with the markup for a purchase form, similar to the actual purchase form on AlgoExpert. Using only CSS, style the purchase form.
- AlgoExpertProducts: You're given an HTML file containing divs representing AlgoExpert's products. Using only CSS, align the products in three rows.
- RobotEmoji: You're given an HTML file with the markup for a robot head emoji. Using only CSS, style the HTML to have the appearance of a robot emoji.
- NotificationsMenu: You're given an HTML file containing the markup for a notifications menu. Using only CSS, replicate the expected output.
- AlgoExpertLogo: You're given an HTML file containing the markup for the AlgoExpert logo. Using only CSS, replicate the logo.
- TestingFramework: Implement the following three functions of a basic JavaScript testing framework:
describe
,it
andexpect
based on the given requirements. - ArrayMethods: Without calling
Array.prototype.map()
,Array.prototype.filter()
,Array.prototype.reduce()
, orArray.prototype.forEach()
, implement the following functions -myMap
,myFilter
andmyReduce
on the Array prototype. - EventTarget: Implement an EventTarget class (similar to the EventTarget interface of the DOM), which keeps track of event listeners and dispatches events.
- Debounce: Write a debounce function that takes in a required callback function, a required delay in milliseconds, and an optional immediate boolean, which defaults to false.
- ThisBinding: Without calling
Function.prototype.call
,Function.prototype.apply
orFunction.prototype.bind
, implement the following three similar functions -myCall
,myApply
andmyBind
on the Function prototype. - Promisify: Write a promisify function (similar to the
util.promisify
Node.js function) that takes in a required callback function and returns a new "promisifed" version of that function. - Throttle: Write a throttle function that takes in a required callback function and a required delay in milliseconds.
- Curry: Write a curry function that takes in a required callback function and returns a curried version of that function.
- PromiseMethods: Without calling
Promise.race()
,Promise.any()
,Promise.all()
,Promise.allSettled()
, implement the following four similar functions on the native Promise object. - DeepEquals: Write a deepEquals function that takes in two required values and returns if those two values are deeply equal to each other.
- Promises: Write a MyPromise class based on the native Promise built-in class.
- Flatten: Write a flatten function that takes in a value and returns a flattened version of that value.
- CorrespondingNode: Write a correspondingNode function that takes in three DOM Elements. The first two parameters represent the root nodes of two different DOM trees. The third parameter is a node within the first DOM tree.
- Memoize: Write a memoize function that takes in a required callback function and an optional resolver function. The memoize function returns a memoized version of the callback function.
- CreateDOM: Write a createDom function that takes in a required root parameter, which is an object representation of a DOM tree's root node or a string representation of a text node.
- TrendingStocks: Write an asynchronous trendingStocks function that takes in a required integer n and returns data about the top n US-based stocks by market cap.
- InfiniteScroll: You're given an API endpoint that returns a list of AlgoExpert testimonials, and you have to fetch and display these testimonials on the page.
- StopWatch: You're given HTML and CSS files for a simple stopwatch, and you need to make the stopwatch functional using JavaScript.
Disclaimer: This repo is not related to FrontendExpert or AlgoExpert in any way. This repo has been set up just to practice the exercises available in the course which can be purchased through their website.