SpendWiser is now configured for a seamless deployment on Vercel:
- Framework: Integrated React 19 + Vite with an Express API bridge.
- Configuration: The
vercel.jsonfile automatically routes frontend traffic and serverless backend calls. - Database: To host on Vercel, you must use a remote MongoDB instance (e.g., MongoDB Atlas) instead of a local one.
- Cloud Setup:
- Push this repository to GitHub.
- Import the project into your Vercel Dashboard.
- Add these Environment Variables:
MONGODB_URI: Your MongoDB Atlas connection string.VITE_GEMINI_API_KEY: Your Google Gemini API Key.
Tip
If you see ECONNREFUSED when running locally, change your computer's DNS settings to Google DNS (8.8.8.8). Some ISPs block MongoDB SRV records.
Start with these files in order:
- QUICK_START.md ⚡ - 5-minute setup checklist
- SETUP_GUIDE.md 📖 - Detailed step-by-step instructions
- VISUAL_GUIDE.md 🎨 - Visual diagrams and flowcharts
- TROUBLESHOOTING.md 🔧 - Common issues & solutions
- MONGODB_SETUP.md 🗄️ - MongoDB installation guide
- ✅ Add transactions manually
- ✅ Parse bank SMS automatically
- ✅ Categorize expenses
- ✅ Track income & expenses
- ✅ Download Excel backups
- ✅ Secure bank details storage (MongoDB)
- ✅ Account number masking
- ✅ SMS webhook integration
- ✅ Automatic transaction parsing
- ✅ Multi-bank support
- ✅ AI-powered spending insights
- ✅ Personalized saving suggestions
- ✅ Investment recommendations
- ✅ Budget optimization tips
- ✅ Financial health analysis
- ✅ Dashboard with key metrics
- ✅ Spending breakdown by category
- ✅ Budget tracking
- ✅ Wallet management
- ✅ Data export (Excel & JSON)
- ✅ MongoDB encryption
- ✅ Local browser storage for non-sensitive data
- ✅ Account number masking
- ✅ Secure API endpoints
- ✅ Automatic backups
- Node.js (v14+)
- MongoDB (local or cloud)
- Modern web browser
# 1. Install MongoDB (see MONGODB_SETUP.md)
# 2. Configure backend
# Edit backend/.env:
# PORT=5000
# MONGODB_URI=mongodb://localhost:27017/spendwiser
# 3. Install dependencies
npm install
cd backend && npm install && cd ..
# 4. Start the app
npm run dev
# 5. Open browser
# Frontend: http://localhost:3000
# Backend: http://localhost:5000
# 6. Login
# Email: test@example.com
# Password: password123spendwiser/
├── backend/ # Express + MongoDB backend
│ ├── server.js # Main server file
│ ├── package.json # Dependencies
│ ├── .env # Configuration
│ └── data.xlsx # Excel backup
├── components/ # React components
│ ├── Dashboard.tsx
│ ├── UserProfileView.tsx
│ ├── SettingsView.tsx
│ ├── LedgerView.tsx
│ └── ...
├── services/ # API services
│ ├── geminiService.ts # AI service
│ └── authService.ts # Auth service
├── App.tsx # Main app
├── package.json # Frontend dependencies
└── Documentation files # Setup guides
- React 19 - UI framework
- TypeScript - Type safety
- Vite - Build tool
- Tailwind CSS - Styling
- Recharts - Charts & graphs
- Lucide Icons - Icons
- Node.js - Runtime
- Express - Web framework
- MongoDB - Database
- Mongoose - ODM
- CORS - Cross-origin support
- Google Gemini API - AI insights
- Twilio - SMS integration (optional)
Sidebar → User Profile → Bank Details → Edit
Fill in your bank information → Save Details
Click "Initialize Log" button
Fill in: Amount, Type, Category, Description, Date
Click "Save Transaction"
Click "Decrypt SMS" button
Paste bank SMS message
Click "Parse SMS"
Transaction created automatically!
Sidebar → AI Advisor
Click "Get AI Suggestions"
See personalized recommendations
Sidebar → Investment Plans
View recommended investment options
Settings → Export Data
Download JSON backup
Or: Ledger History → Download Excel
- Bank Details: Encrypted in MongoDB, never in browser
- Account Numbers: Masked in UI (shows only last 4 digits)
- Transactions: Secure database storage with backups
- Settings: Local browser storage (non-sensitive)
- Backups: Automatic Excel + manual JSON export
# Check if MongoDB is running
mongosh
# If not, start MongoDB
# Windows: MongoDB should auto-start
# Mac: brew services start mongodb-community
# Linux: sudo systemctl start mongodb# Change PORT in backend/.env
# Or kill the process using the portnpm install
cd backend && npm install && cd ..See TROUBLESHOOTING.md for more issues.
GET /api/transactions- Get all transactionsPOST /api/transactions- Create transactionPUT /api/transactions/:id- Update transactionDELETE /api/transactions/:id- Delete transactionGET /api/transactions/download- Download Excel
GET /api/bank-details/:userId- Get bank detailsPOST /api/bank-details- Save bank detailsDELETE /api/bank-details/:userId- Delete bank details
POST /api/sms/webhook- Receive SMS webhook
- Transaction management
- Bank details storage
- SMS parsing
- AI insights
- Investment recommendations
- Data export
- Multi-currency support
- Bill reminders
- Recurring transactions
- Budget alerts
- Mobile app
- Cloud sync
- Advanced analytics
- QUICK_START.md - Quick setup
- SETUP_GUIDE.md - Detailed instructions
- VISUAL_GUIDE.md - Visual diagrams
- TROUBLESHOOTING.md - Common issues
- MONGODB_SETUP.md - MongoDB guide
- Check terminal output for errors
- Open browser console (F12)
- Verify MongoDB is running
- Check
.envconfiguration - Restart the app
# backend/.env
PORT=5000
MONGODB_URI=mongodb://localhost:27017/spendwiser
# For MongoDB Atlas (cloud):
# MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/spendwiserUser Browser (React)
↓
Express Backend (Node.js)
↓
MongoDB Database
↓
Excel Backup (data.xlsx)
| Data | Storage | Security |
|---|---|---|
| Bank Details | MongoDB | ⭐⭐⭐⭐⭐ |
| Transactions | MongoDB | ⭐⭐⭐⭐⭐ |
| Wallets | Browser | ⭐⭐⭐ |
| Budgets | Browser | ⭐⭐⭐ |
| Settings | Browser | ⭐⭐⭐ |
| Backups | Excel/JSON | ⭐⭐⭐⭐ |
This project is open source and available under the MIT License.
- Built with React, Express, and MongoDB
- AI powered by Google Gemini
- Icons by Lucide
- Charts by Recharts
New to SpendWiser?
- Start with QUICK_START.md (5 minutes)
- Follow SETUP_GUIDE.md for detailed steps
- Check VISUAL_GUIDE.md for diagrams
- Use TROUBLESHOOTING.md if issues arise
Before using the app, verify:
- MongoDB installed and running
-
backend/.envconfigured - Dependencies installed
- Frontend loads at
http://localhost:3000 - Backend responds at
http://localhost:5000 - Can login with test credentials
- Can add a transaction
- Can save bank details
Ready to manage your finances? Let's go! 🎉
For step-by-step instructions, see SETUP_GUIDE.md