Live Engineering Challenges

Project Mode

Solve real-world engineering bugs and build features in a live, multi-file environment.

Easy

The Impossible Counter

This counter is supposed to increment by 3 when you click the button, but it only increments by 1. Fix the React state update logic.

5 mins
85% Success
ReactState Management
Easy

Build a Neumorphic Button

Neumorphism is a design trend that makes UI elements look like they are physically extruding from the background using clever CSS box-shadows. Your task is to add a `boxShadow` to the button's style object so it looks 3D — with a soft light shadow on the top-left and a dark shadow on the bottom-right.

5 mins
60% Success
CSSReact Styling+1 more
Easy

Fix the DOM Manipulation Bug

You need to build a simple vanilla JavaScript todo app that adds items to a list dynamically. The HTML is provided, but the JavaScript is broken. Fix it to add items to the DOM when the button is clicked.

8 mins
78% Success
Vanilla JSDOM API+1 more
Easy

Build a Responsive Flexbox Layout

Create a responsive header layout using CSS Flexbox. The HTML structure is provided. You only need to add the CSS to make the header flex, center items vertically, and respond to mobile screens.

7 mins
82% Success
CSSFlexbox+1 more
Medium

Fix the Broken API Route

The frontend for this Todo app is working perfectly, but the API route is returning a 500 error because of a validation issue. Debug the `api.js` file and fix the POST handler to correctly parse the request body.

10 mins
72% Success
ReactAPI Simulation+1 more
Medium

Implement a useDebounce Hook

When building search bars, you don't want to hit your API on every single keystroke. Instead, you should 'debounce' the user's input, waiting until they've stopped typing for a brief period before triggering the search. Complete the `useDebounce` hook implementation.

15 mins
55% Success
ReactCustom Hooks+1 more
Medium

Build a Generic Type-Safe List Component

Build a reusable React component in TypeScript that accepts a generic array and renders it. The component should be type-safe and only accept valid props.

12 mins
52% Success
TypeScriptReact+1 more
Hard

Optimize the Laggy List

This filtered list of 800 items renders extremely slowly. Every time you type in the search box, the entire app freezes. Your goal is to optimize the performance so typing feels instant.

15 mins
45% Success
ReactPerformance+1 more