🎉 What's New
- Credit System — Pay-as-you-go credits with batch management, 30-day expiry per batch, and FEFO (First Expire, First Out) consumption strategy
- Stripe Integration — Full subscription and one-time purchase support powered by Stripe, with
invoice.paidas the single business entry point - Authentication — Email/password, GitHub OAuth, Google OAuth, and email OTP login via Better Auth
- AI Image Generation — Spend credits to generate images using AI models
🛠 Improvements
- Deployed on Cloudflare Workers for edge-first performance
- Cloudflare D1 (SQLite) database with Drizzle ORM for type-safe queries
- Cron worker for monthly credit grants (yearly plans) and expired credit cleanup
- Responsive UI built with shadcn/ui and Tailwind CSS
🐛 Bug Fixes
- Fixed webhook race conditions by unifying all payment flows through
invoice.paid - Resolved credit balance cache drift with daily Cron reconciliation