HookDrill

Search problems

Search for a command to run...

From spec to a green test strip

The same loop on every problem. It takes minutes to start and as long as it takes to get right.

  1. 1

    Read the spec

    Each problem lists its requirements and a data-testid contract. The tests find your elements by those ids, so the markup is yours to design.

    Test idElement
    todo-inputtext input for a new todo
    add-buttonadds the todo
    todo-itemone per todo, with data-done
    toggle-buttonmarks it done or not done
  2. 2

    Build it by hand

    Write the component in a real editor with no AI suggestions. The preview re-renders as you type, so you see every state you build.

    <li data-testid="todo-item" data-done={t.done}>  <button data-testid="toggle-button"    onClick={() => toggle(t.id)}>Done</button>
    Wire up add and toggleLive preview
  3. 3

    Hidden tests verify

    Run the suite in your browser. You see each test by name and its verdict, one cell per test, but never the test code.

    Accepted
    • adds a todo with the Add button and with Enter
    • ignores empty and whitespace-only input
    • toggles a todo done and undone
    • Test code is never shown

Problems you would actually ship

Lists, forms, focus traps, async search. Each one is a component a product team needs, with tests that check the behaviour rather than the markup. Two are open today; the rest of the catalogue is on the way.

  • Lists8
  • State7
  • Sorting5
  • Accessibility4
  • Forms3
  • Derived State3
  • Timers3
  • Async3
Browse all problems

AI writes code all day. Your hands still have to know how.

The job is moving from typing code to deciding what to build, directing agents and verifying what they ship. That only works if you can read code well enough to catch what’s wrong, and that skill fades quietly when you stop using it.

HookDrill trains both halves. Drills keep your hands sharp: a spec, an empty App.tsx, and tests that only care whether it works. Builder Lab, coming next, trains the rest: specs, agents and verification.

Read how software gets built next

In the editor

  • React and TypeScript with syntax colouring
  • A live preview that re-renders as you type
  • Every test by name, with a verdict per test
  • Hints, revealed one at a time when you ask

Left out on purpose

  • AI completion and suggested fixes
  • The test source
  • Anything that writes the component for you

React UI first. Algorithms next.

The React track is open now. A DSA track with the classic interview set is being built on the same editor and test runner.

React UI

Live

Open today: Todo List, Playlist Builder, Accordion, Star Rating, Counter with Undo, Password Strength Meter, Shopping Cart, Countdown Timer, Tabs with Roving Focus, Sortable Data Table, Multi-step Form, Modal Focus Trap, Autocomplete Combobox, Virtualized List, Debounced Search, Toast Queue, File Explorer Tree, Infinite Feed, Kanban Board, Date Range Picker, Product Sort, Leaderboard Ranking, Natural Sort File List, Multi-column Sort.

Planned study plansOutline, sample
  • React Fundamentals12 problemsState, lists and events by hand, no libraries.Beginner
  • Accessible Components9 problemsKeyboard support, focus and ARIA that tests can prove.Intermediate
  • Async UI8 problemsDebounce, cancellation, loading and error states.Intermediate
  • Forms & Validation10 problemsControlled inputs, multi-step flows, error messages.Beginner

Data structures and algorithms

Coming later

Same rules: no AI, hidden tests, one cell per test.

  • Interview 7575 problemsThe classic arrays, strings and graphs set.Intermediate
  • Dynamic Programming24 problemsFrom memoised recursion to tabulation.Advanced

First up: Two Sum, Valid Parentheses, Group Anagrams, Longest Substring Without Repeats, Merge Intervals.

Weekly contests and a rating

Sample data

Timed rounds of UI problems, scored by the same hidden tests. This is a preview of how contests and the leaderboard will look.

Weekly Drill 14

Starts
Sun, Oct 25, 14:00 UTC
Length
90 min
Problems
4
See all contests
Global rankingFull leaderboard
#HandleSolvedRating
1tourist_ui4122780
2rin.t3962709
3mkovacs3802638
4jdlr3642618
5hanne3682547

An empty App.tsx is waiting.

Start with Todo List: one component, six tests, nothing to lean on but what you know.