This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
WealthDash — a personal finance dashboard built with Next.js 16 (App Router), React 19, TypeScript, Prisma 7 (SQLite), and shadcn/ui. Features transaction tracking and a stock portfolio with real-time Yahoo Finance prices.
npm run dev # Dev server (Turbopack)
npm run build # Production build
npm run lint # ESLint
npx prisma migrate dev # Run/create migrations
npx prisma generate # Regenerate Prisma clientData layer: Prisma with SQLite via LibSQL adapter. Singleton client in src/lib/prisma.ts. Schema defines two models: Transaction (income/expense tracking) and Position (stock holdings with unique ticker). Generated types go to src/generated/prisma/ (gitignored).
Server actions (src/actions/): All data mutations and queries use Next.js server actions with revalidatePath() for cache invalidation. transactions.ts handles CRUD + cash balance calculation. positions.ts handles CRUD + portfolio valuation via live stock quotes.
Stock prices (src/lib/stock.ts): Yahoo Finance quotes fetched sequentially per ticker with a 60-second in-memory cache and stale-on-error fallback.
Components: Server components (async) fetch data directly — SummaryCards, TransactionList, PositionList. Client components ("use client") are forms using useRef for reset. UI primitives from shadcn/ui (base-nova style) in src/components/ui/.
Pages: All three pages (/, /transactions, /portfolio) use force-dynamic rendering. Dashboard aggregates cash balance + portfolio value into net worth.
- Path alias:
@/*maps tosrc/* - Tailwind CSS v4 (PostCSS plugin, theme defined inline in
globals.css) - shadcn/ui config in
components.json— usenpx shadcn@latest add <component>to add new UI components - Environment: only
DATABASE_URLneeded (defaults tofile:./dev.db)