A gamified bill payment system that rewards users with credits for paying bills on time. Redeem credits for gift cards and exclusive perks.
- 🔐 Secure Authentication - Supabase Auth integration
- 💳 Bill Management - Track and pay bills
- 🎁 Rewards System - Earn credits on every payment
- 🔥 Streak Bonuses - Higher rates for consistent payments
- 🏆 Leaderboard - Compete with other users
- 🛍️ Redemption Catalog - Gift cards, discounts, and perks
Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS, shadcn/ui
Backend: FastAPI (Python), Uvicorn
Database: Supabase (PostgreSQL)
Auth: Supabase Auth
# Clone repository
git clone <your-repo-url>
cd guhack2025
# Backend
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Frontend
cd ../frontend
npm installSee SETUP.md for detailed setup instructions.
Quick setup:
- Create
backend/.envwith Supabase credentials - Create
frontend/.env.localwith Supabase credentials - Get credentials from: https://app.supabase.com/project/_/settings/api
Terminal 1 - Backend:
cd backend
source venv/bin/activate
python main.pyTerminal 2 - Frontend:
cd frontend
npm run devOpen: http://localhost:3000
guhack2025/
├── backend/ # FastAPI backend
│ ├── main.py # Application entry
│ ├── reward.py # API routes
│ ├── db.py # Database operations
│ └── .env # Environment config (create this)
│
├── frontend/ # Next.js frontend
│ ├── app/ # Pages
│ │ ├── page.tsx # Login
│ │ ├── signup/ # Sign up
│ │ ├── dashboard/ # User dashboard
│ │ ├── bills/ # Bill management
│ │ └── rewards/ # Rewards catalog
│ ├── components/ # React components
│ ├── lib/ # Utilities & API client
│ └── .env.local # Environment config (create this)
│
├── README.md # This file
└── SETUP.md # Detailed setup guide
- Sign Up → Create account
- Add Bills → Track bills with due dates
- Pay Bills → Make payments through the app
- Earn Credits → Get 1-5% back based on category
- Build Streaks → Increase reward rate with consistent payments
- Redeem Rewards → Spend credits on gift cards and perks
| Bill Category | Reward Rate |
|---|---|
| Rent | 5% |
| Utilities | 3% |
| Subscriptions | 2% |
Streak Bonuses: Pay on time consistently to unlock higher rates!
# Check backend health
curl http://localhost:8001/api/health
# Verify environment setup
cd backend && python check_env.py
# Full system diagnostic
./diagnose.sh
# View API documentation
open http://localhost:8001/docs- Check
backend/.envexists with valid Supabase credentials - Run:
cd backend && python check_env.py
- Ensure backend is running on port 8001
- Check
frontend/.env.localhasNEXT_PUBLIC_API_URL=http://localhost:8001
- Restart backend: Stop (Ctrl+C) and run
python main.pyagain - Hard reload browser: Ctrl+Shift+R
More help: See SETUP.md or run ./diagnose.sh
Once backend is running, visit http://localhost:8001/docs for interactive API documentation.
Key Endpoints:
POST /api/reward/users/init- Initialize userGET /api/reward/bills- List billsPOST /api/reward/payments- Record paymentGET /api/reward/rewards- List rewardsPOST /api/reward/redemptions- Redeem reward
Using Supabase (PostgreSQL) with tables:
profiles- User accounts & creditsbills- Bills to paypayments- Payment transactionsrewards_ledger- Credit earning detailsstreak_status- Streak trackingcredit_shop- Available rewardsredemptions- Redemption history
MIT License - See LICENSE file for details
- Fork the repository
- Create feature branch
- Make changes
- Test thoroughly
- Submit pull request
Need help? Check SETUP.md or run ./diagnose.sh
Made for GUHack2025 🎓