A full-stack financial intelligence platform built with TypeScript, React, and the MERN stack. Finora empowers individuals and small business owners to track expenses, automate recurring financial entries, parse receipts with AI, and visualize deep fiscal analytics powered by MongoDB aggregation pipelines.
🌐 Live Application: https://finance-tracker-e1pe.vercel.app
- 📊 High-Performance MongoDB Aggregation: Implements complex multi-stage aggregation pipelines (
$match,$group,$facet,$project) to calculate monthly expenditure distributions, category breakdown pie metrics, and cash flow trend lines without client-side computational bottlenecks. - 🧾 AI-Powered Receipt Scanning: Integrates computer vision / OCR prompt pipelines to extract merchant details, dates, line items, and transaction amounts from uploaded receipts.
- ⏰ Automated Cron Jobs: Background scheduler handling automated posting of recurring monthly subscriptions and triggering monthly fiscal summary email deliveries.
- 📥 CSV Bulk Ingestion: Multipart batch parser enabling users to import legacy bank statements and transaction logs seamlessly with validation.
- 💳 Stripe Subscription Billing: Webhook-verified Stripe subscription tiers with customer portal integration.
- 🔐 Stateless Authentication: JWT session security with role validation, password salting via bcrypt, and Cloudinary integration for user avatar hosting.
┌────────────────────────────────────────────────────────┐
│ Client SPA (React + TypeScript) │
│ • Recharts & Lucide Icons • Tailwind CSS UI │
│ • CSV Parser & Uploader • Date Range Filter Bar │
└───────────────────────────┬────────────────────────────┘
│ HTTPS / REST (Axios)
▼
┌────────────────────────────────────────────────────────┐
│ Backend Engine (Node.js + Express + TS) │
│ • JWT Auth & Permissions Middleware │
│ • MongoDB Aggregation Controller Layer │
│ • Background Cron Scheduler (`node-cron`) │
└───────────────┬───────────────────┬────────────────────┘
│ │
┌───────────▼────────┐ ┌────────▼───────────┐ ┌─────────────────────┐
│ MongoDB Atlas │ │ AI Receipt Scanner │ │ Cloud Media/Billing │
│ (Aggregate Indices │ │ (Vision Parsing) │ │ (Cloudinary / Stripe│
│ & Transactions) │ └────────────────────┘ │ Webhooks) │
└────────────────────┘ └─────────────────────┘
| Layer | Technologies | Details |
|---|---|---|
| Frontend | React 18, Vite, TypeScript | Type-safe UI architecture |
| Styling & Charts | Tailwind CSS, Recharts | Interactive SVG financial graphs |
| Backend | Node.js, Express.js, TypeScript | Clean MVC architecture with typed interfaces |
| Database | MongoDB Atlas, Mongoose | Indexed document models & aggregation pipelines |
| Automation | Node-Cron | Scheduled recurring transaction worker |
| Media & Storage | Cloudinary | Cloud receipt and avatar storage |
| Authentication | JWT, Bcrypt | Stateless token verification |
| Deployment | Vercel & Render | Continuous delivery with environment isolation |
- Node.js (v18+)
- MongoDB Atlas database cluster
- Cloudinary credentials
- (Optional) Stripe account for billing webhooks
git clone https://github.com/Rajan-vish/finance_tracker.git
cd finance_trackercd backend
npm installCreate a .env file in backend/:
PORT=5000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_token
# Cloudinary (Receipt & Media Storage)
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
# AI Receipt OCR & Client
CLIENT_URL=http://localhost:5173Run backend in development mode:
npm run devIn a new terminal:
cd ../client
npm installCreate a .env file in client/:
VITE_API_URL=http://localhost:5000/apiStart the frontend:
npm run devNavigate to http://localhost:5173.
GET /api/analytics/summary— Aggregated income, expense, and net balanceGET /api/analytics/category-breakdown— MongoDB aggregation pipeline output for chartsGET /api/transactions— Paginated and date-filtered transaction recordsPOST /api/transactions— Create manual transactionPOST /api/transactions/import-csv— Bulk import validated CSV recordsPOST /api/transactions/scan-receipt— AI OCR receipt processing endpointDELETE /api/transactions/bulk-delete— Batch transaction deletion
Rajan Kumar Vishwakarma
- GitHub: @Rajan-vish
- Email: rajanvish2005@gmail.com
- LinkedIn: linkedin.com/in/rajan-kumar-vishwakarma-1a4bb92a8
- Codeforces: rajan_pant (Specialist - 1420)
- LeetCode: unbitten (614+ Solved)