A web application that helps credit card enthusiasts (churners) maximize their rewards by:
- Finding cards at their all-time high sign-up bonuses
- Recommending the best card to use for each purchase
- Tracking your card collection
- Frontend: Next.js 15 + React 19 + Tailwind CSS 4
- Backend: Supabase (PostgreSQL + Auth)
- Deployment: Vercel
- Data Management: Python crawler scripts
- Node.js 18+
- npm
- A Supabase account (free tier works)
npm install- Create a new project at supabase.com
- Go to Project Settings > API to get your credentials
- Copy
.env.exampleto.env.localand fill in your credentials:
cp .env.example .env.localNEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key- Go to your Supabase project's SQL Editor
- Run the migration script from
supabase/migrations/001_initial_schema.sql - Run the seed data script from
supabase/seed_data.sql
npm run dev├── app/ # Next.js App Router pages
│ ├── (auth)/ # Auth pages (login, signup)
│ ├── dashboard/ # Protected dashboard pages
│ └── page.tsx # Landing page
├── components/ # React components
│ ├── ui/ # Base UI components
│ ├── cards/ # Card-related components
│ ├── landing/ # Landing page sections
│ └── dashboard/ # Dashboard components
├── lib/ # Utilities and configs
│ └── supabase/ # Supabase client setup
├── types/ # TypeScript types
├── supabase/ # Database migrations and seeds
└── crawler/ # Python data management scripts
Select the credit cards you own to get personalized recommendations.
Browse cards sorted by sign-up bonus value. Filter by:
- Issuer (Chase, Amex, Citi, etc.)
- All-time high bonuses only
- Cards you don't own yet
Select a spending category (dining, grocery, gas, etc.) to see which card in your collection gives the best rewards.
The crawler/ directory contains Python scripts for maintaining card data:
cd crawler
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Check current data status
python crawler.py --check
# Export data to JSON
python crawler.py --export
# Update a card's SUB
python crawler.py --update --card "Chase Sapphire Preferred" --sub 75000 --highest- Push your code to GitHub
- Import the repository in Vercel
- Add environment variables:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY
- Deploy!
Make sure to:
- Enable Email Auth in Authentication > Providers
- Configure your site URL in Authentication > URL Configuration
- Add your Vercel domain to the allowed redirect URLs
This project is designed to run within free tiers:
- Vercel: Free Hobby plan (100GB bandwidth/month)
- Supabase: Free plan (500MB database, 50K monthly active users)
- Total: $0/month (domain optional ~$10-15/year)
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT
CardWise is a free tool for informational purposes only. We do not provide financial advice. Always do your own research before applying for credit cards.