Personal project · Active
Open sourcePatternForge
A chess training system built around returning to the same positions until calculation becomes recognition.
PatternForge adapts the Woodpecker Method into a focused digital training loop: choose a fixed puzzle set, complete it in cycles, review mistakes, and return to the same patterns with less time and friction on each pass.
João and I built it for our own chess training. The core product runs in the browser without an account, keeps progress on the device, and separates solving from looking back so training stays focused.
Why I built it
After reading The Woodpecker Method by Axel Smith and Hans Tikkanen, I liked the idea of repeating a fixed set until tactical motifs became familiar. Doing it manually was the problem: setting up positions, recording attempts, tracking cycles, and reviewing mistakes took attention away from the training itself.
PatternForge removes that administration without replacing the practice. It remembers the current cycle, gives immediate move feedback, preserves attempt history, and makes reflection available when I choose to leave execution mode.
In the app

The product model
- Training sets
- A fixed, ordered collection of exercises anchors the work. The point is to return to the same positions rather than consume an endless puzzle feed.
- Cycles
- One complete pass through a set is a cycle. Repeating the set makes total time, accuracy, and attempt history comparable across passes.
- Sessions
- A cycle can span several training visits. Session state preserves the current position and active training time without confusing a pause with a completed pass.
- Mistake review
- Failed positions enter a focused review queue, turning mistakes into another practice path rather than leaving them buried in session history.
- Reflection
- Completed cycles are reviewed per training set through summaries, tables, and charts. Unrelated sets are never mixed into one progress signal.
One training cycle
The same set moves through a repeatable sequence. Improvement is measured across complete passes, not inferred from a puzzle streak.
- 01
Choose a fixed set
Select a collection sized for the level and training period you want to repeat.
- 02
Start a cycle
The app creates one active pass through the ordered set and remembers the next exercise.
- 03
Train in sessions
Solve as much as the current visit allows. Multiple sessions can contribute to the same cycle.
- 04
Review mistakes
Revisit failed positions separately so weak patterns receive deliberate attention.
- 05
Reflect and repeat
Complete the pass, compare it with earlier cycles for the same set, then begin the next repetition.
The engineering follows the practice
The interesting architecture is not the framework list. It is how product decisions shape state ownership, persistence, and route behaviour around the rhythm of deliberate practice.
- 01
Training data stays on the device
Sets, cycles, sessions, attempts, mistakes, and preferences live in IndexedDB behind repository boundaries. There is no account requirement, network round trip, or backend dependency in the core training flow.
- 02
Execution and reflection are different modes
The training route stays focused on the current puzzle. Progress and cycle summaries own review, so returning to train never produces a surprise redirect into an old result.
- 03
Feedback optimises for recognition
Interactive verification checks the expected first move rather than requiring the full variation. That shortens the feedback loop, with the accepted trade-off that it does not prove full-line calculation.
- 04
Local-first has an honest cost
Training remains private and responsive, but progress is tied to the browser and device. Multi-device synchronisation and cloud backup do not exist today.
Where it goes next
PatternForge is actively used and continues to evolve around training workflows, reflection, mobile interaction, accessibility, puzzle validation, and deeper per-set analytics.
Backup, multi-device synchronisation, optional identity, and a fuller offline application shell are directions under consideration, not current capabilities. Any move in that direction has to preserve the simplicity and privacy of the local-first training path.
Technologies
- Application
- Next.js 16, React 19, TypeScript, Tailwind CSS, shadcn/ui
- Board and rules
- chess.js, Chessground, validated Woodpecker puzzle bundles
- Persistence
- Dexie, IndexedDB, Zod schemas, repository boundaries
- Product quality
- Vitest, Testing Library, Playwright, Storybook, Chromatic
PatternForge is built around a simple idea: tactical improvement comes less from endless novelty and more from returning to the same patterns until recognition becomes instinctive.