MWLDE
Work/Personal
In progress

One Pawn

A chess training app with a C++ engine compiled to WebAssembly, running entirely in the browser. It reviews your games move by move and drills your openings with spaced repetition.

C++WebAssemblyWeb WorkerNext.jsSupabase
2026 — In Progress | Personal
One Pawn, chess engine: a crowned pawn on a checkerboard.

Overview

One Pawn has a purposefully boring identity commitment. It’s focused, honest and structured. It was built for me initially, because, unfortunately, I’m rather fond of aesthetics — and neither of the popular options quite satisfied what I wanted as someone who doesn’t play professionally, but still wants to improve.

A man in a suit running with a large alarm clock on his back.

So, One Pawn has a C++ engine that runs entirely in the browser compiled to WebAssembly, running in a Web Worker, so games work offline and no one is calculating moves on your behalf.

The One Pawn home screen: a card to start a game against the engine, two lessons due for review, progress through the Basics, Openings, Tactics and Endgames tracks and a list of recent games.
Home // the dashed cards are still in development

Game review

The engine reports what happened. You decide what to do with it.

Every finished game is classified move-by-move against the engine’s own evaluation. Blunders, mistakes and critical moments are labelled, but the app doesn’t immediately tell you what to think about them. You see what the engine sees, then decide whether to drill the position, replay it or simply move on. For now, I wanted the underlying data to speak for itself before putting another voice on top of it, so coach-style explanations and summaries of recurring mistakes will be added later as extra resources.

Openings

Flashcards to learn your chess openings? Not quite but…

One Pawn borrows Anki’s spaced-repetition idea and applies it to opening theory. In short, lines you complete in learn mode enter a review queue: get them right, they appear less often; get them wrong, they come back tomorrow. So you don’t need to keep track of it yourself, just play what’s in front of you. The goal isn’t to memorise everything — it’s to actually retain the 5-10 openings you favour, instead of forgetting them the week after learning them, which, admittedly, was the problem I built this to solve in the first place.

A lesson called The pin: White's bishop on b5 pins Black's knight on c6 to the king, with an explanation of the absolute pin beside the board.
Learn mode // the explanation appears after you make the move
The review queue: The Italian Game and Pawn movement are due, with review intervals of 6 and 16 days.
Reinforce // each correct review pushes the next one further out