A modern personal finance management application with transaction tracking, budgeting, and financial insights
- Record and categorize income and expenses
- Smart transaction categorization
- Real-time transaction tracking
- Search and filter capabilities
- Create monthly, weekly budgets
- Visual budget progress tracking
- Budget alerts and notifications
- Category-based spending limits
- Budget limit notifications
- Unusual spending detection
- Monthly financial reports
- Customizable alert preferences
- Spending pattern analysis
- Category-wise expense breakdown
- Income vs expense trends
- Financial health insights
- Indian Rupee (INR) currency support
- Indian number formatting (1,23,45,678.90)
- Regional date formats (DD/MM/YYYY)
- Multi-language support
Backend:
- Python 3.10+ with FastAPI
- PostgreSQL database
- SQLAlchemy ORM
- JWT authentication
- Alembic migrations
Frontend:
- React 18+ with TypeScript
- Vite build tool
- Tailwind CSS styling
- TanStack Query for state management
- Chart.js for data visualization
- Python 3.10+
- Node.js 18+
- PostgreSQL 13+
- Setup environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt- Configure database
# Create PostgreSQL database
sudo -u postgres psql
CREATE DATABASE fintrack;
CREATE USER finuser WITH PASSWORD 'Fintrack123';
GRANT ALL PRIVILEGES ON DATABASE fintrack TO finuser;
\q- Setup environment variables
# Create .env file with your own values
DATABASE_URL=postgresql://finuser:Fintrack123@localhost:5432/fintrack
SECRET_KEY=your-secret-key-here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30- Initialize database and start server
python init_db.py
alembic upgrade head
uvicorn main:app --host 0.0.0.0 --port 8000 --reload- Install dependencies
cd frontend
npm install- Configure environment
# Create .env file with your own values
VITE_API_BASE_URL=http://localhost:8000- Start development server
npm run dev- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
Email: admin@example.com
Password: admin123
fintrack2/
├── app/ # Backend application
│ ├── api/ # REST API endpoints
│ ├── core/ # Core configuration
│ ├── crud/ # Database operations
│ ├── models/ # Database models
│ ├── schemas/ # Data validation
│ └── services/ # Business logic
├── frontend/ # React frontend
│ └── src/
│ ├── components/ # UI components
│ ├── pages/ # Page components
│ ├── contexts/ # React contexts
│ └── lib/ # API client
├── tests/ # Backend tests
├── alembic/ # Database migrations
└── requirements.txt # Python dependencies
POST /auth/login- User loginGET /users/me- Current user profile
GET /transactions/- List transactionsPOST /transactions/- Create transactionPUT /transactions/{id}- Update transactionDELETE /transactions/{id}- Delete transaction
GET /budgets/- List budgetsPOST /budgets/- Create budgetPUT /budgets/{id}- Update budgetDELETE /budgets/{id}- Delete budget
GET /categories/- List categoriesPOST /categories/- Create categoryPUT /categories/{id}- Update categoryDELETE /categories/{id}- Delete category
pytest
pytest --cov=app # With coveragecd frontend
npm run test
npm run build # Production build# Set production environment
export DATABASE_URL=postgresql://user:password@localhost:5432/fintrack_prod
export SECRET_KEY=production-secret-key
# Run migrations
alembic upgrade head
# Start with Gunicorn
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8000cd frontend
npm run build
# Deploy 'dist' folder to web server