Smart ledger that takes care of your expenses
Project description
QuickLedger
QuickLedger is a fast, intuitive, CLI-first expense tracker built with Python and Typer. Track your daily spending using natural language, export summaries, and optionally extend via a lightweight FastAPI backend.
Features
- Add expenses via command line (
ledger add) - View by day, week, or custom date range
- Natural language support (e.g.
Bought food for 2000) - Summary and basic analytics
- Edit and delete entries
- Export to CSV
- Simple REST API (no auth yet)
- JSON-based storage (easy to inspect and backup)
- Pythonic, Typer-powered CLI with FastAPI backend
Installation
You can use either pip (recommended for end users) or poetry (recommended for contributors or development setup).
✅ Option 1: Using pip (PyPI)
pip install quickledger
Then you can use it directly via:
ledger
🛠️ Option 2: Using Poetry (Development)
- Clone the repo:
git clone https://github.com/chinyereunamba/ledger.git
cd ledger
- Install dependencies:
poetry install
- Run the CLI:
poetry run ledger
CLI Commands
➕ Add Expense
ledger add
Supports natural language:
ledger say "Bought food for 1500"
📅 View Expenses
ledger view --date 2025-07-25
ledger view --week
ledger view --range 2025-07-01 2025-07-25
✏️ Edit or Delete
ledger edit --date 2025-07-24 --index 1
ledger delete --date 2025-07-24 --index 1
📤 Export
ledger export --path my_expenses.csv
🌐 API
Start the FastAPI server from the api/ folder:
uvicorn main:app --reload
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /expenses/ |
Get all expenses |
| POST | /expenses/ |
Add a new expense |
| GET | /expenses/{date} |
Get expenses for a date |
| DELETE | /expenses/{date} |
Delete all expenses for a date |
| GET | /summary/ |
Get total summary |
| GET | /summary/{date} |
Summary for a specific date |
| GET | /summary/week |
Past 7 days summary |
| GET | /summary/range |
Summary for a date range |
⚠️ No authentication yet — intended for local/private use.
🧠 NLP Support
You can input expenses like:
ledger say "Paid for transport 700"
This is automatically parsed as:
- Expense: transport
- Amount: 700
- Date: today (default)
📂 Project Structure
ledger/
├── ledger/ # CLI logic & utilities
│ ├── ledger.py
│ ├── utils.py
│ └── constants.py
├── api/ # FastAPI backend
│ ├── main.py
│ ├── routes/
│ │ └── __init__.py
│ └── models.py
├── ledger.json # Local JSON storage
|--- main.py
├── pyproject.toml # Poetry config
├── README.md # ← You're here
└── LICENSE
📦 PyPI
Coming soon to PyPI for easier installation via pip.
📃 License
MIT © 2025 Chinyere Unamba
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quickledger-0.1.0.tar.gz.
File metadata
- Download URL: quickledger-0.1.0.tar.gz
- Upload date:
- Size: 12.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.12 Linux/6.8.0-60-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
871c544838854f83d9bfa9a39fe5aaea57dc792d7ecacfbe2ef99d782c92b40f
|
|
| MD5 |
9e25c2d1ca68635fc9251760e28598d7
|
|
| BLAKE2b-256 |
ca200ff16ec189d7b91536ebf5986ec373cbc36a4f77c2eacdb44e912be73203
|
File details
Details for the file quickledger-0.1.0-py3-none-any.whl.
File metadata
- Download URL: quickledger-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.12 Linux/6.8.0-60-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e98e8855fd024f4b463bf1927b8c9ee15a60a6992ea7595edd12c61bafa7c3e
|
|
| MD5 |
83aef40dab3617a0873ebc23d019344c
|
|
| BLAKE2b-256 |
532d93afb5779c1029c1b29609faba895d5b84b4dbfb0f51fb865912c90ae62b
|