A local-first, Workday-inspired accounting system for one household. Double-entry core, dimensional reporting, statement ingestion and reconciliation, fixed assets, debt, budgets, forecasts, and KPIs — all running on your own machine, in a browser, against a single SQLite file. Nothing leaves your computer.
Built by Joseph B. Smith. Distributed as-is under the MIT license (see LICENSE) — use it, change it, keep it private.
- Python 3.11 or newer
- That's it. No database server, no Docker, no accounts. The data lives in one
personal_erp.dbfile next to the code.
From inside this folder:
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r backend/requirements.txtpython -m backend.manage reset # build a fresh DB with reference + demo data
python -m backend.manage run # start the web appThen open http://127.0.0.1:8001 in your browser.
reset seeds a synthetic demo household so you can see every screen working —
statements, reconciliation, budgets, forecasts, KPIs. Poke around, then start over
empty when you're ready (below).
Run any of these with python -m backend.manage <command>:
| Command | What it does |
|---|---|
init |
Create the database schema in personal_erp.db |
seed |
Seed reference data (chart of accounts, dimensions, periods) |
demo |
Seed a synthetic demo household on top of the reference data |
reset |
Delete the DB and rebuild it clean: init + seed + demo |
run |
Launch the web app at http://127.0.0.1:8001 |
backup |
Copy the DB to backend/backups/personal_erp_<timestamp>.db |
restore |
Restore the DB from a backup file: restore <path-to-backup> |
To keep the structure but drop the demo household's numbers:
rm backend/personal_erp.db
python -m backend.manage init
python -m backend.manage seed
python -m backend.manage runThat gives you the chart of accounts and dimensions with no transactions — a blank ledger to start entering your own.
- The database file is yours and stays local. Nothing here phones home.
backupbefore any big change;restoreif you regret it.docs/operations.mdwalks through the month-end close workflow (import → review → reconcile → close → report) and the CSV format for statements.- Run the tests with
python -m pytest backend/testsif you want to confirm the accounting logic before trusting it.