A comprehensive personal finance management application with budget tracking, transaction management, and analytics.
- Sign up with email or phone number
- Login with email, phone, or user ID
- Password reset functionality
- Secure password hashing (PBKDF2)
- Add income and expense transactions
- Select payment method (Credit Card, Debit Card, UPI, Cash)
- Add categories, descriptions, and notes
- Filter by time period, category, type, payment method
- Sort by date or amount
- Soft delete with recycle bin (30 item limit)
- Restore or permanently delete transactions
- Set monthly budget
- Set category-wise budgets
- Set payment method budgets
- Visual spending analysis
- Budget recommendations based on spending patterns
- Real-time budget tracking with notifications
- Interactive pie chart with hover effects showing expenses by category
- Color-coded summary cards for income, expenses, and balance
- Recent transactions list
- Period selection (This Month, Last 3 Months, This Year)
- Monthly calendar with transaction markers
- Daily transaction breakdown on date selection
- Default income categories: Salary, Freelance, Investment, Bonus, Other
- Default expense categories: Food, Transport, Rent, Utilities, Entertainment, Shopping, Health, Education, Other
- Add custom categories
- React 18 with TypeScript for type safety
- Vite for fast development and optimized builds
- Tailwind CSS for utility-first styling
- Framer Motion for smooth animations and transitions
- React Router v6 for client-side routing
- Chart.js via react-chartjs-2 for visualizations
- Lucide React for consistent iconography
- Python 3.12
- FastAPI
- SQLite3
- JWT Authentication
- Pydantic validation
- Python 3.8 or higher
- Node.js 18 or higher
- npm or yarn
- Navigate to the project directory:
cd finance_tracker- Install Python dependencies:
cd server
pip install -r requirements.txt- Install Node.js dependencies (frontend):
cd ..\client_react
npm installSimply double-click start.bat or run it from command prompt.
- Start the backend server:
cd server
python main.py- Start the frontend development server:
cd client_react
npm run dev- Open http://localhost:3000 in your browser
finance_tracker/
├── server/
│ ├── main.py # FastAPI application
│ ├── database.py # Database initialization
│ ├── service.py # Business logic
│ ├── requirements.txt # Python dependencies
│ └── finance.db # SQLite database
├── client_react/ # NEW: React frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ │ ├── ui/ # Base components (Card, Button, Modal)
│ │ │ └── Sidebar/ # Navigation sidebar
│ │ ├── context/ # React Context (AuthContext)
│ │ ├── pages/ # Page components
│ │ │ ├── Dashboard/
│ │ │ ├── Transactions/
│ │ │ ├── Calendar/
│ │ │ ├── Budget/
│ │ │ ├── Categories/
│ │ │ ├── RecycleBin/
│ │ │ └── Auth/
│ │ ├── services/ # API client
│ │ ├── utils/ # Utility functions
│ │ ├── App.tsx # Main app component
│ │ └── main.tsx # Entry point
│ ├── index.html
│ ├── package.json
│ ├── vite.config.ts
│ ├── tsconfig.json
│ ├── tailwind.config.js
│ └── postcss.config.js
├── start.bat # Quick start script (Windows)
├── README.md
└── .gitignore
- UI Components: Base reusable components (
Card,Button,Modal,LoadingSkeleton) - Layout Components:
Sidebarfor navigation - Page Components: Full-page views for each route
- AuthContext: Manages authentication state and user data
- Component-level state:
useStatefor local component state - Server state: Direct API calls with React hooks
The app uses Tailwind CSS with a custom design system:
| Token | Value | Usage |
|---|---|---|
brand-dark |
#0b0f19 |
Page background |
brand-section |
#111827 |
Card backgrounds |
brand-card |
#1f2937 |
Inputs, nested elements |
brand-accent |
#3b82f6 |
Primary actions, highlights |
brand-success |
#10b981 |
Income, positive values |
brand-danger |
#ef4444 |
Expenses, delete actions |
brand-warning |
#f59e0b |
Warnings, alerts |
Built with Framer Motion:
- Page transitions with staggered children
- Card entrance animations
- Modal scale/fade transitions
- Button hover/tap feedback
- Smooth sidebar slide-in (mobile)
POST /api/auth/signup- Create new accountPOST /api/auth/login- LoginPOST /api/auth/forgot-password- Request password resetPOST /api/auth/reset-password- Reset password
GET /api/transactions- List transactions (with filters)POST /api/transactions- Create transactionPUT /api/transactions/{id}- Update transactionDELETE /api/transactions/{id}- Soft delete transaction
GET /api/recycle-bin- List deleted transactionsPOST /api/recycle-bin/{id}/restore- Restore transactionDELETE /api/recycle-bin/{id}- Permanent deleteDELETE /api/recycle-bin- Empty recycle bin
GET /api/categories- List categoriesPOST /api/categories- Create categoryDELETE /api/categories/{id}- Delete category
GET /api/budget?month=&year=- Get monthly budgetPOST /api/budget- Set monthly budgetGET /api/budget/category?month=&year=- Get category budgetsPOST /api/budget/category- Set category budgetGET /api/budget/payment-method?month=&year=- Get payment method budgetsPOST /api/budget/payment-method- Set payment method budgetGET /api/budget/spending?month=&year=- Get spending vs budget analysisGET /api/budget/recommendations?month=&year=- Get budget recommendations
GET /api/summary- Get financial summaryGET /api/expenses-by-category- Get expenses grouped by category
GET /api/notifications- List notificationsGET /api/notifications/unread-count- Get unread countPOST /api/notifications/{id}/read- Mark as readPOST /api/notifications/read-all- Mark all as read
- Passwords are hashed using PBKDF2 with SHA256
- JWT tokens for session management
- Token expiration: 24 hours
- CORS enabled for local development
MIT License