A modern, AI-powered personal finance management platform built with Next.js
Features β’ Installation β’ Usage β’ Documentation β’ Contributing
FinVista is a comprehensive personal finance management platform that empowers users to take complete control of their financial health. Built with modern web technologies, FinVista offers an intuitive interface for tracking expenses, managing multiple accounts, setting budgets, and gaining valuable insights through AI-powered analytics.
- π¨ Beautiful Dark Theme UI - Modern, responsive design with smooth animations
- π€ AI-Powered Insights - Get intelligent recommendations and spending pattern analysis
- π± Fully Responsive - Works seamlessly on desktop, tablet, and mobile devices
- π Secure Authentication - Powered by Clerk for enterprise-grade security
- π Real-time Analytics - Interactive charts and visualizations
- π§Ύ Smart Receipt Scanner - OCR-powered automatic transaction extraction
-
Comprehensive Overview
- Real-time budget progress visualization
- Income vs. expense breakdown
- Account balance summaries
- Transaction statistics and trends
-
Interactive Charts
- Spending patterns by category
- Monthly/yearly financial trends
- Account-wise transaction distribution
- Visual budget tracking
-
Multi-Account Support
- Create unlimited bank or credit accounts
- Set default account for quick access
- Account-specific transaction tracking
- Balance management and updates
-
Account Operations
- Add new accounts with initial balance
- Edit account details
- Delete accounts (with transaction cascade)
- Toggle default account status
-
Transaction Tracking
- Add income and expense transactions
- Categorize transactions automatically
- Edit and delete transactions
- Bulk transaction operations
-
Advanced Features
- Recurring transaction support (Daily, Weekly, Monthly, Yearly)
- Receipt image upload with OCR extraction
- Transaction search and filtering
- Sortable transaction tables with pagination
- Transaction status tracking (Pending, Completed, Failed)
- OCR Technology
- Upload receipt images
- Automatic data extraction (amount, date, merchant)
- Pre-fill transaction forms
- Support for multiple image formats
- Budget Planning
- Set monthly budgets per account
- Real-time budget progress tracking
- Budget alerts and notifications
- Visual budget indicators
- Email Reports
- Monthly financial summaries
- Budget alert notifications
- Spending insights and recommendations
- Customizable report frequency
-
Modern Design
- Dark theme with colorful accents
- Smooth animations and transitions
- Hover effects and interactive elements
- Mobile-first responsive design
-
User Experience
- Intuitive navigation
- Fast page loads
- Real-time updates
- Accessible components
| Technology | Version | Purpose |
|---|---|---|
| Next.js | 15.2.3 | React framework with App Router |
| React | 18.2.0 | UI library |
| TypeScript | 5.0+ | Type safety |
| Tailwind CSS | 3.4.1 | Utility-first CSS framework |
| Shadcn UI | Latest | Component library |
| Recharts | 2.14.1 | Chart visualization |
| Lucide React | 0.462.0 | Icon library |
| React Hook Form | 7.53.2 | Form management |
| Zod | 3.23.8 | Schema validation |
| Technology | Version | Purpose |
|---|---|---|
| Next.js Server Actions | - | Server-side logic |
| Prisma | 7.2.0 | ORM and database toolkit |
| PostgreSQL | - | Primary database |
| Clerk | 6.6.0 | Authentication & user management |
| Inngest | 3.27.4 | Background jobs & workflows |
| Resend | 4.8.0 | Email service |
| Google Generative AI | 0.21.0 | AI-powered insights |
| Tool | Purpose |
|---|---|
| ESLint | Code linting |
| PostCSS | CSS processing |
| Turbopack | Fast bundler (dev mode) |
| ArcJet | Rate limiting & security |
FinVista/
βββ app/ # Next.js App Router
β βββ (auth)/ # Authentication routes
β β βββ sign-in/
β β βββ sign-up/
β βββ (main)/ # Protected routes
β β βββ dashboard/ # Dashboard page
β β βββ account/ # Account management
β β β βββ [id]/ # Account detail page
β β β βββ _components/ # Account components
β β βββ transaction/ # Transaction management
β β βββ create/ # Create/edit transaction
β β βββ _components/ # Transaction components
β βββ api/ # API routes
β β βββ inngest/ # Inngest webhook
β βββ layout.js # Root layout
β βββ page.js # Landing page
β βββ globals.css # Global styles
β βββ not-found.jsx # 404 page
βββ actions/ # Server actions
β βββ account.js # Account operations
β βββ transaction.js # Transaction operations
β βββ dashboard.js # Dashboard data
β βββ budget.js # Budget operations
β βββ send-email.js # Email utilities
βββ components/ # Reusable components
β βββ ui/ # Shadcn UI components
β βββ header.jsx # Navigation header
β βββ hero.jsx # Landing hero section
β βββ create-account-drawer.jsx
βββ lib/ # Utility libraries
β βββ prisma.js # Prisma client
β βββ inngest/ # Inngest functions
β β βββ client.js
β β βββ function.js
β βββ utils.js # Helper functions
βββ data/ # Static data
β βββ categories.js # Transaction categories
β βββ landing.js # Landing page data
βββ emails/ # Email templates
β βββ template.jsx
βββ hooks/ # Custom React hooks
β βββ use-fetch.js
βββ prisma/ # Database
β βββ schema.prisma # Database schema
β βββ migrations/ # Database migrations
β βββ config.ts # Prisma config
βββ public/ # Static assets
β βββ screenshots/ # Screenshots (add your images here)
β βββ banner1.jpg
β βββ banner2.jpg
β βββ banner3.jpg
β βββ logo.png
βββ middleware.js # Next.js middleware
βββ next.config.mjs # Next.js configuration
βββ tailwind.config.js # Tailwind configuration
βββ package.json
βββ README.md
Before you begin, ensure you have the following installed:
- Node.js β₯ 18.0.0
- npm or pnpm or yarn
- PostgreSQL database (or use Supabase)
- Git
git clone https://github.com/chauhanavi21/FinVista.git
cd FinVistanpm install
# or
pnpm install
# or
yarn installCreate a .env.local file in the root directory:
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/finvista"
DIRECT_URL="postgresql://user:password@localhost:5432/finvista"
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="pk_test_..."
CLERK_SECRET_KEY="sk_test_..."
# Inngest (Optional - for background jobs)
INNGEST_EVENT_KEY="..."
INNGEST_SIGNING_KEY="..."
# Resend (Optional - for emails)
RESEND_API_KEY="re_..."
# Google Generative AI (Optional - for AI insights)
GOOGLE_GENERATIVE_AI_API_KEY="..."
# ArcJet (Optional - for rate limiting)
ARCJET_KEY="ajkey_..."
# App URL
NEXT_PUBLIC_APP_URL="http://localhost:3000"# Generate Prisma Client
npx prisma generate
# Run database migrations
npx prisma migrate dev
# (Optional) Seed the database
npx prisma db seednpm run dev
# or
pnpm dev
# or
yarn devOpen http://localhost:3000 in your browser.
-
Sign Up / Sign In
- Click "Get Started" on the landing page
- Sign up using Clerk authentication
- Verify your email address
-
Create Your First Account
- Navigate to Dashboard
- Click "Create Account" or use the drawer
- Enter account name, type, and initial balance
- Set as default if it's your first account
-
Add Transactions
- Click "Add Transaction" button
- Fill in transaction details:
- Type (Income/Expense)
- Amount
- Category
- Date
- Description
- Optionally upload a receipt for OCR extraction
- Save the transaction
-
Set Up Budget
- Go to Dashboard
- Set your monthly budget amount
- Track progress in real-time
- View Account Details: Click on any account card to see detailed view
- Set Default Account: Toggle the switch on account card
- Delete Account: Click "Delete Account" button (requires at least one account)
- Bulk Operations: Select multiple transactions and delete them at once
- Filtering: Use search, type filter, and recurring filter
- Sorting: Click column headers to sort
- Pagination: Navigate through pages of transactions
- Click "Add Transaction"
- Click "Upload Receipt" button
- Select an image file
- Wait for OCR processing
- Review and edit extracted data
- Save the transaction
The project uses Prisma 7 with PostgreSQL. Connection URLs are configured in prisma/config.ts:
export default defineConfig({
datasource: {
url: process.env.DATABASE_URL,
directUrl: process.env.DIRECT_URL,
},
});- Create a Clerk account at clerk.com
- Create a new application
- Copy the publishable key and secret key
- Add them to your
.env.localfile
- Sign up at resend.com
- Get your API key
- Add to
.env.local - Configure email templates in
emails/template.jsx
# Development server with Turbopack
npm run dev
# Production build
npm run build
# Start production server
npm run start
# Lint code
npm run lint
# Email development (if using React Email)
npm run email- Follow ESLint rules
- Use TypeScript for type safety
- Follow Next.js App Router conventions
- Use Server Actions for mutations
- Keep components small and focused
Add your screenshots to the public/screenshots/ folder and update the links above. Recommended screenshots:
landing-page.png- Landing page with hero sectiondashboard.png- Main dashboard viewaccount-management.png- Account list and managementaccount-detail.png- Individual account detail pagetransaction-management.png- Transaction list and filtersreceipt-scanner.png- Receipt upload and OCRbudget-tracking.png- Budget progress visualizationui-showcase.png- UI components showcase
- Take screenshots of your application
- Save them in
public/screenshots/folder - Name them descriptively (e.g.,
dashboard.png) - The README will automatically reference them via GitHub raw links
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Follow the existing code style
- Add comments where necessary
- Update documentation if needed
- Commit your changes
git commit -m 'Add some amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Write clear commit messages
- Test your changes thoroughly
- Update README if adding new features
- Follow the existing code structure
- Add TypeScript types where applicable
- Add known issues here
- Or remove this section if none
- Multi-currency support
- Export transactions to CSV/PDF
- Mobile app (React Native)
- Bank account integration
- Investment tracking
- Financial goals and planning
- Collaborative budgets (family/shared)
This project is currently unlicensed. Add an open-source license if you plan to distribute or extend this project.
Common license options:
- MIT License
- Apache 2.0
- GNU GPL v3
Avi Chauhan
- GitHub: @chauhanavi21
- Website: chauhanavi.com
- Next.js - The React Framework
- Shadcn UI - Beautiful component library
- Clerk - Authentication made simple
- Prisma - Next-generation ORM
- Tailwind CSS - Utility-first CSS framework
If you have any questions or need help:
- Open an issue on GitHub
- Check the Documentation
- Contact: [Your Email/Contact Info]
Made with β€οΈ by the FinVista Team
β Star this repo if you find it helpful!







