Skip to content

A Money Transfer iOS Project based on UIKit provided by Banque Misr Internship

Notifications You must be signed in to change notification settings

mernaislam/Speedo-Transfer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

Speedo Transfer App

This project represents our Final Bank Misr Internship project. It is an iOS project built using Swift and UIKit.

Overview

This project proposes a mobile application for secure and convenient money‬ transfers, incorporating features similar to online banking and mobile money apps.‬

The app's features align with predefined user stories and integrate seamlessly with the backend. The complete list of user stories can be found in the PDF located in the develop branch named BM 2024 Project - Money Transfer Application.pdf.

Our final work is included in the develop branch

Features

This App consists of multiple features including:-

  • Onboarding: Introduces the app's main features to new users.
  • User Authentication: Login, register, and logout functionality.
  • Session Timeout: Redirects users to the login screen after 2 minutes inactivity or session expiration.
  • Home Screen: Displays the user's balance and recent transactions.
  • Local Notifications: Sent after a successful transaction, with an option to view all notifications.
  • Favorites Management: Add, delete, and select favorite contacts for faster transfers.
  • Money Transfer: Allows secure transfers with proper validation.
  • Transaction History: View details of all sent and received transactions.
  • Profile Information: View and edit user details.
  • Animations: Smooth tab bar switching and transfer steps.

Prerequisites

Before getting started, ensure you have the following installed on your machine:

  • macOS 10.15 or later
  • Xcode 13.3 or later
  • CocoaPods (Install instructions here)

Steps to Install

  • Clone the repository: Open your terminal and run the following command to clone the repository:

      git clone https://github.com/BM-Internship-Project/iOS-Team.git
    
  • Checkout the develop branch: Ensure you're working in the develop branch where the latest code resides:

      git checkout develop
    
  • Install CocoaPods dependencies: Run the following command to install the required pods for the project:

      pod install
    
  • Open the project in Xcode: After the dependencies are installed, open the project using the .xcworkspace file:

      open SpeedoTransfer.xcworkspace
    

Usage

‭In order to use the app functionalities you must register with new account or log in with existing account, you can use this test account:-

Architecture

Speedo Transfer project is implemented using the Model-View-Controller (MVC) architecture pattern.

  • Model: Contains the data and any business logic required to handle that data.
  • View: is responsible for displaying the UI design to the user.
  • Controller: handles any user input or interactions and update the Model and View as needed.

Structure

Registration/
├── Shared          # Files that are shared across multiple parts of the project.
├── Manager         # Files manages API, tokens and userDefaults implying Singleton Pattern.
├── Utils           # Constant file and common helper functions to reuse.
├── Extension       # Common functions added as an extension for existing UI Components.
└── Resources       # Non-code files such as images, colors, fonts and other types of assets. 
  • Manager:
    • API manager
      • Handles APIs in multiple ways using native URL sessions and external Alamofire pod
    • UserDefaults manager
      • Checks if user visits the app for the first time to show onboarding screens
      • Checks if user is logged in or out
    • Keychain manager
      • Securely save and retrieve the token used in the APIs
    • Token manager
      • Calls the keychain functions to get and set the token
  • Extensions: Common functionality added to UIViewController and UIView through extensions.

Dependencies

CocoaPods is used as a dependency manager. List of dependencies used:

Screenshots

Authentication

Session TimeOut

Home Screen

Transactions

Transfer

More

Profile

Resources

  • Check our Figma Design for the app in here
  • Check our list of API calls here

Contributors

About

A Money Transfer iOS Project based on UIKit provided by Banque Misr Internship

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published