Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
My personal credit card perks and benefits tracker
Translation pending
FinanceJavaScript · CSSGitHub @jhueyxOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A personal productivity app for credit card perks.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A personal credit card perks and benefits tracker. Track monthly credits, annual travel benefits, quarterly rewards, and card-year ROI across all your premium cards — with cloud sync, snooze, streak tracking, and fee-coverage analytics.Read the full README ↗A personal credit card perks and benefits tracker. Track monthly credits, annual travel benefits, quarterly rewards, and card-year ROI across all your premium cards — with cloud sync, snooze, streak tracking, and fee-coverage analytics.
Live at: perks.hueyventures.org
send-weekly-digest) using Resend. Toggle in Settings → Notificationssend-push) on daily cron (requires VAPID keys + migration — see KNOWLEDGE.md)effective fee = annual fee − card-year captured
Where card-year captured = sum of all benefit amounts marked used across all past and current periods in the 12-month card year (benefit start month through anniversary month − 1).
months elapsed = (current abs month) − (card year start abs month) + 1, clamped 1–12
months remaining = 12 − months elapsed
projected repeating = (repeating captured / months elapsed) × months remaining
projected = one-time captured + repeating captured + projected repeating
repeating = monthly + quarterly benefits; one-time = annual, semi-annual, etc.
Grade is based on projected / annual fee:
| Grade | Threshold |
|---|---|
| A | ≥ 100% |
| B | ≥ 80% |
| C | ≥ 50% |
| D | < 50% |
A card year starts on the anniversary month/day. If today is before this year's anniversary date, the year started in the previous calendar year; if on or after, it started this calendar year.
Snoozed benefits are excluded from: card-year captured, monthly available, year-end projection, ROI grade, priority queue, and all-cards summary. The snooze state syncs to Supabase so it persists across devices.
| Card | Key |
|---|---|
| Amex Platinum | platinum |
| Amex Gold | gold |
| Amex Green | green |
| Chase Sapphire Reserve | csr |
| Chase Sapphire Preferred | csp |
| Capital One Venture X | cap1_venture_x |
| Hilton Honors Aspire | ah |
| Marriott Bonvoy Brilliant | amb |
| Marriott Bonvoy Bevy | mbb |
| World of Hyatt | uq (note: uses uq key) |
| United Quest | uq |
| United Club Infinite | uc |
| Citi Strata Premier | csp2 |
| WF Autograph Journey | wfaj |
| Aeroplan Reserve | adr |
| Aeroplan | adp |
| Venture X Business | vxb |
| JetBlue Mastercard Reserve | jmr |
| US Bank Altitude Reserve | usbar |
| Layer | Tech |
|---|---|
| Frontend | Vanilla JS ES modules / HTML / CSS — no framework, no build step |
| Auth + Sync | Supabase (email/password auth, RLS, cloud data sync) |
| Hosting | Vercel with custom domain (perks.hueyventures.org) |
| Fonts | Inter + JetBrains Mono (Google Fonts) |
index.html — app shell, modals, PWA meta
css/styles.css — all styles (dark + light mode, responsive, landscape)
js/
cards.js — card definitions: sections, benefits, amounts, cadences
state.js — shared state object, Supabase client, constants (CY, CM, CD)
storage.js — localStorage + Supabase sync; custom amounts, partial use,
notes, credited, skipped, snoozed, fee overrides
periods.js — period math: card year start, period generation, isPCurrent,
calcStats, projections, ROI grade, streaks
badges.js — achievement badge definitions (100+ badges, 5 tiers),
check/earn/persist/backfill logic, TIER_COLORS
views.js — all render functions (renderCurrent, renderROI, renderDigest,
renderNetValue, renderFeeOptimizer, renderCardSimulator, …)
main.js — auth flow, event handlers, navigation, modals, confetti,
renderBadgesView, email digest toggle, push subscribe
manifest.json — PWA manifest
sw.js — service worker (offline cache, currently v35)
supabase/
functions/send-weekly-digest/ — weekly email digest (Resend)
functions/send-push/ — web push notifications (web-push npm)
digest_migration.sql — adds digest_cache + digest_enabled to user_profiles
push_migration.sql — creates perks_push_subscriptions table
cron_schedule.sql — pg_cron for weekly digest
push_cron.sql — pg_cron for daily push at 16:00 UTC
All user data is stored in Supabase (tracker_data table) as a single JSON blob per user, merged with local localStorage on load. The payload includes:
[cardKey] — benefit check-off state (benefitId__periodKey: true/false)_customAmounts — per-benefit dollar overrides_partial — partial credit amounts_notes — period notes_credited — statement credit posted flags_skipped — period-level skips_snoozed — benefit-level snooze-until months (cardKey__benefitId: 'YYYY-MM')_feeOverrides — custom fee month/day per cardThe Supabase anon key is safe to expose in frontend code — RLS policies restrict each row to its owner.
Do not commit a Supabase service role key.
No build step required — it's plain ES modules. Serve from any static file server:
npx serve .
# or
python3 -m http.server 8080
file:// URLs won't work for ES modules. Supabase auth requires the origin to be whitelisted in your Supabase project under Authentication → URL Configuration.