A modern, full-stack personal finance management application built with React and Node.js. Track your income and expenses, visualize spending patterns, and gain insights into your financial health.
- π Dashboard - Overview of your finances with summary cards and charts
- πΈ Expense Tracking - Add, edit, and delete income/expense entries
- π Analytics - Visual insights with interactive charts (Recharts)
- π·οΈ Categories - Organize transactions by customizable categories
- π Search & Filter - Find transactions quickly with advanced filters
- π Dark Mode - Beautiful light and dark themes
- π± Responsive Design - Works on desktop, tablet, and mobile
- β‘ Fast & Smooth - Optimized for performance
- π Toast Notifications - Real-time feedback on actions
- π JWT Authentication - Secure token-based auth
- π‘οΈ Password Hashing - Bcrypt encryption
- π« Rate Limiting - Protection against brute force
- β Input Validation - Server-side data validation
project4/
βββ docs/ # Documentation
β βββ ARCHITECTURE.md
β βββ FEATURE_STATUS.md
β βββ ROADMAP.md
β βββ TASK_TRACKER.md
β
βββ p4-finance-backend/ # Node.js/Express Backend
β βββ controllers/ # Route handlers
β β βββ authController.js
β β βββ expenseController.js
β β βββ userController.js
β βββ middleware/ # Custom middleware
β β βββ auth.js
β β βββ errorHandler.js
β β βββ validators.js
β βββ models/ # Mongoose models
β β βββ Expense.js
β β βββ User.js
β βββ routes/ # API routes
β β βββ authRoutes.js
β β βββ expenseRoutes.js
β β βββ userRoutes.js
β βββ server.js # Entry point
β βββ package.json
β βββ .env.example
β
βββ p4-finance-frontend/ # React Frontend
β βββ public/
β β βββ index.html
β β βββ manifest.json
β β βββ robots.txt
β βββ src/
β β βββ components/ # Reusable components
β β β βββ ExpenseModal.js
β β β βββ ConfirmModal.js
β β βββ context/ # React Context
β β β βββ AuthContext.js
β β β βββ ThemeContext.js
β β βββ layouts/ # Page layouts
β β β βββ AuthLayout.js
β β β βββ DashboardLayout.js
β β βββ pages/ # Page components
β β β βββ Landing.js
β β β βββ Login.js
β β β βββ Signup.js
β β β βββ Dashboard.js
β β β βββ Expenses.js
β β β βββ Analytics.js
β β β βββ Profile.js
β β β βββ Settings.js
β β β βββ NotFound.js
β β βββ services/ # API services
β β β βββ api.js
β β βββ styles/ # Global styles
β β β βββ index.css
β β βββ App.js
β β βββ index.js
β βββ package.json
β βββ .env.example
β
βββ .gitignore
- Node.js 18.0.0 or higher
- npm or yarn
- MongoDB (local or Atlas)
-
Navigate to the backend directory:
cd p4-finance-backend -
Install dependencies:
npm install
-
Create
.envfile from example:cp .env.example .env
-
Configure your environment variables:
PORT=5000 NODE_ENV=development MONGO_URI=mongodb://localhost:27017/p4-finance JWT_SECRET=your-super-secret-jwt-key-here JWT_EXPIRE=7d CORS_ORIGIN=http://localhost:3000
-
Start the server:
# Development npm run dev # Production npm start
-
Navigate to the frontend directory:
cd p4-finance-frontend -
Install dependencies:
npm install
-
Create
.envfile:cp .env.example .env
-
Configure environment variables:
REACT_APP_API_URL=http://localhost:5000/api REACT_APP_NAME=Personal Finance Manager
-
Start the development server:
npm start
-
Open http://localhost:3000 in your browser.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register new user |
| POST | /api/auth/login |
Login user |
| GET | /api/auth/me |
Get current user |
| POST | /api/auth/logout |
Logout user |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/expenses |
Get all expenses (with filters) |
| POST | /api/expenses |
Create expense |
| GET | /api/expenses/:id |
Get single expense |
| PUT | /api/expenses/:id |
Update expense |
| DELETE | /api/expenses/:id |
Delete expense |
| GET | /api/expenses/summary |
Get expense summary |
| GET | /api/expenses/trends |
Get monthly trends |
| GET | /api/expenses/recent |
Get recent transactions |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/users/profile |
Get user profile |
| PUT | /api/users/profile |
Update profile |
| PUT | /api/users/change-password |
Change password |
| DELETE | /api/users/account |
Delete account |
- React 18 - UI Library
- React Router v6 - Routing
- Axios - HTTP Client
- Recharts - Charts & Graphs
- React Toastify - Notifications
- React Icons - Icon Library
- Node.js - Runtime
- Express.js - Web Framework
- MongoDB - Database
- Mongoose - ODM
- JWT - Authentication
- Bcrypt - Password Hashing
- Helmet - Security Headers
- express-rate-limit - Rate Limiting
- express-validator - Input Validation
- express-mongo-sanitize - NoSQL Injection Protection
The app uses a custom CSS design system with:
- CSS Custom Properties (variables)
- Dark mode support
- Responsive breakpoints
- Modular component styles
- Premium glassmorphism effects
- Smooth animations
This project is licensed under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Made with β€οΈ by [Ankit]