The IDE. Not the puzzle box.

A full, collaborative IDE in the browser — real files, a real Linux terminal, synced cursors, a built-in AI agent. What you’re looking at is exactly what your candidate sees.

CodePair
PriyaPjetr
Pjetr
Files
public
src
App.css
App.jsPjetr
App.test.js
{}emojiList.json
EmojiResultRow.css
EmojiResultRow.js
EmojiResults.css
EmojiResults.js
filterEmoji.jsPriya
filterEmoji.test.js
Header.css
Header.js
index.css
index.js
svglogo.svg
SearchInput.css
SearchInput.js
.gitignore
flake.nix
LICENSE
package.json
README.md
run.sh
yarn.lock
App.jsPjetr
filterEmoji.jsPriya
EmojiResults.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
import React, { PureComponent } from "react";
import Header from "./Header";
import SearchInput from "./SearchInput";
import EmojiResults from "./EmojiResults";
import filterEmoji from "./filterEmoji";

export default class App extends PureComponent {
  constructor(props) {
    super(props);
    this.state = {
      filteredEmoji: filterEmoji("", 20)
    };
  }

  handleSearchChange = event => {
    this.setState({
      filteredEmoji: filterEmoji(event.target.value, 20)
    });
  };

  render() {
    return (
      <div>
        <Header />
        <SearchInput textChange={this.handleSearchChange} />
        <EmojiResults emojiData={this.state.filteredEmoji} />
      </div>
    );
  }
}
Priya
App.js
Tab 1Tab 2
+ New Tab
$ yarn test
yarn run v1.22.22
$ react-scripts test --watchAll=false
 
PASS src/EmojiResults.test.js
PASS src/Header.test.js
FAIL src/filterEmoji.test.js
✓ returns matching emoji by name (12 ms)
✕ handles leading whitespace (8 ms)
 
● filterEmoji › handles leading whitespace
expect(received).toEqual(expected) // deep equality
Expected length: 1
Received length: 3
 
Tests: 1 failed, 8 passed, 9 total
Time: 1.847s
…/workspaceon codepair
Agent 1 · codepair-fast
New Tab
Priya
The emoji filter is returning duplicates when I type a leading space. Can you find where that happens and fix it?
ƒ
I'll take a look at the failing test and trace it back to the source.
read src/filterEmoji.test.jsread src/filterEmoji.js
ƒ
Found it. `filterEmoji` calls `.startsWith(search)` on the raw query, so a leading space matches the space-prefixed `keywords` entries three times. I'll `trim()` the input and add a regression test for it.
edit src/filterEmoji.js+2 −1edit src/filterEmoji.test.js+6 −0run yarn test filterEmoji
ƒ
Re-running the suite — one file, one test case added. I'll report back once it's green.thinking…
Can you also add a test for multi-word queries?

codepair-fast · 100% left/workspace

localhost:3000
live
Emoji Search

Find your emoji

🔍fire
🎉
Party Popper
party, celebration
🚀
Rocket
launch, ship, fast
💡
Light Bulb
idea, bright
👨‍💻
Developer
engineer, code
🔥
Fire
hot, trending
Live call · 12:34
rec
Priya
Priya
Pjetr
Pjetr

Click the numbered pins to read about each part of the IDE.

An interview that feels like day one.

Send a link and drop into an environment that mirrors your stack. No fake editors, no contrived tests — just real engineering work from minute one.