I recently built MoneyMov, a free personal finance tracker to help people understand where their money is going.
The idea was simple:
Know where your money moves.
Instead of building another complicated finance application, I wanted to create something simple enough for everyday use.
What Is MoneyMov?
MoneyMov is a personal finance tracker where users can manage their:
- 💰 Income
- 💸 Expenses
- 📊 Spending categories
- 📈 Investments
- 🤝 Committees / Bachat
- 💵 Lending / Loans
The additional modules are optional, so users can use only the parts they actually need.
For example, someone may only want to track expenses, while another person may also want to keep track of investments or money they've lent to someone.
Tech Stack
I built the application using the MERN stack:
- MongoDB — Database
- Express.js — Backend API
- React.js — Frontend
- Node.js — Backend runtime
- Axios — API requests
- Tailwind CSS — UI styling
- Recharts — Charts and data visualization
- JWT — Authentication
- bcrypt — Password hashing
The frontend is deployed on Netlify, while the backend is deployed on Render.
Authentication & Security
One of the things I focused on while building the project was authentication and basic application security.
Some of the things implemented include:
- Password hashing with bcrypt
- HTTP-only authentication cookies
- JWT-based authentication
- Protected API routes
- Environment variables for secrets
- Forgot-password functionality
- Hashed password-reset tokens
- Token expiration
- Helmet
- Rate limiting
- MongoDB input sanitization
- HTTP Parameter Pollution protection
- User-specific data access
For example, the backend doesn't simply trust the user ID coming from the frontend.
The authentication middleware verifies the token and gets the authenticated user's ID before accessing their data.
Spending Visualization
One of the dashboard features is a category-based spending breakdown.
For example:
Shopping Rs 400
Food Rs 1,200
Transport Rs 500
Bills Rs 2,000
The data is also visualized using a pie chart so users can quickly understand where most of their spending went.
Some Challenges
Building the application wasn't completely straightforward.
I ran into several issues during development and deployment, including:
- MongoDB Atlas connection timeouts
- Render deployment and networking issues
- SMTP connection problems
- Authentication cookies
- CORS configuration
- Express proxy configuration
- SPA routing on Netlify
- Mobile authentication behavior
- Handling protected routes correctly
These problems were actually a useful part of the project because they forced me to understand what was happening beyond simply writing React components.
For example, deploying a MERN application locally is very different from deploying the frontend and backend separately.
You have to think about how each layer communicates in production:
Frontend
↓
API requests
↓
Backend
↓
Authentication
↓
Database
Each layer introduces its own configuration, security considerations, and potential issues.
Why I Built It
I wanted to build something that was more than just another CRUD project.
While working on MoneyMov, I got to work with:
- Authentication
- REST APIs
- MongoDB
- Deployment
- Security
- Email verification
- Password reset
- Data visualization
- Responsive UI
- Production debugging
It also gave me a chance to work through problems that don't usually appear when everything is running on localhost.
What's Next?
There are still several things I want to improve.
Some ideas include:
- Better dashboard analytics
- More useful financial reports
- Improved mobile experience
- Better transaction filtering
- More visualizations
- Exporting financial data
- Additional security improvements
- Performance improvements
MoneyMov is currently free, and my goal is to keep the core personal finance features simple and accessible.
Final Thoughts
This project started as an idea for a simple expense tracker, but it gradually became a much bigger learning experience.
The biggest thing I learned is that building a real application isn't only about making the UI work.
You also have to think about:
Authentication → Security → APIs → Database → Deployment → Users
That's where a lot of the interesting engineering problems begin.
If you're also building a MERN application, I'd be interested to hear what problems you've run into while deploying your project.
Try MoneyMov
MoneyMov is free to use. Give it a try and let me know what you think!
🔗 Website: https://moneymov.netlify.app
MoneyMov — Know where your money moves.
Top comments (0)