Skip to content

Latest commit

Β 

History

History
75 lines (55 loc) Β· 2.32 KB

File metadata and controls

75 lines (55 loc) Β· 2.32 KB

Madabank iOS

The iOS client for Madabank, a modern banking application built with Swift and modular architecture.

πŸ— Architecture

This project follows a modular architecture using Tuist for project generation.

Module Structure

  • App: Main application target
  • Features: Standalone feature modules (Auth, Home, Accounts, etc.)
  • Shared: Core components used across features (Core, Networking, Domain, Data, CommonUI)

πŸš€ Getting Started

Prerequisites

  • Xcode 15+
  • Ruby 3.x (managed via Bundler)
  • Tuist (installed automatically by setup script)

Setup & Run

To ensure a consistent environment, always use the setup script. This handles submodules, Ruby gems (Fastlane), and Tuist generation.

./setup.sh

After the script completes, open the workspace: Madabank/Madabank.xcworkspace

Note: If you switch branches or pull changes, run ./setup.sh again to sync submodules and regenerate the project.

πŸ›  Development

Dependency Management

  • Tuist: Manages Xcode project generation and Swift Package Manager dependencies.
  • Bundler: Manages Ruby dependencies (Fastlane, CocoaPods).

To add a new dependency:

  1. Update Tuist/Package.swift
  2. Run ./setup.sh

Code Signing

We use Fastlane Match for code signing. To sync certificates (read-only):

bundle exec fastlane sync_certs

πŸ”„ CI/CD

Continuous Integration is handled via GitHub Actions and Fastlane. The pipeline is configured for manual triggering.

Triggering a Build

  1. Go to the Actions tab on GitHub.
  2. Select iOS CI.
  3. Click Run workflow.

Fastlane Lanes

  • fastlane ci: Runs linting, unit tests, and builds the app (used by GitHub Actions).
  • fastlane beta: Deploys to TestFlight (increments build number, builds, uploads).
  • fastlane sync_certs: Fetches distribution certificates and profiles.

πŸ“‚ Project Structure

Madabank/
β”œβ”€β”€ Madabank/          # App source code
β”œβ”€β”€ Modules/           # Modular components
β”‚   β”œβ”€β”€ Features/      # Feature modules (UI flows)
β”‚   └── Shared/        # Shared logic & core infrastructure
β”œβ”€β”€ Tuist/             # Project generation configuration
β”œβ”€β”€ fastlane/          # Fastlane configuration
└── Gemfile            # Ruby dependencies