This repository features frontend and JavaScript challenges, along with Data Structures and Algorithms (DSA) problems, designed to help developers enhance their problem-solving skills and build performant, accessible UIs.
You can also use The Frontend Wizards App.

Each challenge has:
- โจ Requirements
- ๐ก Solution (React with TypeScript for UI challenges)
- ๐ฎ Live demo (for UI challenges)
๐จ User Interface Challenges
Title | Difficulty | Completed | Accessible | Solution |
---|---|---|---|---|
Hello World | Easy | โ | โ | Solution |
CountDown | Easy | โ | โ | Solution |
Simple Form I (without accessibility) | Easy | - | - | - |
Star Rating | Easy | โ | โ | Solution |
Simple Form II (with accessibility) | Easy | - | - | - |
Traffic light | Easy | โ | โ | Solution |
File Tree | Medium | โ | โ | Solution |
Twitter like | Medium | โ | โ | Solution |
Twitter like II | Medium | - | - | Solution |
Whack a Mole | Medium | โ | โ | Solution |
Wordle Game | Hard | โ | โ | Solution |
Memory Game I | Hard | - | - | - |
Memory Game II | Hard | - | - | - |
Simple Endless Runner | Hard | - | - | - |
โ๏ธ Utility Functions
Category | Title | Difficulty |
---|---|---|
Basic Functions | Create Hello World Function | Easy |
Closures | Counter | Easy |
Closures | To Be Or Not To Be | Easy |
Closures | Counter II | Easy |
Basic Array Transformations | Apply Transform Over Each Element in Array | Easy |
Basic Array Transformations | Filter Elements from Array | Easy |
Basic Array Transformations | Array Reduce Transformation | Easy |
Function Transformations | Function Composition | Easy |
Function Transformations | Return Length of Arguments Passed | Easy |
Function Transformations | Allow One Function Call | Easy |
Function Transformations | Memoize | Medium |
Promises and Time | Add Two Promises | Easy |
Promises and Time | Sleep | Easy |
Promises and Time | Timeout Cancellation | Easy |
Promises and Time | Interval Cancellation | Easy |
Promises and Time | Promise Time Limit | Medium |
Promises and Time | Cache With Time Limit | Medium |
Promises and Time | Debounce | Medium |
Promises and Time | Execute Asynchronous Functions in Parallel | Medium |
JSON | Is Object Empty | Easy |
JSON | Chunk Array | Easy |
JSON | Array Prototype Last | Easy |
JSON | Group By | Medium |
JSON | Sort By | Easy |
JSON | Join Two Arrays by ID | Medium |
JSON | Flatten Deeply Nested Array | Medium |
JSON | Compact Object | Medium |
Classes | Calculator with Method Chaining | Easy |
๐งฎ Data Structures and Algorithms
- ๐จโ๐ผ Employers evaluating frontend developer skills
- ๐ฉโ๐ป Frontend/JavaScript developers seeking practice with coding challenges
Let's say you want to work on the traffic light challenge.
You can create a new project or use our CLI tool to use the starter template.
# Clone repository and setup CLI tool (only needed once)
git clone https://github.com/frontendwizards/frontend-challenges.git
cd frontend-challenges/challenge-cli
npm install
npm link
# Navigate to the root of the repository
cd ..
# Create new project from template (run it at the root of the repository)
challenge-cli start "traffic-light"
# Navigate to project and start development
cd problems/traffic-light/solutions/my-solution
npm run dev
Note
The starter template includes React and necessary tooling to get you started quickly.
The starter template comes with axe-core pre-integrated. To use it:
- ๐ Open your browser's Developer Tools (F12)
- ๐ Check the Console tab while using your app
- ๐ ๏ธ Review and fix accessibility errors that appear (ignore minor errors)
- โจ๏ธ Test your app with keyboard navigation (if applicable)
- ๐ Add appropriate ARIA labels for screen reader compatibility
You can use Claude for a final accessibility & quality check:
Review my code for accessibility and best practices:
- Point out critical issues that must be fixed (if any)
- Rate the overall implementation (e.g., production-ready, needs work, etc.)
Here's my code:
[Paste your code here]
Before starting work on a pull request (PR), please create an issue to discuss your proposal.
- โญ๏ธ Star this repository to motivate the addition of more challenges
- ๐ค Solved an interesting problem? Feel free to submit it!
- ๐ If you find a bug, raise an issue or fix it and send a pull request
- ๐ Add tutorials to explain official problem solutions
- ๐ฏ Add more UI problems (you can check the non solved UI problems in the UI table)
- โ๏ธ Configure axe-core to ignore minor accessibility warnings (e.g., missing a level-one heading) in the reportAccessibility function
- ๐ธ Add a screenshot img of each problem in the README, could be automated?
- ๐ Set up GitHub Actions for pull requests to:
- โ Validate solutions can be built successfully
- โฟ Accessibility check
- ๐ Extend the CI/CD pipeline for the main branch too
- ๐ Add resources for learning key concepts related to the problem
- ๐งช Add Unit tests for challenge-cli
Note
Share your solution only if you believe it's good and others can learn from it.
To share your solution follow the process for making a pull request to an open-source project.
In short:
- ๐ด Fork this repo and clone it
- ๐ฟ Create a branch and make your change
- โฌ๏ธ Push your branch to your fork
- ๐ค Open a PR against this repo
If you wanna work with React, you can use the starter template.
If you want to create a new problem called 'example-problem', use the create command:
challenge-cli create "example-problem"
cd problems/example-problem/solutions/react-ts
npm install
npm run dev
Please adhere to the following coding standards when submitting solutions:
- Follow the How to Review Your Solution guideline.
- ๐จ Format your code properly.
This project is licensed under the MIT License - see the LICENSE file for details.