Skip to content

ephess/openpenny

Repository files navigation

OpenPenny — Personal Accounting NZ

Self-hosted, open-source personal accounting for New Zealand: keep a double-entry ledger, reconcile against your bank, produce standard reports, and prepare your NZ tax return (IR3 + GST101A) — locally, no cloud, no subscription.

Status: Phase 0 (walking skeleton). A double-entry ledger core, manual journal entries, and a trial balance. See docs/PRD.md for the full product plan, the verified NZ tax/GST research, and the roadmap.

OpenPenny runs as a native desktop app (a real window, not a browser tab) backed by the same Go engine. There are two builds from one codebase, selected by a desktop build tag:

  • Desktop app (-tags desktop, Wails) — the OS-native window, the way you'd normally run it.
  • Headless server (default go build) — serves the UI in your browser; fully CGO-free and cross-compiles to every OS from one runner. Good for Docker / CLI / power users.

Run from source

make run-desktop      # native window (needs CGO + a webview: Xcode CLT / WebView2 / WebKitGTK)
make run              # headless: serve on http://127.0.0.1:7777 and open your browser
make build-mac-app    # build build/bin/OpenPenny.app (double-clickable)

Your data is a single SQLite file under your per-user config dir (…/openpenny/openpenny.db) — back it up by copying that one file. Headless flags: --addr, --db, --open=false, --version.

Develop

Requires Go 1.25+. The HTML templates are compiled with templ, pinned as a go tool dependency so there's nothing extra to install:

go tool templ generate    # regenerate *_templ.go after editing any *.templ
go test ./...
go build ./cmd/openpenny

Design principles

  • CGO-free default build — pure-Go SQLite (ncruces/go-sqlite3) so the headless build cross-compiles every OS from one runner. The native desktop build adds CGO (Wails) but keeps it isolated behind the desktop tag, so the default build never pulls it.
  • Money is integer cents — never floats.
  • Double-entry — every entry's postings sum to zero, enforced at write; reports are pure aggregation over the ledger.
  • Server-rendered UI (templ); richer interactivity (htmx/Alpine) arrives with bank reconciliation.

License

Apache-2.0.

About

An experiment in open sourcing a Personal Accounting tool for New Zealand!

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors