BUILD YOUR OWN AI TOOL TRACKER!
Copy and paste the text below into Bolt.new. And you have your own app. Play around with the AI chatbot in Bolt to make your app customized to your needs. Have fun! You can’t break it, so keep testing to see what it can do.
Project: “AI Tool Tracker”
Stack: React + TypeScript + Vite (frontend only for v1), no external UI kits.
Goal: A single-page app to track all the AI tools I use. I need CRUD, search/filter, renewal math, CSV import/export, and persistent storage.
Entities & Schema (TypeScript)
type BillingCycle = "monthly" | "quarterly" | "yearly" | "one-time"; type Tool = { id: string; // uuid name: string; // “ChatGPT”, “Midjourney” category?: string; // “Writing”, “Design”, “AEC” purpose?: string; // short sentence of how I use it website?: string; // https://… plan?: string; // “Pro”, “Team”, etc. costUsd?: number; // numeric; store as USD cycle: BillingCycle; // billing cadence startDate?: string; // yyyy-mm-dd nextRenewal?: string; // yyyy-mm-dd (auto-calculated if absent) subscriptionLengthMonths?: number; // overall contract length (optional) seats?: number; // number of seats/licenses owner?: string; // “Kristin”, “JAM Ops” notes?: string; // freeform autoRenew: boolean; // default true createdAt: string; updatedAt: string; }
Derived Calculations
Normalized monthly spend:
monthly →
costquarterly →
cost/3yearly →
cost/12one-time →
0(exclude from monthly burn)
Auto-calc
nextRenewalifstartDate+ cycle exists.“Renewals this month” = count of tools whose
nextRenewalis in the current month.
Features
Top header with quick stats cards: Monthly spend (normalized), Annualized spend (recurring), Renewals this month.
Table of tools with: Tool, Plan, Cycle, Cost, Monthly (norm.), Owner, Start, Next renewal, Seats, Notes, Actions.
Search (name/plan/category/purpose/owner) and Cycle filter (All, Monthly, Quarterly, Yearly, One-time).
Add/Edit drawer with a validated form for every field above. “Auto” button to compute the
nextRenewalfromstartDate + cycle.CRUD: create, edit, duplicate, delete (confirm on delete).
CSV Export/Import
Export CSV with headers:
name,category,purpose,website,plan,costUsd,cycle,startDate,autoRenew,subscriptionLengthMonths,nextRenewal,seats,owner,notesImport CSV using those headers; generate
id, set timestamps.
Persistence: use
localStoragekeyai_tool_tracker.v1.
(Please implement a simple storage service withload(),save().)UX details: inline date inputs (
yyyy-mm-dd), currency formatting (USD), basic empty state, responsive layout without external CSS frameworks (use plain CSS modules or inline styles).Quality: organize code into
components/,lib/(date & currency helpers),storage/. Include lightweight unit tests for helpers.
Nice-to-haves (if time permits)
Column sorting (name, cost, nextRenewal).
Duplicate row action creates “(copy)” suffix.
Simple reminders panel listing renewals happening within the next 30 days (read-only list, no notifications for v1).
Deliverables
A running Vite app with the page at
/.Seed it with 3 example tools so I can see the totals instantly.
Clear README with how to run, build, and where data lives.