Banking System
Learn Python, JavaScript, Java and more with free interactive lessons, real projects and a built-in help dictionary. Beginner-friendly.
Part of the free C# course at LearnCodingFast — hands-on lessons with examples you run in your browser, plus practice exercises and a quick quiz.
Expert Project — Aggregates, Value Objects, Domain Events, CQRS
🧠 Project Overview
Build a banking system using Domain-Driven Design. Practice aggregates that protect business invariants, value objects for type safety, and domain events for decoupled side effects.
🎯 Requirements
- • Open Current and Savings accounts with minimum deposit rules
- • Deposit, withdraw, and transfer between accounts
- • Transaction history with complete audit trail
- • Account freezing/closing with state validation
- • Domain events for notifications and audit logging
- • Full unit test coverage of domain logic
Step 1: Aggregate Root
Step 2: Transfer Use Case
Step 3: Domain Tests
Challenge Complete Checklist
- ☐ All account operations enforce business rules
- ☐ Transfers are atomic (both accounts updated or neither)
- ☐ Domain events trigger notifications
- ☐ Full unit test coverage of aggregate logic
- ☐ Published to GitHub with architecture diagram