A self-hosted, Python-based expense and income tracking application with AI receipt scanning.
- Modern UI
Built with the web-based NiceGui framework. - Financial Dashboard
Overview of your income, expenses, balance, and savings rate with interactive charts. - AI Receipt Scanning
Upload a receipt and let AI extract the details automatically. - Income & Expense Tracking
Log both earnings and spendings with strict input validation. - Transaction History
View all your transactions with inline editing and dynamic category filtering. - Customizable Settings
Manage categories, currencies, and AI providers. - Data Safety
Includes scripts for automated data backups.
- Frontend: NiceGui
- Backend: Python, FastAPI, SQLAlchemy
- Database: PostgreSQL or SQLite
- AI: Google Gemini API / OpenAI API (& more to come)
You can configure the database type in .env:
DB_TYPE=postgres # or sqliteIf using SQLite, the database file will be stored in app/data/xpensetracker.db.
-
Clone the repository.
-
Configure Environment:
- Rename
.env.exampleto the active configuration file.envand fill in the required content, including any necessary API keys.
- Rename
-
Run with Docker:
docker compose up --build
-
Access the App:
- Open your browser and navigate to
http://localhost:8501.
- Open your browser and navigate to
-
Create Virtual Environment:
python -m venv .venv
-
Activate Virtual Environment:
- Windows (PowerShell):
.venv\Scripts\Activate.ps1
- Linux/macOS:
source .venv/bin/activate
- Windows (PowerShell):
-
Install Dependencies:
pip install -r requirements.txt
-
Run Tests:
See tests/TESTING.md for detailed testing instructions.& ".venv/Scripts/python.exe" -m pytest tests/
For detailed instructions on how to deploy to a Raspberry Pi or manage backups, see the deployment/ folder:
- Raspberry Pi Guide
- Production & Backup Guide
- Includes manual update steps if Watchtower is disabled.