South Africa data bundle comparison app
# BundleIQ — South Africa Data Bundle Comparison App
A full-stack web application that compares prepaid data bundle prices across all 4 major South African mobile networks in real time. Built to help South Africans stop overpaying for mobile data.
## Live Demo
- **App:**
bundleiq-xk7b.onrender.com
- **API:**
bundleiq-api.onrender.com
- **Admin:**
bundleiq-xk7b.onrender.com
## Networks Covered
| Network | Known For |
|---------|-----------|
| Vodacom | SA's largest network, NXT LVL specials |
| MTN | Strong promos, TikTok and night bundles |
| Cell C | Budget friendly monthly bundles |
| Telkom | Cheapest cost per GB in SA |
## Current Features
- Compare data bundles across all 4 networks
- Filter by bundle type — Monthly, Daily, Weekly, Night, Social, NXT LVL, Hourly
- Search by data size, network or bundle name
- Ranked results sorted by best value (cost per MB)
- Summary cards showing best deal, most data, best validity and savings percentage
- Dark mode toggle with saved preference
- Admin panel — password protected via backend authentication
- Auto scraper that runs every day at 7AM to keep prices updated
- Fully responsive — works on mobile and desktop
- Font Awesome icons throughout — no emojis in code
## Tech Stack
**Backend**
- Python 3
- Flask
- Flask-SQLAlchemy
- Flask-CORS
- PostgreSQL (Supabase)
- psycopg2-binary
- python-dotenv
- BeautifulSoup4
- Requests
- Gunicorn
**Frontend**
- HTML5
- CSS3
- Vanilla JavaScript
- Font Awesome 6 icons
**Infrastructure**
- Supabase — cloud PostgreSQL database (Frankfurt)
- Render — backend and frontend hosting
- GitHub — version control
## Project Structure
```
bundleiq/
backend/
run.py Flask app and all API routes
scraper.py Auto scraper — runs daily at 7AM
updater.py Manual price updater
seed_real.py Seeds database with real SA bundle prices
requirements.txt Python dependencies
.env Environment variables (n …