Overview
Discover what makes ezBookkeeping powerful
`ezBookkeeping` is a lightweight, self‑hosted personal finance platform written in Go. It exposes a RESTful API and serves a single‑page application built with Vue.js, allowing developers to interact programmatically while still providing a polished UI for end users. The core engine is a pure Go backend that runs on any x86_64, ARMv7, or ARM64 machine, making it ideal for embedded devices such as Raspberry Pi or enterprise servers. The application stores data in a relational database; it supports SQLite for single‑node setups and MySQL/PostgreSQL for multi‑user or clustered deployments, giving developers flexibility in choosing persistence layers.
Backend
Frontend
Containerization
Deployment
Overview
ezBookkeeping is a lightweight, self‑hosted personal finance platform written in Go. It exposes a RESTful API and serves a single‑page application built with Vue.js, allowing developers to interact programmatically while still providing a polished UI for end users. The core engine is a pure Go backend that runs on any x86_64, ARMv7, or ARM64 machine, making it ideal for embedded devices such as Raspberry Pi or enterprise servers. The application stores data in a relational database; it supports SQLite for single‑node setups and MySQL/PostgreSQL for multi‑user or clustered deployments, giving developers flexibility in choosing persistence layers.
Architecture
- Backend – Go 1.22+, using the standard
net/httppackage with Gorilla Mux for routing, GORM as an ORM abstraction over SQLite/MySQL/PostgreSQL. The business logic is split into domain services (accounts, transactions, reporting) and adapters for external APIs. - Frontend – Vue 3 with Vite, TypeScript, and Pinia for state management. The SPA is compiled into a static bundle that the Go server serves from
/static. PWA manifests and Service Workers enable offline usage on mobile devices. - Containerization – A multi‑stage Dockerfile builds the Go binary and Vite bundle, then packages them into a minimal Alpine image. The
docker-compose.ymlexample demonstrates volume mounting for database persistence and optional TLS termination. - Deployment – The application can run as a single binary, a Docker container, or be built from source. It supports environment variables for configuration (DB DSN, port, JWT secrets) and can be orchestrated with Kubernetes via Helm charts or plain manifests.
Core Capabilities
- REST API – CRUD endpoints for users, accounts, categories, transactions, recurring rules, and import/export jobs. The API follows HATEOAS principles, providing hypermedia links for navigation.
- Webhooks & MCP – The server emits webhook events on transaction creation/update and can act as an MCP client for AI services (e.g., receipt OCR). Developers can subscribe to events or integrate custom ML models.
- Data Import/Export – Built‑in parsers for CSV, OFX/QFX, QIF/IIF, Camt.053, MT940, GnuCash XML, Firefly III JSON, and Beancount text. Import jobs are queued via Go channels, allowing asynchronous processing.
- Reporting & Analytics – Exposes aggregated data (spending by category, cash flow charts) via GraphQL‑like query endpoints. Developers can embed these metrics in dashboards or third‑party BI tools.
Deployment & Infrastructure
The application is engineered for low resource consumption: a single instance on a Raspberry Pi can handle dozens of concurrent users with < 200 MB RAM. For higher workloads, developers can spin up multiple replicas behind a load balancer; the stateless API and external database make horizontal scaling straightforward. Docker images are kept under 100 MB, and the Alpine runtime reduces attack surface. Kubernetes users can deploy using a StatefulSet for MySQL/PostgreSQL or a headless Service for SQLite file sharing across pods.
Integration & Extensibility
- Plugin System – Although currently minimal, the codebase exposes hooks for authentication backends (OAuth2, LDAP) and payment processors. Future releases plan a plugin API that allows dynamic loading of Go modules.
- Custom Scripts – The import engine accepts user‑supplied scripts in Go templates, enabling transformation pipelines before persisting data.
- Webhooks – Clients can register URLs to receive JSON payloads on key events, facilitating integration with Slack, email, or custom monitoring dashboards.
Developer Experience
Configuration is declarative: a single config.yaml file or environment variables dictate database connections, JWT secrets, and feature flags. The Go codebase follows idiomatic patterns with clear module boundaries, making it approachable for contributors. Documentation is hosted on GitHub Pages and includes API reference, deployment guides, and a developer‑contribution roadmap. The community is active on GitHub Discussions and the project’s Discord channel, where feature requests and bug reports are triaged promptly.
Use Cases
- Personal Finance Manager – A solo developer can deploy on a NAS to manage household budgets, leveraging the PWA for mobile access.
- Small Business Accounting – With PostgreSQL and multi‑user support, a small firm can use
ezBookkeepingas an internal bookkeeping tool without paying for SaaS subscriptions. - Embedded Finance – The lightweight binary is ideal for IoT gateways that need to log transaction data locally before syncing with a central server.
- Educational Projects – The clear separation of concerns makes it an excellent teaching resource for Go, REST APIs, and Vue.js development.
Advantages
- Performance & Size – A single binary under 50 MB with < 200 MB RAM usage outperforms many commercial bookkeeping SaaS offerings.
- Open Source & Privacy – MIT license and local deployment give full control over data, satisfying GDPR or HIPAA‑like requirements.
- Extensibility – Built‑in AI hooks and webhook support let developers add custom analytics or integrate with existing ecosystems.
- Cross‑Platform & Architecture Agnostic – Native binaries for Windows, macOS, Linux, and ARM make it usable on a wide range of hardware.
- Community & Support – Active issue tracking, frequent releases, and clear contribution guidelines reduce friction for new developers.
ezBookkeeping blends
Open SourceReady to get started?
Join the community and start self-hosting ezBookkeeping today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
transfer.sh
Command-line file sharing made simple
Standard Notes
Secure, end‑to‑end encrypted note‑taking for all devices
HomeGallery
Self-hosted web gallery with AI-powered tagging
Twake Workplace
Secure, collaborative cloud platform for modern teams
Koillection
Self‑hosted collection manager for books, DVDs, stamps and more
ShellHub
Centralized SSH gateway for edge and cloud devices
