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 | - | - | - |
CountDown | Easy | - | - | - |
Simple Form I (without accessibility) | Easy | - | - | - |
Rating Stars | Easy | - | - | - |
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 |
โ๏ธ 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 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 beginner-friendly 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
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:
- โฟ Ensure your app is accessible and follows best practices
- ๐จ Format your code
This project is licensed under the MIT License - see the LICENSE file for details.