A fullstack application to upload Axis Bank PDF statements, extract transactions automatically, and display them cleanly.
Built using:
- Frontend: React + TypeScript (Vite)
- Backend: FastAPI (Python)
- Upload PDF statements (only Axis Bank supported currently).
- Extracts:
- Date
- Description
- Amount
- Transaction Type (Debit/Credit)
- Balance
- Full error handling:
- Upload non-PDF → Proper error shown
- Upload corrupted PDF → Proper error shown
- Upload non-Axis PDF → Proper error shown
- Instant refresh on every upload.
- Loading spinner during parsing.
- Clean success/error messages.
- Modern, simple, professional frontend layout.
personal-finance-tracker/
├── backend/
│ ├── app/
│ │ ├── routers/
│ │ │ └── upload.py
│ │ ├── services/
│ │ │ ├── table_parser.py
│ │ │ └── parser.py (fallback text parser)
│ │ └── main.py
│ └── venv/
├── frontend/
│ ├── public/
│ │ └── favicon.ico
│ ├── src/
│ │ ├── pages/
│ │ │ └── UploadPage.tsx
│ │ └── main.tsx
│ └── index.html
└── README.md
cd personal-finance-tracker/backend
python -m venv venv
source venv/Scripts/activate # (Windows)
pip install fastapi uvicorn pdfplumber pandas
uvicorn app.main:app --reload --port 8000Server will run on: http://localhost:8000
cd personal-finance-tracker/frontend
npm install
npm run devFrontend will run on: http://localhost:5173
- API upload tests have been implemented using
pytest,httpx, andpytest-asyncio. - Due to the lack of publicly available Axis Bank PDF samples, only error handling has been automatically tested.
- The tests currently cover:
- Upload of non-Axis PDFs (expected 400 Bad Request).
- Upload of corrupted/broken PDFs (expected 400 Bad Request).
- Parsing of valid Axis Bank statements is manually verified during development but not unit tested.
cd backend
pytest --cov=app --cov-report=term-missing- Currently supports only Axis Bank PDF statements.
- Automatically detects and blocks:
- Non-PDF uploads
- Broken or corrupted PDFs
- Non-Axis bank PDFs
- Frontend and backend must run in parallel.
- Add support for multiple banks (HDFC, ICICI, SBI, etc.)
- Add authentication/login for user-specific uploads.
- Expenses prediction using historic data