Loading repository data…
Loading repository data…
shahid-roshan / repository
FinTrack - A full stack personal finance tracker built with React, TypeScript, Node.js, Express and MongoDB. Features include income/expense tracking, budgeting and financial reports.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
A personal finance tracker I built to actually understand how a full stack app works end to end — not just frontend, not just backend, but connecting both and shipping it live.
Live app: fintrack12311.netlify.app Backend API: fintrack-backend-production-9a96.up.railway.app
Pretty simple idea — track your income and expenses, see your balance update in real time, and look at where your money's going with some charts. Nothing fancy, just wanted to build something I'd actually use myself.
I wanted the frontend and backend to be completely separate and talk to each other through a proper REST API, like a real production app would. So:
This was honestly the hardest part — getting CORS set up right so the deployed frontend could actually talk to the deployed backend, and dealing with MongoDB's IP whitelist when my network kept changing IPs (mobile hotspot moments). Learned more debugging that than I did writing the actual features.
Frontend
Backend
fintrack-fullstack/
├── frontend/ → React app (Vite)
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ ├── store/ → Redux slices
│ │ └── utils/ → axios config etc
│
└── backend/ → Express API
├── models/ → User.js, Transaction.js
├── routes/ → auth.js, financeRoutes.js
├── middleware/ → auth.js (JWT check)
└── server.js
POST /api/auth/register create account
POST /api/auth/login login, returns JWT GET /api/transactions get all transactions (protected)
POST /api/transactions add a transaction (protected)
DELETE /api/transactions/:id delete a transaction (protected)
All the /api/transactions routes need a JWT token in the Authorization header, like:
Authorization: Bearer <your_token>
Backend:
cd backend
npm install
# create a .env file with:
# MONGO_URI=your_mongodb_connection_string
# JWT_SECRET=anything_random
npm run dev
Frontend:
cd frontend
npm install
npm run dev
Built by Shahid Roshan — still learning, still shipping.