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
Metadata
Release files for quickledger 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| quickledger-0.1.5.tar.gz | 15.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quickledger-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.8 kB
Release files / quickledger-0.1.5.tar.gz
| Download URL | quickledger-0.1.5.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
293e1be267cb68b765de6259cba542adbeeb0ed069475b2cba18a9b0d021271a
|
|
BLAKE2b-256 checksum How to use checksums |
ce214600391927c97bf9ec485168178be5f431bc855bd1d165bc38738849182e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.10.12 Linux/6.8.0-60-generic
|
Release files / quickledger-0.1.5-py3-none-any.whl
| Download URL | quickledger-0.1.5-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bd156973ace3aa5a7f60e6382a6d96342906fefcb8d7bb0e5ed84881aeb11227
|
|
BLAKE2b-256 checksum How to use checksums |
2451f7aa5103c69581f731c06ba65a34f79f60fb5712891443e419a99b912cc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.10.12 Linux/6.8.0-60-generic
|