/BankingKataCSharp

Banking kata in C# .NET Core

Primary LanguageC#

Banking Kata

Congratulations! You've just been hired by an exciting new FinTech startup that is bringing some fresh ideas to the stodgy old banking industry. The company is still in the early phases of building out its technology platform, so there's plenty of work left to be done.

On your first day, the founders gave you a huge list of features they'd love to add to the system and not much more direction than that. They're trying out a management style where engineers can self-organize and pick up whatever tasks they feel are the most valuable to the company.

The good news is that most of the codebase is pretty readable and well-tested. There are a couple areas, though, where you can tell they cut corners to get a feature out the door.

Running the API

dotnet run

API Endpoints

/account/{accountID}/balance: Get the current balance of the account with ID {accountID}. For example, http://localhost:8080/account/a36aca2e-417f-45ed-83f8-55d7ecc69e5e/balance.

Feature Ideas

Lots of them!

Ideas! Ideas! Ideas!
Fraud alerts by email Certificates of deposit Check OCR deposit
Transaction history External linked account Available balance
Account statement Activate debit card Posted balance
Inter-account transfers Freeze account Overdraft fees
Interest accrual Tax reporting (1099-INT) forms Minimum balance requirements
Transaction log Scheduled transactions Direct deposit requirements
Customer information Automatic overdraft protection Loan qualification
Check deposit Low balance notifications Credit score reporting
ACH clearing Transaction notifications Bitcoin/Ether conversion
Bill pay Beneficiaries Foreign transaction fees
Text notifications Transaction notes Out-of-network ATM fees
Travel notice Transaction categories ATM fee reimbursement
Fraud detection Budget tracking Account audit log
Transaction location/mapping Rewards points Customer relationship tracking (calls, support, etc.)
Joint accounts Close account Virtual account numbers
Authentication, security questions, etc. open account Customer service automated phone line (balance inquiry, etc.)
Savings and checking account types Identity verification Transaction GPS location
Download data to Quicken/Money/Excel/JSON Physical address verification Authorize debit transaction
Customer referral bonus Returned deposit charge (bounced check) Put funds on hold
Account maintenance fees Inactivity fee Sort transactions by date, amount, etc.
Hard-copy statement fee Business accounts Database-based storage
PDF statements Change debit card PIN Robust error handling
Replacement debit card fee Link additional debit card Blockchain smart contracts