Mateo Avantaggiato

D3 Kata - Practice DDD, CQRS & Event Sourcing in Ruby with AI feedback

by
Practica Domain-Driven Design, CQRS y Event Sourcing con Ruby a través de 30 katas progresivas con feedback de IA en tiempo real. Desde Aggregates hasta Event Sourcing aplicado a Rails.

Add a comment

Replies

Best
Mateo Avantaggiato

Hey Product Hunt!

I'm Mateo, a Ruby on Rails developer. I built D3 Kata because I was frustrated with how hard it is to actually practice Domain-Driven Design.

Every DDD resource out there is either a 500-page book with Java examples or a conference talk that stays at the theoretical level. When I sat down to apply Aggregates, CQRS, or Event Sourcing to a real Rails app, I was on my own — no structured exercises, no feedback loop, no way to know if I was doing it right.

So I built the thing I wished existed: 30 progressive coding katas focused entirely on DDD patterns, applied to Ruby on Rails, with AI-powered feedback on every solution you submit.

How it works:

  • Pick a kata with real-world context (e.g., modeling a ShoppingCart aggregate)

  • Write your Ruby solution in the built-in editor with syntax highlighting and starter code

  • Submit and get an AI-generated score + concrete suggestions to improve your DDD implementation

6 modules, from fundamentals to advanced patterns:

  1. Aggregates — modeling boundaries, protecting invariants

  2. Value Objects — immutability, equality by value

  3. Domain Events — publishing facts, implementing handlers, Bounded Contexts

  4. CQRS — separating commands from queries, Read Models, projections

  5. Event Sourcing — state as a sequence of events, Event Stores, aggregate rebuilds

  6. Functional Ruby — Monads, Railway Oriented Programming, dry-rb patterns applied to DDD

Pricing: One-time payment of $29, lifetime access. No subscriptions.

The first katas in each module are free — so you can try it before committing.

🎁 For the PH community: Use code PRODUCTHUNT for 20% off ($23 instead of $29).

I'd love to hear from you — what's been your biggest struggle when trying to apply DDD to a real project?

Thanks for checking it out!