Refactor a Tangled Order Aggregate at a Logistics Platform
Overview
What this challenge is about.
Work in the provided Spring Boot 3 + Java 21 codebase. Identify the true aggregate roots (likely candidates: Order, Shipment, Invoice) and split the god object accordingly. Extract value objects (Address, Money, TrackingNumber) — flag any primitive-obsession smell. Move side-effects into Domain Events handled by a separate event listener. Preserve all 340 existing tests; add tests for new aggregate invariants. Deliver refactored source code via PR, an ADR documenting aggregate boundary rules, and a 6-page writeup including bugs uncovered during refactoring (expect at least 3).
The Brief
What you'll do, and what you'll demonstrate.
Refactor a 4,200-line god aggregate into properly-bounded DDD aggregates without breaking existing tests, surfacing the bugs hiding in the tangled code.
Earning criteria — what you'll demonstrate
- Apply tactical DDD patterns to a real legacy aggregate
- Identify aggregate boundaries from invariants, not from data relationships
- Refactor incrementally while preserving a behaviour-coverage test suite
- Surface and document bugs uncovered by clarifying domain language
Program Fit
Where this fits in your program.
Sharpens the same skills your degree expects you to demonstrate.
Skills
Skills you'll demonstrate.
Each one shows up on your verified credential.
Careers
Roles this prepares you for.
Real titles. Real skill bridges. Pick the one closest to your trajectory.
Career mappings coming soon.