A comprehensive full-stack personal finance tracking application built with React, Node.js, and PostgreSQL. Track income, expenses, create budgets, and gain insights into your financial habits.
- 🔐 Authentication: Google OAuth 2.0 + Email/Password login with JWT tokens
- 💰 Transaction Management: Track income and expenses with detailed categorization
- 📊 Advanced Budgeting: Create budgets with alerts, forecasting, and recommendations
- 📈 Analytics Dashboard: Interactive charts and financial insights with "All Time" filtering
- 🏷️ Category Management: Hierarchical categories with icons and colors
- 💱 Currency Support: Multi-currency support with currency switcher
- 👤 Profile Management: User profiles, password changes, and preferences
- 👑 Admin Features: User management, role-based access control
- 📱 Responsive Design: Mobile-friendly interface
- React 18 with TypeScript
- Redux Toolkit for state management
- Material-UI for components
- React Router for navigation
- Recharts for data visualization
- React Hook Form with Zod validation
- Node.js with TypeScript
- Express.js framework
- Prisma ORM with PostgreSQL
- JWT authentication
- Google OAuth 2.0 integration
- Rate limiting and security headers
- PostgreSQL 15+ as primary database
- Prisma for schema management
- UUID primary keys for all entities
- Node.js 18+
- PostgreSQL 15+
- npm or pnpm
-
Clone and install dependencies
git clone <repository-url> cd FinFusion # Backend cd backend && npm install # Frontend cd ../frontend && npm install
-
Set up environment variables
Create
backend/.env:DATABASE_URL="postgresql://username:password@localhost:5432/finfusion?schema=public" JWT_SECRET="your-super-secret-jwt-key-here" GOOGLE_CLIENT_ID="your-google-client-id" GOOGLE_CLIENT_SECRET="your-google-client-secret" PORT=5000 FRONTEND_URL="http://localhost:3000" ADMIN_PASSWORD="admin123"
-
Set up the database
cd backend npm run prisma:generate npm run prisma:migrate npm run prisma:seed -
Start development servers
Backend:
cd backend && npm run dev
Frontend:
cd frontend && npm start
-
Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Default Admin:
admin@finfusion.com/admin123
FinFusion/
├── frontend/ # React TypeScript application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API service layer
│ │ ├── store/ # Redux store and slices
│ │ ├── hooks/ # Custom React hooks
│ │ ├── contexts/ # React contexts (Currency)
│ │ └── types/ # TypeScript definitions
├── backend/ # Node.js TypeScript API
│ ├── src/
│ │ ├── controllers/ # Route controllers
│ │ ├── routes/ # API route definitions
│ │ ├── models/ # Data models
│ │ ├── services/ # Business logic
│ │ ├── middleware/ # Express middleware
│ │ └── utils/ # Utility functions
│ ├── prisma/
│ │ ├── schema.prisma # Database schema
│ │ └── seed.ts # Database seeding
└── CHANGELOG.md # Detailed changelog
npm run dev # Start development server
npm run build # Build for production
npm run prisma:generate # Generate Prisma client
npm run prisma:migrate # Run database migrations
npm run prisma:seed # Seed database
npm run prisma:studio # Open Prisma Studionpm start # Start development server
npm run build # Build for production
npm test # Run tests- Rate Limiting: API endpoint protection
- Input Validation: Request validation with express-validator
- SQL Injection Prevention: Prisma ORM with parameterized queries
- CORS Configuration: Secure cross-origin requests
- Security Headers: Helmet.js for HTTP security
- JWT Authentication: Secure token-based authentication
- Password Hashing: bcryptjs for secure password storage
- Add, edit, delete transactions
- Income and expense categorization
- Date-based filtering and search
- Payment method tracking
- Recurring transaction support
- CSV import/export
- Monthly, quarterly, yearly budgets
- Budget allocation and tracking
- Automatic alert system
- Sub-category budget tracking
- Budget recommendations
- Dashboard with financial overview
- Spending trends and patterns
- Category breakdown analysis
- Budget performance tracking
- "All Time" data filtering
- Interactive charts
- Profile editing and password changes
- Currency preference settings
- Role-based access control
- Admin user management
- Google OAuth integration
- ✅ Fixed transaction count calculations
- ✅ Implemented budget sub-category tracking
- ✅ Added "All Time" data filtering
- ✅ Created automatic budget alert system
- ✅ Added currency switcher functionality
- ✅ Implemented profile management
- ✅ Added role-based access control
- ✅ Fixed UI alignment issues
This project is licensed under the MIT License - see the LICENSE file for details.
For issues and questions:
- Check the Issues page
- Create a new issue with detailed information
- Contact the development team
FinFusion - Take control of your finances, one transaction at a time! 💰✨
For detailed changelog and development notes, see CHANGELOG.md.