A personal web app that compares credit-card combinations by estimated net annual value for your spending. Set your annual spend by category, choose how you book and redeem, build a wallet by selecting cards, and see each combination ranked — with a per-category "what to swipe" breakdown.
Live: https://cards-drab-omega.vercel.app
General information, not personalized financial advice. Earn rates, credits, fees, and transfer values change frequently — verify on each issuer's site before relying on any number.
For a selected set of cards and your settings, it:
- routes each spend category to the card with the highest value-per-dollar (
earn × point value), - sums rewards, adds the credits you'll realistically use (scaled by a "credit diligence" slider), subtracts annual fees,
- and reports net = rewards + credits − fees, plus effective rewards rate and lounge access.
Toggles let you switch between direct vs. card-portal booking and transfer vs. cash/simple redemption. You can also save named scenarios to your browser (localStorage).
cards.json is the single source of truth — all card data (fees, earn rates, credits, currencies, point values, presets, the default profile) lives there and is typed by src/lib/types.ts. Updating rates is a one-file edit; nothing is hardcoded in components.
Next.js (App Router) + TypeScript + Tailwind CSS, fully client-side and statically prerendered. The calculation logic in src/lib/calc.ts is pure and unit-tested.
npm install
npm run dev # http://localhost:3000
npm test # unit tests for the calc module (Node built-in test runner)
npm run build # production buildDeployed to Vercel via the CLI:
vercel deploy --prod --yes