You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Star2 (2)You must be signed in to star a repository
About
SpendWise is a personal finance tracker that helps users allocate salary, manage budgets, track spending, and view custom analytics. It includes JWT authentication, admin analytics, and production deployment support.
SpendWise is a Django-based personal finance management PWA that helps users track expenses, manage budgets, and set savings goals. It features a polished Apple-inspired glassmorphic UI, a spending coach, AI-powered motivation messages, and full export capabilities.
Tech Stack
Component
Technology
Backend
Django 6.0.4 with Python
Database
SQLite (dev) / PostgreSQL (production)
Server
Gunicorn
Platform
Render (primary), Heroku, Northflank
Frontend
HTML/CSS/JavaScript (PWA-enabled)
Auth
django-allauth (email + Google OAuth)
Static
WhiteNoise
AI
OpenAI API (motivation messages, optional)
Exports
ReportLab-style PDF, CSV, openpyxl (XLSX)
Features
Authentication
Email + password signup with 4-digit OTP verification
Login / Logout
Forgot password flow with OTP reset
Google OAuth sign-in (via django-allauth)
Session management with CSRF protection
Core Functionality
Feature
Description
Transactions
Track income & expenses across 10 categories (rent, transport, health, groceries, entertainment, shopping, food, utilities, lend, other)
Salary Management
Set monthly salary for budget calculations
Target Savings
Set monthly savings target
Excess Income
Track additional income beyond salary per month
Savings Goals
Create multiple goals with priority-based auto-allocation (high/medium/low)
Dashboard
Real-time summary with spending ring, category breakdown, 6-month trend chart, daily spending bar chart, expense insights donut, stock-style trend card, and motivation quotes
Monthly Analysis
Detailed monthly breakdown with weekly bar chart, category donut, top spending days, month-over-month comparison, and financial health score
Lend Tracker
Track money lent to others with pending/paid status and mark-as-paid functionality
Profile
User profile with name, email, and avatar upload
Smart Features
Feature
Description
Spending Coach
Contextual messages based on salary spend percentage (excellent/good/warning/high/critical)
Motivation Quotes
AI-powered or locally-generated quotes based on savings progress, with context-aware buckets (broke, just started, making progress, almost there, goal reached, no goals)
Dad Jokes
Fun dad jokes from icanhazdadjoke.com with local fallbacks
Auto-Allocation
Automatic monthly allocation of available savings to goals based on priority weights (high=3x, medium=2x, low=1x)
Chatbot Nudges
Real-time salary-aware messages after recording expenses
Export & Reporting
Feature
Description
PDF Export
Download monthly analysis as PDF
CSV Export
Download monthly transactions as CSV
XLSX Export
Download monthly report as Excel spreadsheet
Email Reports
Send monthly analysis report via email
Scheduled Mailer
Management command to batch-send monthly emails to all users
PWA Features
Feature
Description
Installable
Add to home screen on iOS and Android
Standalone Mode
Full-screen app-like experience with safe area handling
Responsive
Optimized for all screen sizes with iOS keyboard-aware layout
Offline Support
Service worker for basic offline capability
App Shortcuts
Quick access to Dashboard, Monthly, and Savings from home screen
Pages
URL
Description
/
Onboarding / landing page
/signup/
User registration
/signup/verify/
OTP email verification
/login/
User login
/logout/
User logout
/forgot-password/
Password reset (email entry)
/forgot-password/verify/
Password reset (OTP verification)
/forgot-password/reset/
Password reset (new password)
/dashboard/
Main dashboard
/monthly/
Monthly analysis view
/savings/
Savings goals page
/lend/
Lend tracker
/profile/
User profile
API Endpoints
Transactions
POST /api/transactions/ - Add transaction
PUT /api/transactions/<id>/update/ - Update transaction
DELETE /api/transactions/<id>/delete/ - Delete transaction
POST /api/transactions/<id>/mark-paid/ - Mark lend as paid back
Financials
POST /api/salary/ - Set monthly salary
POST /api/excess-income/ - Track extra income
POST /api/target-savings/ - Set savings target
GET /api/dashboard/summary/ - Dashboard data
GET /api/expenses-by-date/?date= - Expenses filtered by date
Savings Goals
POST /api/goals/ - Create goal
PUT /api/goals/<id>/ - Update goal
DELETE /api/goals/<id>/delete/ - Delete goal
POST /api/goals/<id>/contribute/ - Contribute to goal
GET /api/goals/allocations/ - Allocation breakdown (read-only)
Fun & Motivation
GET /api/dad-joke/ - Random dad joke
GET /api/motivation-message/ - Spending coach message
GET /api/motivation-quote/ - Motivation quote
Export & Reports
POST /monthly/email/ - Email monthly analysis
GET /monthly/export/pdf/ - Download PDF report
GET /monthly/export/csv/ - Download CSV report
GET /monthly/export/xlsx/ - Download Excel report
Complete onboarding — set your salary and savings target
Start adding transactions
Adding Transactions
Use the dashboard to add income/expenses
Select category and date
For lending money, use the "Lend" category — you can mark it as paid back later
Add notes for reference
Managing Savings Goals
Go to Savings page
Create goals with target amounts
Set priority (high/medium/low) — higher priority goals receive more auto-allocation
Set allocation percentage for each goal
Auto-allocation runs monthly, distributing available savings proportionally by priority
Lend Tracker
Go to Lend page
View all pending and paid-back lending records
Mark lent amounts as "paid back" when received
Settled lends are excluded from active expense calculations
Monthly Review
Navigate to Monthly Analysis
Browse any month with the month picker
Review weekly income vs expense bar chart
Check category breakdown and top spending days
View your monthly financial health score
Export reports as PDF, CSV, or XLSX
Email the report to yourself
Configuration
Key Settings (config/settings.py)
Setting
Description
DEBUG
Debug mode via DEBUG env var (default: True)
ALLOWED_HOSTS
127.0.0.1, localhost, ngrok, render — configurable via env
CSRF_TRUSTED_ORIGINS
ngrok and render domains
EMAIL_VERIFICATION_CODE_EXPIRY_MINUTES
OTP expiry (default: 10 min)
OPENAI_MOTIVATION_MODEL
Model for AI motivation (default: gpt-4.1-mini)
Production Security
When DEBUG=False, the following are automatically enabled:
Secure session and CSRF cookies
SSL redirect
SameSite=None cookies
License
MIT License
Support
For issues or questions, please open a GitHub issue.
About
SpendWise is a personal finance tracker that helps users allocate salary, manage budgets, track spending, and view custom analytics. It includes JWT authentication, admin analytics, and production deployment support.