Installation
Requirements
- Python 3.11+
- Node.js 18+ (for the frontend dashboard)
- pip (comes with Python)
Clone and install
git clone https://github.com/isaacrowntree/ledger.gitcd ledgerPython backend
Create a virtual environment and install in editable mode:
python3 -m venv .venvsource .venv/bin/activatepip install -e .This installs all Python dependencies defined in pyproject.toml:
pdfplumber— PDF statement parsingpyyaml— config file loadingflask+flask-cors— REST APIpython-dotenv— environment variable loading
After installation the ledger CLI command is available inside the virtualenv.
Frontend dashboard
cd frontendnpm installnpm run buildcd ..The build output goes to frontend/dist/ which the Flask API serves automatically.
For development with hot reload:
cd frontendnpm run devCopy config files
Config files are gitignored. Copy the examples and customise them:
cp config/accounts.yaml.example config/accounts.yamlcp config/categories.yaml.example config/categories.yamlcp config/tax.yaml.example config/tax.yamlSee the accounts, categories, and tax guides for how to fill these in.
Create staging directories
Statement files go into source-specific folders under staging/:
mkdir -p staging/ing staging/paypal staging/bankwest staging/hsbc staging/coles staging/amex staging/airbnbmkdir -p staging/ing-csv staging/bankwest-csvVerify installation
ledger initThis creates the SQLite database at data/ledger.db and loads your config. You should see:
Database initialized and config loaded.Project structure
config/ # Your personal config (gitignored)data/ # SQLite database (gitignored)staging/ # Drop statement files here (gitignored)etl/ # Python ETL pipelineapi/ # Flask REST APIfrontend/ # Vite + TypeScript dashboardtests/ # Test suitescripts/ # Utility scripts