An AI-powered personal finance platform — track expenses, automate recurring transactions, scan receipts, and get monthly insights powered by Gemini AI.
FinTrack gives you a clear, real-time picture of your financial life. Log income and expenses, set budgets with alert thresholds, automate recurring payments, and let AI analyse your spending patterns — all in one place.
| Feature | Description |
|---|---|
| Dashboard | Visual overview of income, expenses, and net balance with interactive charts |
| Transaction management | Add, edit, and categorise transactions with full history |
| Budget tracking | Set per-category budgets; receive email alerts when you approach limits |
| Recurring transactions | Automate repeating income or expenses — daily, weekly, or monthly |
| AI receipt scanning | Upload a receipt and Gemini AI extracts the amount, merchant, and category |
| Monthly AI reports | Personalised financial health summaries delivered to your inbox each month |
| Secure auth | Clerk-powered sign-in with social login and MFA support |
| Rate limiting | Arcjet protects all API routes from abuse |
Frontend
- Next.js 14 — App Router, Server Actions
- React — UI library
- Tailwind CSS + shadcn/ui — styling and components
Backend & Database
Services
- Clerk — authentication and user management
- Gemini AI — receipt scanning and monthly insights
- Inngest — background jobs for recurring transactions and reports
- Resend — transactional email (budget alerts, monthly reports)
- Arcjet — rate limiting and bot protection
- Clone the repository
git clone https://github.com/himanshuvkm/FinTrack.git
cd FinTrack- Install dependencies
npm install- Set up environment variables
Create a .env.local file at the root of the project and fill in the values below.
- Push the database schema
npx prisma db push- Start the development server
npm run devOpen http://localhost:3000 in your browser.
# Clerk — https://dashboard.clerk.com
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/onboarding
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/onboarding
# Supabase / Prisma — https://supabase.com/dashboard
DATABASE_URL=
DIRECT_URL=
# Gemini AI — https://aistudio.google.com/app/apikey
GEMINI_API_KEY=
# Resend — https://resend.com/api-keys
RESEND_API_KEY=
# Inngest — https://app.inngest.com
INNGEST_EVENT_KEY=
INNGEST_SIGNING_KEY=
# Arcjet — https://app.arcjet.com
ARCJET_KEY=fintrack/
├── app/ # Next.js App Router pages and layouts
│ ├── (auth)/ # Sign-in / sign-up routes
│ ├── (main)/ # Protected app routes (dashboard, accounts, transactions)
│ └── api/ # API route handlers
├── components/ # Shared UI components
├── lib/ # Utility functions, Prisma client, AI helpers
├── inngest/ # Background job definitions
├── prisma/ # Prisma schema and migrations
└── public/ # Static assets
Contributions are welcome — bug reports, feature requests, documentation improvements, and code all help.
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m "feat: add your feature" - Push to your branch:
git push origin feature/your-feature - Open a Pull Request
Please follow Conventional Commits for commit messages where possible.
Distributed under the MIT License. See LICENSE for details.
Himanshu Vishwakarma
- Email: himanshuvkm252@gmail.com
- GitHub: @himanshuvkm
- LinkedIn: himanshuvkm
- Project: github.com/himanshuvkm/FinTrack
