Pulse is a working chat app with channels, a WebSocket message layer and reconnect handling. Messages arrive out of order, unread counts climb on the channel you're reading, and messages sent during a disconnect disappear. You fix each bug and open a GitHub pull request. An AI teammate reviews it, and a hidden Vitest suite decides whether it passes.
Real GitHub PRs · Graded by Vitest · Free during beta
Realtime bugs depend on timing, which makes them hard to spot in a tutorial and common in production. Each ticket is a bug report with acceptance criteria, in a codebase you didn't write.
Messages are shown in the order their network responses arrive, so a later message can jump ahead and optimistic echoes never settle into place. To pass, messages have to follow the server's order whatever the timing, echoes have to land in their confirmed position, and nothing can appear twice.
The counter goes up on every incoming message, including in the channel you have open. To pass, a focused channel stays at zero, and background channels still count up as messages arrive.
After a drop, the client just resubscribes to live events and never fetches what it missed. To pass, it has to backfill from the last message it saw, with no gaps or duplicates, and keep the order right across the reconnect.
Each Pulse ticket has a hidden test file that's added to your branch at grading time. The result appears on your pull request as a check.
Pulse assumes you know TypeScript and async code. It tests whether you can fix ordering and reconnect bugs in an app you didn't write.
Backend and full-stack devs who have only ever worked on request and response CRUD.
People who have used WebSockets or Socket.io in a tutorial and never had to debug them.
Anyone preparing for interviews who would rather talk about a reconnect data-loss bug than a chat app clone.
Juniors who want to see what a "request changes" review feels like before it happens at work.
Not for: people new to TypeScript or async programming. Pulse is about debugging an existing realtime app, so learn those first.
Node.js 24 and npm if you work locally. Every Pulse repo also opens in GitHub Codespaces.
An AI teammate reviews the diff in the PR thread and can ask for changes. Whether the fix is correct is decided by the hidden test suite.
They hand the client messages out of arrival order, and simulate a reconnect where the server reports what was missed. With the bugs in place, the order or the counts come out wrong.
The failing test output is on the pull request. Push a new commit and the check runs again.
Yes. Finishing the sprint gives you a certificate with the stack, the tickets you shipped and your tracked hours, behind a public link.
It's free during the beta.