Skip to content

Commit 2297af9

Browse files
author
Tapiwa
committed
feat(ui): upgrade to God-Tier Outfit font, premium dark mode, README SEO
Co-authored-by: tapiwamakandigona <tapiwa@user.github.com>
1 parent 6cc085a commit 2297af9

2 files changed

Lines changed: 50 additions & 166 deletions

File tree

README.md

Lines changed: 38 additions & 163 deletions
Original file line numberDiff line numberDiff line change
@@ -1,193 +1,68 @@
1-
# 💳 ZimPay - Modern Banking App
2-
3-
[![Demo](https://img.shields.io/badge/Demo-Live-brightgreen)](https://tapiwamakandigona.github.io/zimpay/) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](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&section=header&text=ZimPay%20Banking&fontSize=50&animation=fadeIn&fontAlignY=38&desc=Modern%2C%20Real-Time%20Fintech%20App&descAlignY=51&descAlign=62" />
3+
</div>
74

8-
[![Live Demo](https://img.shields.io/badge/🚀_Live_Demo-Try_It_Now-brightgreen?style=for-the-badge)](https://tapiwamakandigona.github.io/zimpay/)
9-
[![GitHub](https://img.shields.io/badge/GitHub-Source_Code-black?style=for-the-badge&logo=github)](https://github.com/tapiwamakandigona/zimpay)
5+
<h1 align="center">ZimPay - Real-Time Banking Platform</h1>
106

11-
![React](https://img.shields.io/badge/React-61DAFB?style=flat&logo=react&logoColor=black)
12-
![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=flat&logo=typescript&logoColor=white)
13-
![Supabase](https://img.shields.io/badge/Supabase-3FCF8E?style=flat&logo=supabase&logoColor=white)
14-
![Vite](https://img.shields.io/badge/Vite-646CFF?style=flat&logo=vite&logoColor=white)
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>
1516

1617
---
1718

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
4420

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.
4622

47-
**[Try ZimPay Now →](https://tapiwamakandigona.github.io/zimpay/)**
23+
## 💳 Core Features
4824

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 |
5032

5133
---
5234

53-
## 🛠️ Tech Stack
35+
## 🛠️ Technology Stack
5436

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+
```
6346

6447
---
6548

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
7350

7451
```bash
75-
# 1. Clone the repository
7652
git clone https://github.com/tapiwamakandigona/zimpay.git
7753
cd zimpay
78-
79-
# 2. Install dependencies
8054
npm install
8155

82-
# 3. Set up environment variables
83-
# Copy the example environment file
56+
# Setup your Supabase keys
8457
cp .env.example .env.local
8558

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
9459
npm run dev
95-
96-
# 6. Build for production
97-
npm run build
98-
99-
# 7. Deploy to GitHub Pages
100-
npm run deploy
10160
```
10261

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-
18562
---
18663

18764
<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>
19368
</div>

src/index.css

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1+
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&display=swap');
2+
13
:root {
2-
font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
4+
font-family: 'Outfit', system-ui, Avenir, Helvetica, Arial, sans-serif;
35
line-height: 1.5;
46
font-weight: 400;
57

68
color-scheme: light dark;
79
color: rgba(255, 255, 255, 0.87);
8-
background-color: #242424;
10+
background-color: #0b0c10;
11+
background-image: radial-gradient(circle at 15% 50%, rgba(99, 102, 241, 0.08), transparent 25%),
12+
radial-gradient(circle at 85% 30%, rgba(168, 85, 247, 0.08), transparent 25%);
913

1014
font-synthesis: none;
1115
text-rendering: optimizeLegibility;
@@ -18,6 +22,7 @@ a {
1822
color: #646cff;
1923
text-decoration: inherit;
2024
}
25+
2126
a:hover {
2227
color: #535bf2;
2328
}
@@ -46,9 +51,11 @@ button {
4651
cursor: pointer;
4752
transition: border-color 0.25s;
4853
}
54+
4955
button:hover {
5056
border-color: #646cff;
5157
}
58+
5259
button:focus,
5360
button:focus-visible {
5461
outline: 4px auto -webkit-focus-ring-color;
@@ -59,10 +66,12 @@ button:focus-visible {
5966
color: #213547;
6067
background-color: #ffffff;
6168
}
69+
6270
a:hover {
6371
color: #747bff;
6472
}
73+
6574
button {
6675
background-color: #f9f9f9;
6776
}
68-
}
77+
}

0 commit comments

Comments
 (0)