GetMoneyPlanner is a production-grade, full-stack personal finance management application. It lets users track income and expenses, set and monitor financial goals, manage monthly budgets, and gain insights through rich data visualizations — all secured with enterprise-grade authentication including TOTP-based 2FA.
Built with a focus on real-world usability, security, and performance.
⚠️ This is NOT open-source software. The source code is available for viewing and learning purposes only. See the License section for details.
- Transaction Tracking — Log income and expenses with categories, notes, and date filters
- Budget Management — Set monthly spending limits and get real-time usage alerts
- Financial Goals — Create savings goals with progress tracking and milestone notifications
- Multi-currency Support — USD, EUR, GBP, INR, BDT, and more
- Interactive Charts — Bar, donut, and line charts powered by Recharts
- Income vs Expense Overview — Monthly and yearly breakdowns
- PDF Export — Export transaction history and reports via jsPDF
- Excel Export — Download spreadsheets using SheetJS
- Credentials Auth — Secure email/password login with bcrypt hashing
- OAuth — Sign in with Google or GitHub via NextAuth.js
- TOTP 2FA — Time-based One-Time Password using Speakeasy & QR codes
- Active Session Management — View and revoke sessions by device and location
- Password Reset — Secure email-based reset flow with time-limited tokens
- Transaction Alerts — Instant email on new transactions
- Budget Alerts — Notified when nearing or exceeding budget limits
- Goal Milestones — Emails at 25%, 50%, 75%, and 100% goal completion
- Security Alerts — Unusual activity and new session notifications
- Customizable Preferences — Toggle each notification type individually
- Dark / Light Mode — System-aware theme with smooth transitions
- Fully Responsive — Mobile-first design, optimized for all screen sizes
- Framer Motion Animations — Page transitions, stagger effects, micro-interactions
- Password Strength Meter — Real-time visual feedback on registration
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS v4 |
| Database | MongoDB Atlas + Mongoose |
| Auth | NextAuth.js v4 |
| 2FA | Speakeasy + QRCode |
| Nodemailer (Gmail SMTP) | |
| Charts | Recharts |
| Animations | Framer Motion |
| Forms | React Hook Form + Zod |
| PDF Export | jsPDF + AutoTable |
| Excel Export | SheetJS (xlsx) |
| Deployment | Vercel |
- Node.js
>=18 - MongoDB Atlas account
- Gmail account (for SMTP email)
- Google & GitHub OAuth apps (optional)
# 1. Clone the repository
git clone https://github.com/2000Deba/GetMoneyPlanner.git
cd GetMoneyPlanner
# 2. Install dependencies
npm install
# 3. Set up environment variables
cp .env.example .env.local
# 4. Run the development server
npm run devOpen http://localhost:3000 in your browser.
Create a .env.local file in the root directory:
# App
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_nextauth_secret_here
# MongoDB
MONGODB_URI=mongodb+srv://<user>:<password>@cluster.mongodb.net/getmoneyplanner
# OAuth (optional)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
# Email (Gmail SMTP)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_gmail@gmail.com
SMTP_PASS=your_gmail_app_password
# Admin
ADMIN_EMAIL=admin@yourdomain.comNote: For Gmail, use an App Password, not your regular password.
- Passwords hashed with bcrypt (never stored in plain text)
- TOTP 2FA secrets encrypted before storage
- Session tokens signed with
NEXTAUTH_SECRET - Password reset tokens are single-use and expire in 1 hour
- Rate limiting on sensitive API routes
- HTTP-only cookies for session management
This project is optimized for Vercel deployment.
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel --prodSet all environment variables in your Vercel project dashboard under Settings → Environment Variables.
⚠️ Deploying this software without explicit written permission from the author is a violation of the license terms.
Contributions are welcome for educational improvement of the project.
- Fork the repository (study/learning only)
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
By contributing, you agree that your contribution may be used under the terms of this project's license. See LICENSE for full details.
This project is licensed under a Custom Source-Available License.
| ✅ Allowed | View and study the source code for learning |
| ✅ Allowed | Fork on GitHub (learning/study only) |
| ✅ Allowed | Submit contributions via Pull Request |
| ❌ Prohibited | Deploy to any server or platform |
| ❌ Prohibited | Redistribute or resell |
| ❌ Prohibited | Use commercially or in client projects |
| ❌ Prohibited | Rebrand or claim as your own work |
See the full LICENSE file for complete terms.
For permission requests: deep2000seal@gmail.com
Debasish Seal
- Portfolio: debasishseal.vercel.app
- GitHub: @2000Deba
- LinkedIn: debasishseal
Made with ❤️ by Debasish Seal
⭐ Star this repo if you find it helpful!
© 2026 Debasish Seal. All rights reserved.




