A beautiful and intuitive personal finance management application built with React, Node.js, Express, and MongoDB. Track your income, expenses, and budgets with user authentication and data isolation.
- User Registration & Login: Secure JWT-based authentication
- Data Isolation: Each user's financial data is completely private and isolated
- Password Security: Passwords are hashed using bcryptjs
- Session Management: HTTP-only cookies for secure token storage
- Income & Expense Tracking: Add, edit, and delete transactions
- Categorization: Predefined categories for consistency
- Date Tracking: Historical transaction records
- Search & Filter: Easy transaction management
- Monthly Budgets: Set budgets for different expense categories
- Budget vs Actual: Visual comparison of planned vs actual spending
- Budget Alerts: Track overspending in different categories
- Progress Tracking: Monitor your budget adherence
- Monthly Spending Charts: Visual representation of spending patterns
- Category Breakdown: Pie charts for expense distribution
- Spending Insights: Month-over-month comparisons
- Financial Dashboard: Overview of your financial health
- Beautiful Landing Page: Modern, animated interface
- Responsive Design: Works on desktop and mobile
- Dark/Light Theme: Toggle between themes
- Loading States: Smooth user experience with proper loading indicators
- Empty States: Helpful messages when no data is available
- React 18: Modern React with hooks
- Redux Toolkit: State management
- React Router: Client-side routing
- Tailwind CSS: Utility-first styling
- Framer Motion: Smooth animations
- Recharts: Data visualization
- Lucide React: Beautiful icons
- Node.js: JavaScript runtime
- Express: Web framework
- MongoDB: NoSQL database
- Mongoose: MongoDB object modeling
- JWT: Authentication tokens
- bcryptjs: Password hashing
- Cookie Parser: HTTP cookie parsing
- Node.js (v14 or higher)
- MongoDB (local or MongoDB Atlas)
- npm or yarn package manager
-
Clone the repository
git clone <repository-url> cd finance-tracker
-
Install backend dependencies
cd api npm install -
Install frontend dependencies
cd ../client npm install -
Environment Setup Create a
.envfile in theapidirectory:MONGO=mongodb://localhost:27017/finance-tracker # OR for MongoDB Atlas: # MONGO=mongodb+srv://username:password@cluster.mongodb.net/finance-tracker JWT_SECRET=your-super-secret-jwt-key-here NODE_ENV=development
-
Build the frontend
cd client npm run build -
Start the application
cd ../api npm start -
Access the application Open your browser and navigate to
http://localhost:3001
- Create an Account: Visit the landing page and register with your details
- Add Transactions: Start by adding your income and expense transactions
- Set Budgets: Create monthly budgets for different categories
- View Insights: Check your dashboard for spending patterns and analytics
- Dashboard: Overview of your financial health with charts and summaries
- Transactions: Add, edit, and manage all your financial transactions
- Budget: Set and track monthly budgets by category
- Insights: Detailed analytics and spending insights
- Profile: Manage your account settings
- Authentication Required: All financial data endpoints require authentication
- User Isolation: Users can only access their own data
- Secure Cookies: JWT tokens stored in HTTP-only cookies
- Password Hashing: All passwords are securely hashed
- Input Validation: Comprehensive validation on all inputs
finance-tracker/
├── api/ # Backend server
│ ├── controllers/ # Route handlers
│ ├── middleware/ # Authentication middleware
│ ├── models/ # Database models
│ ├── routes/ # API routes
│ ├── utils/ # Utility functions
│ └── index.js # Main server file
├── client/ # Frontend React app
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── redux/ # State management
│ │ ├── utils/ # Utility functions
│ │ └── App.jsx # Main app component
│ └── public/ # Static assets
└── README.md
- Export Data: CSV/PDF export functionality
- Goal Setting: Financial goal tracking
- Recurring Transactions: Automatic transaction creation
- Investment Tracking: Portfolio management
- Multi-currency Support: International currency support
- Bank Integration: Automatic transaction import
- Mobile App: Native mobile applications
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Icons by Lucide
- Charts by Recharts
- Animations by Framer Motion
- Styling by Tailwind CSS
Note: This application is designed for personal use. Always ensure your MongoDB connection is secure and never commit sensitive environment variables to version control.