this is a QR-based mobile money application for Uganda that allows money transfers using QR scan codes
# AfroWallet Uganda
A full-stack QR-based mobile money transfer application for Uganda, built with **Node.js + Express + MongoDB** (backend web app) and **React Native + Expo** (mobile app).
---
## Project Structure
```
afrowallet/
├── backend/ ← Express web app (runs in browser)
│ ├── server.js ← Entry point
│ ├── models/ ← MongoDB schemas
│ │ ├── User.js
│ │ ├── Transaction.js
│ │ ├── OTP.js
│ │ └── QRToken.js
│ ├── routes/ ← All HTTP routes
│ │ ├── authRoutes.js (register, login, OTP, forgot)
│ │ ├── dashboardRoutes.js (home, QR, scan, settings)
│ │ ├── paymentRoutes.js (transfer, topup, withdraw)
│ │ ├── transactionRoutes.js (history + filters)
│ │ └── walletRoutes.js (wallet, link accounts)
│ ├── middleware/
│ │ └── auth.js ← requireAuth, redirectIfAuth
│ ├── views/ ← EJS templates
│ │ ├── index.ejs (landing page)
│ │ ├── login.ejs
│ │ ├── register.ejs
│ │ ├── otp.ejs
│ │ ├── dashboard.ejs
│ │ ├── send.ejs
│ │ ├── myqr.ejs
│ │ ├── scan.ejs
│ │ ├── topup.ejs
│ │ ├── withdraw.ejs
│ │ ├── transactions.ejs
│ │ ├── wallet.ejs
│ │ ├── settings.ejs
│ │ └── forgot.ejs
│ └── public/
│ ├── css/style.css ← Full UI stylesheet
│ └── js/app.js ← Client-side JS
│
└── mobile-app/ ← React Native + Expo app
├── App.js
└── src/
├── screens/
│ ├── auth/ (Splash, Login, Register, OTP, Forgot)
│ └── main/ (Home, Send, Scan, MyQR, History, Wallet,
│ TopUp, Withdraw, Settings, ConfirmSend, Success)
├── navigation/ (Root, Auth, Main navigators)
├── context/ (AuthContext)
├── services/ (API layer)
├── components/ (UI components)
└── utils/ (theme, helpers)
```
---
## Quick Start
### Prerequisites
- Node.js v18+
- MongoDB (local or Atlas)
- Expo CLI (`npm install -g expo-cli`)
- Android/iOS emulator or Ex …