Pick a problem.
Refactor real-world code into clean, extensible designs. Each kata drops you into an editor with a failing starter and an AI reviewer.
6 problemsAll
BehavioralMedium
Refactor the Payment Processor
Replace a giant switch statement with the Strategy Pattern so new payment methods drop in cleanly.
> The Strategy PatternBehavioralEasy
Tame the Notification Service
Let subscribers react to events without the publisher knowing about them, using the Observer Pattern.
> The Observer PatternCreationalMedium
Build a Widget Factory
Centralize object creation behind a Factory so callers stop newing up concrete classes everywhere.
> The Factory PatternCreationalEasy
One Config to Rule Them All
Guarantee a single shared instance of app config with a well-behaved Singleton.
> The Singleton PatternStructuralMedium
Wrap the Legacy API
Make an incompatible third-party client fit your interface with the Adapter Pattern.
> The Adapter PatternStructuralHard
Decorate Your Coffee
Add behavior to objects at runtime by stacking Decorators instead of subclassing.
> The Decorator Pattern