|
1 | | -# 💳 ZimPay - Modern Banking App |
2 | | - |
3 | | -[](https://tapiwamakandigona.github.io/zimpay/) [](LICENSE) |
4 | | - |
5 | | - |
6 | | -A sleek, modern banking simulation app built with React, TypeScript & Supabase. Experience real-time money transfers, beautiful UI themes, and secure authentication. |
| 1 | +<div align="center"> |
| 2 | + <img src="https://capsule-render.vercel.app/api?type=waving&color=gradient&height=200§ion=header&text=ZimPay%20Banking&fontSize=50&animation=fadeIn&fontAlignY=38&desc=Modern%2C%20Real-Time%20Fintech%20App&descAlignY=51&descAlign=62" /> |
| 3 | +</div> |
7 | 4 |
|
8 | | -[](https://tapiwamakandigona.github.io/zimpay/) |
9 | | -[](https://github.com/tapiwamakandigona/zimpay) |
| 5 | +<h1 align="center">ZimPay - Real-Time Banking Platform</h1> |
10 | 6 |
|
11 | | - |
12 | | - |
13 | | - |
14 | | - |
| 7 | +<div align="center"> |
| 8 | + <p><strong>A sleek, modern banking simulation built with React, TypeScript, and Supabase. Features real-time money transfers, row-level security, and a beautiful glassmorphic UI.</strong></p> |
| 9 | + |
| 10 | + <p> |
| 11 | + <a href="https://tapiwamakandigona.github.io/zimpay/"><img src="https://img.shields.io/badge/Live_Demo-0A66C2?style=for-the-badge&logo=googlechrome&logoColor=white" alt="Live Demo" /></a> |
| 12 | + <img src="https://img.shields.io/github/languages/top/tapiwamakandigona/zimpay?style=for-the-badge&color=blue" alt="Top Language" /> |
| 13 | + <img src="https://img.shields.io/github/last-commit/tapiwamakandigona/zimpay?style=for-the-badge&color=green" alt="Last Commit" /> |
| 14 | + </p> |
| 15 | +</div> |
15 | 16 |
|
16 | 17 | --- |
17 | 18 |
|
18 | | -## ✨ Features |
19 | | - |
20 | | -### 💸 Banking Features |
21 | | -- **Real-time Transactions** - Send money to other users instantly |
22 | | -- **Balance Management** - Track your account balance in real-time |
23 | | -- **Transaction History** - View all sent and received transactions |
24 | | -- **User Search** - Find recipients by username or phone number |
25 | | - |
26 | | -### 🔐 Security & Authentication |
27 | | -- **Email Verification** - Secure account creation with email confirmation |
28 | | -- **Password Reset** - Forgot password? Reset via email link |
29 | | -- **Secure Sessions** - "Keep me signed in" option for convenience |
30 | | -- **Row Level Security** - Database-level protection for all data |
31 | | - |
32 | | -### 🎨 Design & UX |
33 | | -- **Glassmorphism UI** - Modern, premium design aesthetic |
34 | | -- **Dark/Light Themes** - Beautiful color schemes for any preference |
35 | | -- **Mobile Responsive** - Seamless experience on all devices |
36 | | -- **Smooth Animations** - Delightful micro-interactions throughout |
37 | | - |
38 | | -### 👤 Profile Management |
39 | | -- **Edit Profile** - Update your name and phone number |
40 | | -- **View Balance** - Always know your current balance |
41 | | -- **Account Info** - See all your account details at a glance |
42 | | - |
43 | | ---- |
| 19 | +## ⚡ Architecture Overview |
44 | 20 |
|
45 | | -## 🚀 Live Demo |
| 21 | +ZimPay demonstrates how to build a highly interactive, secure FinTech application using modern web technologies. It leverages **Supabase** for backend-as-a-service, utilizing PostgreSQL's Row Level Security (RLS) to ensure that users can only ever access their own financial data. |
46 | 22 |
|
47 | | -**[Try ZimPay Now →](https://tapiwamakandigona.github.io/zimpay/)** |
| 23 | +## 💳 Core Features |
48 | 24 |
|
49 | | -Create an account and explore all the features! Test sending money between accounts. |
| 25 | +| Feature | Implementation Details | |
| 26 | +|---------|------------------------| |
| 27 | +| **Real-Time Transfers** | Supabase real-time subscriptions instantly update balances | |
| 28 | +| **Secure Auth** | Integrated email verification and JWT session management | |
| 29 | +| **Row Level Security** | Database-enforced privacy (users cannot read others' balances) | |
| 30 | +| **Glassmorphism UI** | Premium CSS styling with dynamic dark mode and fluid transitions | |
| 31 | +| **Responsive Design** | Mobile-first dashboard layout optimized for all screen sizes | |
50 | 32 |
|
51 | 33 | --- |
52 | 34 |
|
53 | | -## 🛠️ Tech Stack |
| 35 | +## 🛠️ Technology Stack |
54 | 36 |
|
55 | | -| Technology | Purpose | |
56 | | -|------------|---------| |
57 | | -| **React 18** | UI Components & State | |
58 | | -| **TypeScript** | Type-safe development | |
59 | | -| **Supabase** | Backend (Auth, Database, Realtime) | |
60 | | -| **React Router v6** | Client-side routing | |
61 | | -| **Vite** | Build tool & dev server | |
62 | | -| **CSS3** | Styling with CSS Variables | |
| 37 | +```mermaid |
| 38 | +graph TD; |
| 39 | + React[React Frontend] --> Supabase[Supabase Backend]; |
| 40 | + Supabase --> Auth[GoTrue Auth]; |
| 41 | + Supabase --> DB[(PostgreSQL UI)]; |
| 42 | + Supabase --> Realtime[WebSocket Stream]; |
| 43 | + React --> Vite[Vite Build System]; |
| 44 | + Vite --> GhPages[GitHub Pages Deploy]; |
| 45 | +``` |
63 | 46 |
|
64 | 47 | --- |
65 | 48 |
|
66 | | -## 📦 Installation |
67 | | - |
68 | | -### Prerequisites |
69 | | -- Node.js 16+ and npm |
70 | | -- A Supabase account ([supabase.com](https://supabase.com)) |
71 | | - |
72 | | -### Setup Instructions |
| 49 | +## 🚀 Quick Start |
73 | 50 |
|
74 | 51 | ```bash |
75 | | -# 1. Clone the repository |
76 | 52 | git clone https://github.com/tapiwamakandigona/zimpay.git |
77 | 53 | cd zimpay |
78 | | - |
79 | | -# 2. Install dependencies |
80 | 54 | npm install |
81 | 55 |
|
82 | | -# 3. Set up environment variables |
83 | | -# Copy the example environment file |
| 56 | +# Setup your Supabase keys |
84 | 57 | cp .env.example .env.local |
85 | 58 |
|
86 | | -# 4. Configure Supabase |
87 | | -# Option A: Use the demo credentials (already in .env.example) |
88 | | -# Option B: Create your own Supabase project: |
89 | | -# - Go to supabase.com and create a new project |
90 | | -# - Copy your project URL and anon key |
91 | | -# - Update .env.local with your credentials |
92 | | - |
93 | | -# 5. Start development server |
94 | 59 | npm run dev |
95 | | - |
96 | | -# 6. Build for production |
97 | | -npm run build |
98 | | - |
99 | | -# 7. Deploy to GitHub Pages |
100 | | -npm run deploy |
101 | 60 | ``` |
102 | 61 |
|
103 | | -### 🔐 Security Requirements |
104 | | - |
105 | | -> **IMPORTANT**: This project uses environment variables for sensitive credentials. |
106 | | -
|
107 | | -- **Never commit `.env.local`** to version control (already in `.gitignore`) |
108 | | -- **Database access requires authentication** - Row Level Security (RLS) is enabled |
109 | | -- **Users can only access their own data** - profiles and transactions |
110 | | -- See [`SECURITY_HOTFIX_INSTRUCTIONS.md`](SECURITY_HOTFIX_INSTRUCTIONS.md) for RLS policy details |
111 | | - |
112 | | -### Environment Variables |
113 | | - |
114 | | -Create a `.env.local` file in the project root: |
115 | | - |
116 | | -```env |
117 | | -VITE_SUPABASE_URL=your_supabase_project_url |
118 | | -VITE_SUPABASE_ANON_KEY=your_supabase_anon_key |
119 | | -``` |
120 | | - |
121 | | -> **Note**: The `VITE_` prefix is required for Vite to expose these variables to your app. |
122 | | -
|
123 | | ---- |
124 | | - |
125 | | -## 📁 Project Structure |
126 | | - |
127 | | -``` |
128 | | -src/ |
129 | | -├── components/ # Reusable UI components |
130 | | -│ └── SendMoney.tsx # Money transfer flow |
131 | | -├── context/ # React Context providers |
132 | | -│ ├── AuthContext # Authentication state |
133 | | -│ └── ThemeContext # Theme management |
134 | | -├── lib/ # Utilities & config |
135 | | -│ └── supabase.ts # Supabase client |
136 | | -├── pages/ # Page components |
137 | | -│ ├── Landing.tsx # Welcome page |
138 | | -│ ├── Login.tsx # Authentication |
139 | | -│ ├── SignUp.tsx # Registration |
140 | | -│ └── Dashboard.tsx # Main app interface |
141 | | -├── App.tsx # Root component |
142 | | -└── main.tsx # Entry point |
143 | | -``` |
144 | | - |
145 | | ---- |
146 | | - |
147 | | -## 🔐 Database Schema |
148 | | - |
149 | | -### Profiles Table |
150 | | -| Column | Type | Description | |
151 | | -|--------|------|-------------| |
152 | | -| id | uuid | User ID (from auth) | |
153 | | -| email | text | User's email | |
154 | | -| full_name | text | Display name | |
155 | | -| username | text | Unique username | |
156 | | -| phone_number | text | Phone number | |
157 | | -| balance | numeric | Account balance | |
158 | | - |
159 | | -### Transactions Table |
160 | | -| Column | Type | Description | |
161 | | -|--------|------|-------------| |
162 | | -| id | uuid | Transaction ID | |
163 | | -| sender_id | uuid | Sender's user ID | |
164 | | -| receiver_id | uuid | Recipient's user ID | |
165 | | -| amount | numeric | Transfer amount | |
166 | | -| description | text | Transaction note | |
167 | | -| created_at | timestamp | When it occurred | |
168 | | - |
169 | | ---- |
170 | | - |
171 | | -## 👨💻 Author |
172 | | - |
173 | | -**Tapiwa Makandigona** |
174 | | - |
175 | | -- 🌐 Portfolio: [tapiwamakandigona.github.io/portfolio](https://tapiwamakandigona.github.io/portfolio) |
176 | | -- 💻 GitHub: [@tapiwamakandigona](https://github.com/tapiwamakandigona) |
177 | | -- 📧 Email: silentics.org@gmail.com |
178 | | - |
179 | | ---- |
180 | | - |
181 | | -## 📄 License |
182 | | - |
183 | | -This project is open source and available under the [MIT License](LICENSE). |
184 | | - |
185 | 62 | --- |
186 | 63 |
|
187 | 64 | <div align="center"> |
188 | | - |
189 | | -**[🚀 Try Demo](https://tapiwamakandigona.github.io/zimpay/) • [⭐ Star on GitHub](https://github.com/tapiwamakandigona/zimpay)** |
190 | | - |
191 | | -*Designed & Built with ❤️ by Tapiwa Makandigona* |
192 | | - |
| 65 | + <b>Built by <a href="https://github.com/tapiwamakandigona">Tapiwa Makandigona</a></b> |
| 66 | + <br/> |
| 67 | + <i>⭐ Star this repo if you find the real-time Supabase architecture helpful!</i> |
193 | 68 | </div> |
0 commit comments