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.