Simple tracking. Smarter saving.
Zen FinTrack is a full-stack personal finance tracking application built with the MERN stack. It is designed to help users record income and expenses, preserve financial history, track accumulated savings, analyze spending, correct transaction mistakes without destroying the original record, and communicate with a single administrator through an integrated support system.
Note: Zen FinTrack is a personal financial tracking application, not a banking or payment application.
- User registration and login
- JWT-based authentication
- Password hashing with bcrypt
- Protected API routes
- Role-based authorization
- Exactly two roles:
USERADMIN
- Single-admin architecture
- User data isolation enforced on the backend
Users can:
- Record income
- Record expenses
- View transaction history
- Search transactions
- Filter by type, category, date, and month
- View monthly and yearly financial history
- View current income
- View current expenses
- View remaining balance
- Track accumulated savings
Zen FinTrack intentionally avoids treating financial records like ordinary CRUD data.
Once a transaction is created:
- The transaction cannot be deleted
- The original amount cannot be changed
- The transaction type cannot be changed
- The title/name can be edited
- The description can be edited
This keeps the original financial history intact.
If a user enters the wrong amount, the original transaction remains unchanged.
Instead, the user can:
- Select the transaction
- Choose Report Mistake
- Enter the correct amount
- Review the calculated difference
- Confirm the correction
The system creates a separate CORRECTION transaction linked to the original record.
Example:
Original expense: βΉ10,000
Correct amount: βΉ1,000
Correction: -βΉ9,000
Effective expense: βΉ1,000
Corrections remain permanently visible in the transaction history.
Zen FinTrack separates the current financial state from historical transaction records.
When a new month's income is recorded:
Previous positive remaining balance
β
Savings
β
New month income
β
New remaining balance
Savings accumulate across months and years.
A negative remaining balance is treated as a deficit and does not automatically reduce existing savings.
Available financial analysis includes:
- Monthly income
- Monthly expenses
- Remaining balance
- Expense by category
- Income vs. expenses
- Yearly summaries
- Savings history
- Month-by-month savings rollover
Interactive charts are implemented with Recharts.
Users have access to a dedicated support page where they can:
- Create support requests
- Ask questions
- Report application problems
- Continue conversations in threaded tickets
- Reopen resolved conversations
Support statuses:
OPEN
IN_PROGRESS
RESOLVED
The admin can manage support conversations and reply to users.
The application uses a single-admin architecture.
The admin can:
- View registered users
- View user account/profile information
- View account status
- Delete user accounts
- Manage support requests
- Reply to support conversations
- Change support status
The admin cannot access user financial data, including:
- Income
- Expenses
- Transactions
- Savings
- Remaining balance
- Financial reports
- Financial history
- React
- Vite
- React Router
- Axios
- Material UI (MUI)
- Recharts
- JavaScript / JSX
- Node.js
- Express.js
- JWT
- bcrypt
- JavaScript
- MongoDB
- Mongoose
All application data is designed to be persisted through MongoDB rather than temporary frontend or server-side arrays.
Zen FinTrack uses a Natural Tones visual theme focused on clarity, trust, and simplicity.
- Warm, natural color palette
- Clean card-based layouts
- Responsive interface
- Mobile-friendly navigation
- Accessible UI components
- Consistent Material UI components
- Clear financial indicators
- Minimal and uncluttered dashboards
The design uses a combination of:
- Serif typography for expressive headings
- Sans-serif typography for application data and controls
- Monospace typography for currency and numerical integrity displays
Zen FinTrack
β
βββ Client
β βββ React
β βββ React Router
β βββ Material UI
β βββ Recharts
β βββ Axios
β
βββ Server
β βββ Express.js
β βββ JWT Authentication
β βββ Role Authorization
β βββ Financial Engine
β βββ REST API
β
βββ Database
βββ MongoDB + Mongoose
zen-fintrack/
β
βββ server/
β βββ models/
β β βββ User.js
β β βββ Transaction.js
β β βββ SupportTicket.js
β β βββ SupportMessage.js
β β
β βββ controllers/
β β βββ authController.js
β β βββ transactionController.js
β β βββ reportController.js
β β βββ supportController.js
β β βββ adminController.js
β β
β βββ routes/
β β βββ authRoutes.js
β β βββ transactionRoutes.js
β β βββ reportRoutes.js
β β βββ supportRoutes.js
β β βββ adminRoutes.js
β β
β βββ middleware/
β β βββ authMiddleware.js
β β
β βββ services/
β β βββ financialEngine.js
β β
β βββ db.js
β
βββ src/
β βββ components/
β β βββ admin/
β β βββ dashboard/
β β βββ layout/
β β βββ support/
β β βββ transactions/
β β
β βββ context/
β β βββ AuthContext.jsx
β β
β βββ pages/
β β βββ AuthPage.jsx
β β βββ DashboardPage.jsx
β β βββ TransactionsPage.jsx
β β βββ ReportsPage.jsx
β β βββ SavingsPage.jsx
β β βββ SupportPage.jsx
β β βββ AdminDashboardPage.jsx
β β
β βββ services/
β β βββ api.js
β β
β βββ utils/
β β βββ formatters.js
β β
β βββ App.jsx
β βββ main.jsx
β
βββ .env.example
βββ index.html
βββ package.json
βββ vite.config.js
βββ README.md
_id
name
email
password
role
status
createdAt
updatedAt
_id
userId
type
amount
title
description
category
transactionDate
referenceTransactionId
createdAt
updatedAt
Transaction types:
INCOME
EXPENSE
CORRECTION
_id
userId
subject
status
createdAt
updatedAt
_id
ticketId
senderId
senderRole
message
createdAt
Zen FinTrack treats financial data as private and sensitive application data.
The application implements:
- Password hashing
- JWT authentication
- Protected routes
- Role-based authorization
- Backend ownership validation
- Server-side input validation
- Environment variables for secrets
- Secure error handling
- User-level data isolation
- Admin financial-data isolation
The backend must never trust:
- Frontend role values
- Frontend user IDs
- Client-side financial calculations
- Client-side authorization
Financial calculations and authorization are validated on the server.
Create a .env file in the project root/server environment according to the application's configuration.
Example:
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_secure_jwt_secret
PORT=5000Never commit .env to GitHub.
Use .env.example as the template for required environment variables.
git clone <your-repository-url>
cd zen-fintracknpm installCreate a MongoDB database and provide its connection string through:
MONGODB_URI=your_mongodb_connection_stringAdd a secure secret:
JWT_SECRET=your_secure_secretnpm run devnpm run buildnpm startExact scripts depend on the current
package.jsonconfiguration.
Zen FinTrack
β
βββ Dashboard
βββ Transactions
βββ Reports
βββ Savings
βββ Support
βββ Profile
Zen FinTrack Admin
β
βββ Dashboard
βββ Users
βββ Support
The admin navigation intentionally does not expose financial dashboards or transaction pages.
Remaining Balance
=
Income - Effective Expenses
Example:
Income = βΉ50,000
Expenses = βΉ35,000
--------------------
Balance = βΉ15,000
July Remaining Balance
β
Savings
β
August Income
β
August Remaining Balance
Income = βΉ30,000
Expenses = βΉ35,000
--------------------
Deficit = -βΉ5,000
A deficit is reported to the user and does not automatically deduct from accumulated savings.
Zen FinTrack is built around:
RECORD
β
PRESERVE
β
CORRECT
β
CALCULATE
β
REPORT
Instead of the traditional:
CREATE
β
EDIT
β
DELETE
Financial history should remain trustworthy.
When a user makes a mistake, the original transaction stays intact and the correction becomes part of the permanent history.
Important areas to test include:
- Registration
- Login
- Logout
- Authentication
- Role authorization
- User data isolation
- Admin data isolation
- Income calculations
- Expense calculations
- Remaining balance
- Monthly rollover
- Savings accumulation
- Year transition
- Transaction corrections
- Historical transactions
- Reports
- Support conversations
- User deletion
The financial calculation engine is especially important because incorrect rollover or correction logic can produce incorrect financial results.
- Project setup
- Authentication
- User/admin roles
- Dashboard
- Income tracking
- Expense tracking
- Immutable transactions
- Transaction correction system
- Financial calculation engine
- Savings accumulation
- Monthly/yearly rollover
- Reports
- Savings report
- Support ticket system
- Admin user management
- Admin support panel
- MongoDB/Mongoose persistence
- JavaScript/JSX migration
- Responsive UI
- Natural Tones design theme
The goal of Zen FinTrack is to provide a reliable personal finance tracking experience focused on:
- Financial tracking
- Financial history
- Savings accumulation
- Transaction integrity
- Correction-based auditing
- User privacy
- Secure authentication
- Admin account management
- User support
- Professional responsive UI
Zen FinTrack is intended to feel like a real product rather than a basic MERN CRUD tutorial.
Add your preferred license here before publishing the repository.
Karthick
Zen FinTrack
Simple tracking. Smarter saving.