Skip to content

Repository files navigation

NBE ( National Bank Of Egypt )

This project is a full-featured mobile banking UI that replicates the look and feel of the National Bank of Egypt app. It demonstrates modern React Native development practices including atomic design, drawer & tab navigation, dark/light theming, OTP verification, biometric authentication UI, and map integration.


Features

Authentication

  • Login with username & password
  • Fingerprint / biometric authentication UI
  • New user signup with Egyptian phone number validation
  • OTP phone verification
  • Set password with validation conditions
  • Success confirmation screen

Home Dashboard

  • Animated balance card
  • Credit cards carousel with card details (holder, number, expiry, CVV)
  • Quick-access services grid
  • Send money to recent contacts
  • Transaction history

Transfers

  • Transfer to another account
  • Account picker dropdowns
  • Amount & reason inputs
  • OTP confirmation for transfers
  • Transfer success modal

Beneficiaries

  • Horizontal and Vertical quick-access list
  • Add new beneficiary (name, phone, image)

ATM Locator

  • Interactive MapView centered on Cairo
  • ATM location markers with details

Settings (Drawer)

  • Dark / Light theme toggle (persisted via Context)
  • Account summary
  • Logout

Tech Stack

Category Technology
Framework React Native 0.74.1
Language TypeScript 5.0
Navigation React Navigation β€” Stack, Bottom Tabs, Drawer
Maps react-native-maps
Animations React Native Reanimated 3.11
Icons FontAwesome (Solid & Regular) via react-native-fontawesome
OTP Input react-native-otp-textinput
Image Picker react-native-image-picker
SVG react-native-svg
Linting ESLint + Prettier

Project Structure

The component architecture follows the Atomic Design pattern:

NBE/
β”œβ”€β”€ App.tsx                        # Root β€” stack navigator, theme context, status bar
β”œβ”€β”€ index.js                       # Entry point
β”œβ”€β”€ assets/
β”‚   β”œβ”€β”€ fonts/                     # Gemunu Libre (Bold, Regular)
β”‚   └── images/                    # Logos, backgrounds, card assets, profile images
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ atoms/                     # Smallest UI elements
β”‚   β”‚   β”œβ”€β”€ CustomButton.tsx       #   Reusable button
β”‚   β”‚   β”œβ”€β”€ CustomInput.tsx        #   Styled text input
β”‚   β”‚   β”œβ”€β”€ CustomIcon.tsx         #   FontAwesome icon wrapper
β”‚   β”‚   β”œβ”€β”€ LoginInput.tsx         #   Auth-specific input
β”‚   β”‚   β”œβ”€β”€ MobileInput.tsx        #   Phone number input
β”‚   β”‚   β”œβ”€β”€ FingerPrint.tsx        #   Biometric auth UI
β”‚   β”‚   β”œβ”€β”€ Person.tsx             #   Beneficiary avatar item
β”‚   β”‚   β”œβ”€β”€ Service.tsx            #   Service grid item
β”‚   β”‚   β”œβ”€β”€ Picker.tsx             #   Dropdown picker
β”‚   β”‚   β”œβ”€β”€ SettingsItem.tsx       #   Settings row item
β”‚   β”‚   β”œβ”€β”€ TabBarIcon.tsx         #   Bottom tab icon
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ molecules/                 # Composed atom groups
β”‚   β”‚   β”œβ”€β”€ BalanceCard.tsx        #   Balance display card
β”‚   β”‚   β”œβ”€β”€ CreditCard.tsx         #   Credit card component
β”‚   β”‚   β”œβ”€β”€ LoginHeader.tsx        #   Auth header
β”‚   β”‚   β”œβ”€β”€ LoginFooter.tsx        #   Auth footer
β”‚   β”‚   β”œβ”€β”€ ServicesContainer.tsx  #   Services grid
β”‚   β”‚   β”œβ”€β”€ PersonContainer.tsx    #   Send money contacts
β”‚   β”‚   β”œβ”€β”€ HistoryContainer.tsx   #   Transaction history
β”‚   β”‚   β”œβ”€β”€ SettingsContent.tsx    #   Settings menu items
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ organisms/                 # Complex UI sections
β”‚   β”‚   β”œβ”€β”€ LoginForm.tsx          #   Complete login form
β”‚   β”‚   β”œβ”€β”€ TransferModal.tsx      #   Transfer confirmation modal
β”‚   β”‚   β”œβ”€β”€ CreditCardsContainer.tsx
β”‚   β”‚   β”œβ”€β”€ BeneficiariesHorizontalList.tsx
β”‚   β”‚   β”œβ”€β”€ BeneficiariesVerticalList.tsx
β”‚   β”‚   └── SettingsContainer.tsx
β”‚   β”œβ”€β”€ pages/                     # Full screens
β”‚   β”‚   β”œβ”€β”€ Main.tsx               #   Bottom tab navigator
β”‚   β”‚   β”œβ”€β”€ DrawerMain.tsx         #   Drawer layout
β”‚   β”‚   β”œβ”€β”€ Auth/                  #   Login, Signup, Verification, SetPassword, Success
β”‚   β”‚   β”œβ”€β”€ Home/                  #   Balance, CreditCards
β”‚   β”‚   β”œβ”€β”€ Transfer/              #   TransferForm, OtpTransfer
β”‚   β”‚   β”œβ”€β”€ Beneficiaries/         #   Main, History, Add
β”‚   β”‚   β”œβ”€β”€ ATMs/                  #   ATM map screen
β”‚   β”‚   └── Splasher/              #   Splash screen
β”‚   └── templates/
β”‚       └── OTPTemplate.tsx        #   Reusable OTP verification layout
β”œβ”€β”€ android/                       # Android native project
β”œβ”€β”€ ios/                           # iOS native project (CocoaPods)
└── __tests__/                     # Jest test files

Getting Started

# 1. Clone the repository
git clone https://github.com/<your-username>/NBE.git
cd NBE

# 2. Install dependencies
npm install

# 3. Install iOS pods (macOS only)
cd ios && pod install && cd ..

# 4. Start Metro bundler
npm start

# 5. Run on a platform
npm run ios        # iOS
npm run android    # Android

About

A mobile banking UI clone inspired by the National Bank of Egypt, built with React Native & TypeScript. Features authentication, balance dashboard, credit cards, money transfers, beneficiary management, ATM locator, and dark/light theme support.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages