In this project, you will build the core backend logic for a professional CLI Cash Flow Manager. You will create a system that manages income and expenses, handles persistent storage using asynchronous JSON serialization, and calculates financial analytics dynamically using LINQ.
This is not just a coding exercise; it is a simulation of a real-world financial utility and backend architecture. You will model financial transactions using C# records to guarantee immutability. You will also use the Repository Pattern via Interfaces to separate your data-saving logic from your application menu, a standard practice in enterprise software development.
Key concepts you will apply:
Records and enums: Modeling immutable transaction data and account types.
Interfaces: Decoupling business logic from data storage to create a highly testable architecture.
Events and delegates: Building a decoupled background logging system that reacts to data changes.
Asynchronous programming: Reading and writing JSON files asynchronously to ensure the application remains responsive.
LINQ: Querying, filtering, and aggregating financial data to generate comprehensive analytics reports.
Advanced validation: Using Regular Expressions and DateOnly parsing to gracefully handle unpredictable user input.
By the end of this project, you will have a working, portfolio-ready simulation that can track cash flow across multiple accounts, validate user input strictly, save and restore state automatically, and generate detailed financial reports.