DEV Community

Falak Sher
Falak Sher

Posted on

Building MoneyMov — A Free Personal Finance Tracker with MERN

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)