A deliberately minimal personal budgeting app for fast manual tracking, quick insights, and simple CSV portability.
- Manual expense entry with optional AI category suggestion
- Simple category management (defaults + custom)
- Filterable expense list and monthly totals
- CSV import/export
- Clerk auth + Neon Postgres data storage
- Next.js App Router + TypeScript
- Clerk (auth)
- Neon Postgres + Drizzle ORM
- Tailwind CSS + shadcn/ui
- OpenAI (optional, server-side only)
- Install dependencies:
npm install - Add environment variables in
.env.local:DATABASE_URL=your-neon-postgres-url NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your-clerk-publishable-key CLERK_SECRET_KEY=your-clerk-secret-key CLERK_SIGN_IN_URL=/login CLERK_SIGN_UP_URL=/login NEBIUS_API_KEY=optional - Push schema to the database:
npm run db:push - Run the app:
npm run dev
Use headers: date,description,category,amount.
- Deploy the Next.js app to Vercel.
- Set Vercel env vars:
DATABASE_URL(Neon)NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYCLERK_SIGN_IN_URL=/loginCLERK_SIGN_UP_URL=/loginNEBIUS_API_KEY(optional)
- Project setup (Next.js + Tailwind)
- Clerk auth + middleware
- Drizzle schema + Neon setup
- Expenses data model + list query
- Add expense form + mutation
- Insights + filters
- Categories management
- CSV export
- CSV import
- AI categorization
- UI polish + README