How ronavp/subscription-tracker works
Subscription Tracker imports bank CSVs, normalizes transactions with AI, detects likely recurring charges, and presents subscriptions and spending answers. The main path is upload → merchant analysis → recurrence detection; users can also adjust their share of a bill, ask questions, or clear the dataset. The README documents these product stages and capabilities; sampled route code confirms their main dependencies and storage operations. UploadForm’s implementation was not sampled, so its documented workflow links are shown without asserting its internal request sequencing.
Main entry points: db.ts Prisma client · page.tsx Home page · UploadForm.tsx CSV upload · route.ts Import transactions
Components 17
User interface
- Home page
app/page.tsx - CSV upload
components/UploadForm.tsx - Subscription list
components/SubscriptionList.tsx - Spending chat
components/ChatBox.tsx
Transaction processing
- Import transactions
app/api/upload/route.ts - CSV parsing
lib/csv.ts - Clean merchants
app/api/analyze/route.ts
Subscription intelligence
- Detect subscriptions
app/api/detect/route.ts - Recurrence math
lib/detection.ts - Answer questions
app/api/chat/route.ts
Persistence
- List subscriptions
app/api/subscriptions/route.ts - Adjust user share
app/api/subscriptions/[id]/route.ts - Clear dataset
app/api/reset/route.ts - Prisma client
lib/db.ts - Application database
prisma/schema.prisma
Other components
- User
- Claude API
Connections 27
- User → Home page: uses
- Home page → CSV upload: renders
- Home page → Subscription list: renders
- Home page → Spending chat: renders
- Home page → List subscriptions: loads list
- Home page → Clear dataset: requests reset
- CSV upload → Import transactions: uploads CSV
- CSV upload → Clean merchants: requests analysis
- CSV upload → Detect subscriptions: requests detection
- Import transactions → CSV parsing: parses rows
- Import transactions → Claude API: infers columns
- Import transactions → Prisma client: stores transactions
- Clean merchants → Prisma client: reads and updates
- Clean merchants → Claude API: normalizes merchants
- Detect subscriptions → Prisma client: reads and saves
- Detect subscriptions → Recurrence math: checks recurrence
- Detect subscriptions → Claude API: judges matches
- Spending chat → Answer questions: sends question
- Answer questions → Prisma client: reads subscriptions
- Answer questions → Recurrence math: normalizes spend
- Answer questions → Claude API: requests answer
- Subscription list → Adjust user share: saves share
- Subscription list → Home page: refreshes list
- List subscriptions → Prisma client: reads subscriptions
- Adjust user share → Prisma client: updates subscription
- Clear dataset → Prisma client: deletes records
- Prisma client → Application database: queries and persists