Skip to content

chauhanavi21/FinVista

Repository files navigation

FinVista – Personal Finance Management Platform

FinVista Logo

A modern, AI-powered personal finance management platform built with Next.js

Next.js React TypeScript Prisma Tailwind CSS

Features β€’ Installation β€’ Usage β€’ Documentation β€’ Contributing


πŸ“– Overview

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.

Key Highlights

  • 🎨 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

Landing Page


✨ Features

🎯 Dashboard & Analytics

  • 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

Dashboard

🏦 Account Management

  • 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

Account Management

πŸ’Έ Transaction Management

  • 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)

Transaction Management

πŸ“Έ Smart Receipt Scanner

  • OCR Technology
    • Upload receipt images
    • Automatic data extraction (amount, date, merchant)
    • Pre-fill transaction forms
    • Support for multiple image formats

Receipt Scanner

πŸ“Š Budget Management

  • Budget Planning
    • Set monthly budgets per account
    • Real-time budget progress tracking
    • Budget alerts and notifications
    • Visual budget indicators

Budget Tracking

πŸ”” Automated Notifications

  • Email Reports
    • Monthly financial summaries
    • Budget alert notifications
    • Spending insights and recommendations
    • Customizable report frequency

🎨 User Interface

  • 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

UI Showcase


πŸ› οΈ Technology Stack

Frontend

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

Backend

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

Development Tools

Tool Purpose
ESLint Code linting
PostCSS CSS processing
Turbopack Fast bundler (dev mode)
ArcJet Rate limiting & security

πŸ“ Project Structure

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

πŸš€ Installation

Prerequisites

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

Step 1: Clone the Repository

git clone https://github.com/chauhanavi21/FinVista.git
cd FinVista

Step 2: Install Dependencies

npm install
# or
pnpm install
# or
yarn install

Step 3: Environment Variables

Create 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"

Step 4: Database Setup

# Generate Prisma Client
npx prisma generate

# Run database migrations
npx prisma migrate dev

# (Optional) Seed the database
npx prisma db seed

Step 5: Run the Development Server

npm run dev
# or
pnpm dev
# or
yarn dev

Open http://localhost:3000 in your browser.


πŸ“– Usage Guide

Getting Started

  1. Sign Up / Sign In

    • Click "Get Started" on the landing page
    • Sign up using Clerk authentication
    • Verify your email address
  2. 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
  3. 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
  4. Set Up Budget

    • Go to Dashboard
    • Set your monthly budget amount
    • Track progress in real-time

Key Features Usage

Account Management

Account Detail

  • 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)

Transaction Management

  • 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

Receipt Scanner

  1. Click "Add Transaction"
  2. Click "Upload Receipt" button
  3. Select an image file
  4. Wait for OCR processing
  5. Review and edit extracted data
  6. Save the transaction

πŸ”§ Configuration

Database Configuration

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,
  },
});

Clerk Authentication

  1. Create a Clerk account at clerk.com
  2. Create a new application
  3. Copy the publishable key and secret key
  4. Add them to your .env.local file

Email Configuration (Optional)

  1. Sign up at resend.com
  2. Get your API key
  3. Add to .env.local
  4. Configure email templates in emails/template.jsx

πŸ§ͺ Development

Available Scripts

# 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

Code Style

  • Follow ESLint rules
  • Use TypeScript for type safety
  • Follow Next.js App Router conventions
  • Use Server Actions for mutations
  • Keep components small and focused

πŸ“Έ Screenshots

Add your screenshots to the public/screenshots/ folder and update the links above. Recommended screenshots:

  • landing-page.png - Landing page with hero section
  • dashboard.png - Main dashboard view
  • account-management.png - Account list and management
  • account-detail.png - Individual account detail page
  • transaction-management.png - Transaction list and filters
  • receipt-scanner.png - Receipt upload and OCR
  • budget-tracking.png - Budget progress visualization
  • ui-showcase.png - UI components showcase

Adding Screenshots

  1. Take screenshots of your application
  2. Save them in public/screenshots/ folder
  3. Name them descriptively (e.g., dashboard.png)
  4. The README will automatically reference them via GitHub raw links

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Make your changes
    • Follow the existing code style
    • Add comments where necessary
    • Update documentation if needed
  4. Commit your changes
    git commit -m 'Add some amazing feature'
  5. Push to the branch
    git push origin feature/amazing-feature
  6. Open a Pull Request

Contribution Guidelines

  • Write clear commit messages
  • Test your changes thoroughly
  • Update README if adding new features
  • Follow the existing code structure
  • Add TypeScript types where applicable

πŸ› Known Issues

  • Add known issues here
  • Or remove this section if none

πŸ—ΊοΈ Roadmap

  • 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)

πŸ“ License

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

πŸ‘¨β€πŸ’» Author

Avi Chauhan


πŸ™ Acknowledgments


πŸ“ž Support

If you have any questions or need help:


Made with ❀️ by the FinVista Team

⭐ Star this repo if you find it helpful!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors