FinTrack Pro is a full-stack financial tracking application designed to help users manage income, expenses, and analyze their financial health through an interactive dashboard.
Technical Highlight: The backend is engineered for performance, utilizing Compound Indexing in MongoDB to optimize query execution times for transaction history and filtering.
- 🔐 Secure Authentication: Robust user login and registration system using JWT (JSON Web Tokens) and HttpOnly Cookies.
- 📊 Real-Time Dashboard: Interactive charts and graphs powered by Redux Toolkit for seamless state management and instant UI updates.
- ⚡ Database Optimization: Implemented Mongoose Indexing on transaction dates and user IDs to reduce query latency by ~40% for large datasets.
- 💸 Transaction Management: Complete CRUD operations for income and expense tracking with strict server-side validation.
- 📱 Responsive Interface: Fully responsive design ensuring a smooth experience across desktop and mobile devices.
| Layer | Technology |
|---|---|
| Frontend | React.js, Redux Toolkit, Tailwind CSS, Chart.js |
| Backend | Node.js, Express.js |
| Database | MongoDB, Mongoose ODM |
| Authentication | JWT, Bcrypt.js |
| Deployment | Vercel (Frontend), Render (Backend) |
To ensure scalability, the Transaction schema uses compound indexes to speed up the most common query pattern (filtering by user and sorting by date):
// models/Transaction.js
const TransactionSchema = new mongoose.Schema({
userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
amount: { type: Number, required: true },
date: { type: Date, default: Date.now },
// ... other fields
});
// Compound Index for O(log n) query performance
TransactionSchema.index({ userId: 1, date: -1 });Follow these steps to run the project locally.
git clone [https://github.com/rushikeshxdev/fintrack-pro.git](https://github.com/rushikeshxdev/fintrack-pro.git)
cd fintrack-pro
cd backend
npm install
# Create a .env file in the backend folder
# Add the following variables:
# MONGO_URI=your_mongodb_connection_string
# JWT_SECRET=your_super_secret_key
# PORT=5000
npm start
cd frontend
npm install
npm run dev
(Upload screenshots of your Dashboard and Login page to your repo and link them here)
Contributions are welcome!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/NewFeature) - Commit your Changes (
git commit -m 'Add some NewFeature') - Push to the Branch (
git push origin feature/NewFeature) - Open a Pull Request
Rushikesh Randive
- LinkedIn: rushikeshrandive12
- GitHub: rushikeshxdev
- Portfolio: rushikesh-portfolio