banking-app/
├── app/
│   ├── Controllers/
│   │   ├── AuthController.php
│   │   ├── DashboardController.php
│   │   ├── TransferController.php
│   │   ├── DomesticTransferController.php
│   │   ├── DepositController.php
│   │   ├── WithdrawalController.php
│   │   ├── BeneficiaryController.php
│   │   ├── KycController.php
│   │   ├── ExchangeController.php
│   │   ├── BillPaymentController.php
│   │   ├── AirtimeController.php
│   │   ├── CardController.php
│   │   ├── LoanController.php
│   │   ├── StatementController.php
│   │   ├── StreamController.php
│   │   ├── Admin/  (AdminController, CustomerController, TransactionController,
│   │   │           KycReviewController, ApprovalController, RateController,
│   │   │           ComplianceController, LoanAdminController, BackupController)
│   │   └── Api/    (Auth, Account, Transaction, Transfer, Beneficiary,
│   │               Deposit, Withdrawal, Notification, Kyc, Bill, Airtime,
│   │               Exchange, Analytics, Webhook, ApiDocs)
│   ├── Services/   (Ledger, Transaction, Transfer, DomesticTransfer, Fee, Limit,
│   │               Otp, Audit, AccountNumber, Auth, Notification, Event,
│   │               Kyc, DocumentStorage, Approval, Adjustment, Report,
│   │               ExchangeRate, Exchange, BillPayment, Airtime,
│   │               Card, Loan, Statement, RiskEngine, WebhookDispatcher,
│   │               ApiToken, RateSync, Backup)
│   ├── Integrations/
│   │   ├── Contracts/  (PaymentProviderInterface, DomesticTransferProviderInterface,
│   │   │                BillPaymentProviderInterface, AirtimeProviderInterface,
│   │   │                CardProviderInterface, SmsProviderInterface, KycProviderInterface,
│   │   │                PaymentProviderFactory)
│   │   └── Sandbox/    (SandboxDomesticProvider, SandboxBillProvider,
│   │                    SandboxAirtimeProvider, SandboxCardProvider, SandboxSmsProvider)
│   ├── Core/       (App, Router, Request, Response, Database, Container, View, Session,
│   │               Api/{ApiResponse, ApiException, ApiExceptionHandler, RateLimiter})
│   └── Middleware/ (Auth, Admin, Csrf, RateLimit, ApiAuth, ApiRateLimit, ApiLogging)
├── config/
├── database/migrations/  (001..015)
├── database/seeders/     (001_core)
├── docker/  (Dockerfile, apache-vhost.conf, php.ini, run-crons.sh, bootstrap.sh, mysql/init.sql)
├── docs/    (RESTORE.md, INSTALL.md, API.md)
├── public/
│   ├── index.php
│   ├── .htaccess
│   ├── manifest.webmanifest
│   ├── service-worker.js
│   └── assets/
│       ├── css/app.css
│       ├── icons/*.png
│       └── js/app.js, stream.js
├── resources/views/
│   ├── layouts/ (app, guest, landing, admin)
│   ├── landing/index.php
│   ├── auth/, dashboard/, accounts/, transfers/, deposits/, withdrawals/,
│   │   beneficiaries/, kyc/, exchange/, bills/, airtime/, cards/, loans/,
│   │   statements/, admin/, api/, errors/
├── routes/ (web.php, api.php)
├── storage/ (logs, cache, documents, backups)
├── tests/ (LedgerIntegrityTest, ApiAuthTest, IdempotencyTest, smoke.sh)
├── cron/  (process_pending, process_approvals, sync_rates, process_loans,
│           dispatch_webhooks, reconcile, backup)
├── tools/generate_icons.php
├── docker-compose.yml
├── Makefile
├── composer.json
├── .env.example
├── install.php
└── README.md