Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Pheak Pheasa
Pheak Pheasa

Posted on • Edited on

MVVM Directory Structure for a Large Banking Mobile App Project

For a large bank mobile app using MVVM with Storyboards, here's a well-organized directory structure:

BankApp/├── Application/│   ├── AppDelegate.swift│   ├── SceneDelegate.swift│   ├── Info.plist│   └── Assets.xcassets/├── Resources/│   ├── Fonts/│   ├── Localization/│   │   ├── en.lproj/│   │   │   └── Localizable.strings│   │   └── es.lproj/│   │       └── Localizable.strings│   └── Constants.swift├── Core/│   ├── Network/│   │   ├── NetworkManager.swift│   │   ├── APIEndpoints.swift│   │   ├── RequestBuilder.swift│   │   └── NetworkError.swift│   ├── Storage/│   │   ├── KeychainManager.swift│   │   ├── CoreDataManager.swift│   │   └── UserDefaultsManager.swift│   ├── Authentication/│   │   ├── AuthenticationManager.swift│   │   └── BiometricAuthManager.swift│   └── Analytics/│       └── AnalyticsManager.swift├── Extensions/│   ├── UIKit+Extensions.swift│   ├── Foundation+Extensions.swift│   └── Date+Extensions.swift├── Utilities/│   ├── ThemeManager.swift│   ├── Logger.swift│   └── CurrencyFormatter.swift├── Models/│   ├── Account.swift│   ├── Transaction.swift│   ├── Card.swift│   ├── User.swift│   └── InvestmentPortfolio.swift├── Services/│   ├── AccountService.swift│   ├── TransactionService.swift│   ├── CardService.swift│   ├── NotificationService.swift│   └── InvestmentService.swift├── Modules/│   ├── Login/│   │   ├── View/│   │   │   ├── LoginViewController.swift│   │   │   └── Login.storyboard│   │   ├── ViewModel/│   │   │   └── LoginViewModel.swift│   │   └── Model/│   │       └── LoginResponse.swift│   ├── Dashboard/│   │   ├── View/│   │   │   ├── DashboardViewController.swift│   │   │   ├── Dashboard.storyboard│   │   │   ├── Cells/│   │   │   │   ├── AccountSummaryCell.swift│   │   │   │   └── QuickActionCell.swift│   │   │   └── Components/│   │   │       └── BalanceSummaryView.swift│   │   ├── ViewModel/│   │   │   └── DashboardViewModel.swift│   │   └── Model/│   │       └── DashboardData.swift│   ├── Accounts/│   │   ├── View/│   │   │   ├── AccountsViewController.swift│   │   │   ├── AccountDetailViewController.swift│   │   │   ├── Accounts.storyboard│   │   │   └── Cells/│   │   │       ├── AccountCell.swift│   │   │       └── TransactionCell.swift│   │   ├── ViewModel/│   │   │   ├── AccountsListViewModel.swift│   │   │   └── AccountDetailViewModel.swift│   │   └── Model/│   │       └── AccountDetails.swift│   ├── Transfer/│   │   ├── View/│   │   │   ├── TransferViewController.swift│   │   │   ├── TransferConfirmationViewController.swift│   │   │   ├── Transfer.storyboard│   │   │   └── Components/│   │   │       └── RecipientSelectionView.swift│   │   ├── ViewModel/│   │   │   ├── TransferViewModel.swift│   │   │   └── TransferConfirmationViewModel.swift│   │   └── Model/│   │       └── TransferRequest.swift│   ├── Cards/│   │   ├── View/│   │   │   ├── CardsViewController.swift│   │   │   ├── CardDetailViewController.swift│   │   │   ├── Cards.storyboard│   │   │   └── Components/│   │   │       └── CardView.swift│   │   ├── ViewModel/│   │   │   ├── CardsListViewModel.swift│   │   │   └── CardDetailViewModel.swift│   │   └── Model/│   │       └── CardDetails.swift│   ├── Payments/│   │   ├── View/│   │   │   ├── PaymentsViewController.swift│   │   │   ├── BillPaymentViewController.swift│   │   │   ├── Payments.storyboard│   │   │   └── Cells/│   │   │       └── PayeeCell.swift│   │   ├── ViewModel/│   │   │   ├── PaymentsViewModel.swift│   │   │   └── BillPaymentViewModel.swift│   │   └── Model/│   │       └── PaymentRequest.swift│   ├── Investments/│   │   ├── View/│   │   │   ├── InvestmentsViewController.swift│   │   │   ├── InvestmentDetailViewController.swift│   │   │   ├── Investments.storyboard│   │   │   └── Components/│   │   │       └── PortfolioChartView.swift│   │   ├── ViewModel/│   │   │   ├── InvestmentsViewModel.swift│   │   │   └── InvestmentDetailViewModel.swift│   │   └── Model/│   │       └── InvestmentData.swift│   ├── Profile/│   │   ├── View/│   │   │   ├── ProfileViewController.swift│   │   │   ├── SecuritySettingsViewController.swift│   │   │   └── Profile.storyboard│   │   ├── ViewModel/│   │   │   ├── ProfileViewModel.swift│   │   │   └── SecuritySettingsViewModel.swift│   │   └── Model/│   │       └── UserProfile.swift│   └── Support/│       ├── View/│       │   ├── SupportViewController.swift│       │   ├── ChatSupportViewController.swift│       │   └── Support.storyboard│       ├── ViewModel/│       │   ├── SupportViewModel.swift│       │   └── ChatSupportViewModel.swift│       └── Model/│           └── SupportTicket.swift├── Common/│   ├── Views/│   │   ├── CustomButton.swift│   │   ├── CustomTextField.swift│   │   ├── AlertView.swift│   │   └── LoadingView.swift│   ├── Protocols/│   │   ├── Reusable.swift│   │   └── Coordinator.swift│   └── Coordinators/│       ├── AppCoordinator.swift│       ├── LoginCoordinator.swift│       └── MainCoordinator.swift└── Configurations/    ├── Debug.xcconfig    ├── Release.xcconfig    └── Staging.xcconfig
Enter fullscreen modeExit fullscreen mode

Key Aspects of This Structure:

  1. MVVM Organization:

    • Each module has View, ViewModel, and Model folders
    • Clear separation of concerns with Storyboards in View folders
  2. Module-based Structure:

    • Banking features separated into distinct modules (Login, Dashboard, Accounts, etc.)
    • Each module is self-contained with its own Storyboard and components
  3. Core Services:

    • Network, Storage, Authentication layers separated from UI
    • Reusable services for banking operations
  4. Common Components:

    • Shared UI elements and protocols in Common directory
    • Coordinator pattern for navigation between modules
  5. Resources & Configuration:

    • Properly organized resources for localization, fonts, etc.
    • Different configuration files for various build environments

This structure supports scalability and maintainability while following MVVM principles and leveraging Storyboards for UI design in a large banking application.

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Don't talk, just do it.
  • Joined

More fromPheak Pheasa

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp