ezbookkeeping/README.md

160 lines
13 KiB
Markdown
Raw Permalink Normal View History

2021-04-11 14:51:22 +00:00
# ezBookkeeping
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/mayswind/ezbookkeeping/blob/master/LICENSE)
[![Go Report](https://goreportcard.com/badge/github.com/mayswind/ezbookkeeping)](https://goreportcard.com/report/github.com/mayswind/ezbookkeeping)
[![Latest Release](https://img.shields.io/github/release/mayswind/ezbookkeeping.svg?style=flat)](https://github.com/mayswind/ezbookkeeping/releases)
2025-09-27 08:00:47 +00:00
[![Latest Build](https://img.shields.io/github/actions/workflow/status/mayswind/ezbookkeeping/build-snapshot.yml?branch=main)](https://github.com/mayswind/ezbookkeeping/actions)
[![Latest Docker Image Size](https://img.shields.io/docker/image-size/mayswind/ezbookkeeping.svg?style=flat)](https://hub.docker.com/r/mayswind/ezbookkeeping)
[![Docker Pulls](https://img.shields.io/docker/pulls/mayswind/ezbookkeeping)](https://hub.docker.com/r/mayswind/ezbookkeeping)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/mayswind/ezbookkeeping)
2020-10-17 08:54:42 +00:00
2025-08-28 15:54:25 +00:00
[![Recommend By HelloGitHub](https://api.hellogithub.com/v1/widgets/recommend.svg?rid=ded5af09da574ec1811ddb154f1b2093&claim_uid=LT7EZxeBukCnh0K)](https://hellogithub.com/en/repository/mayswind/ezbookkeeping)
2025-09-27 08:00:47 +00:00
[![Trending](https://trendshift.io/api/badge/repositories/12917)](https://trendshift.io/repositories/12917)
2025-08-28 15:54:25 +00:00
2020-10-17 08:54:42 +00:00
## Introduction
2026-01-31 16:59:13 +00:00
ezBookkeeping is a lightweight, self-hosted personal finance app with a user-friendly interface and powerful bookkeeping features. It helps you record daily transactions, import data from various sources, and quickly search and filter your bills. You can analyze historical data using built-in charts or perform custom queries with your own chart dimensions to better understand spending patterns and financial trends. ezBookkeeping is easy to deploy, and you can start it with just one single Docker command. Designed to be resource-efficient, it runs smoothly on devices such as Raspberry Pi, NAS, and MicroServers.
2021-01-01 14:41:24 +00:00
2025-08-20 14:19:11 +00:00
ezBookkeeping offers tailored interfaces for both mobile and desktop devices. With support for PWA (Progressive Web Apps), you can even [add it to your mobile home screen](https://raw.githubusercontent.com/wiki/mayswind/ezbookkeeping/img/mobile/add_to_home_screen.gif) and use it like a native app.
2025-07-02 15:45:28 +00:00
Live Demo: [https://ezbookkeeping-demo.mayswind.net](https://ezbookkeeping-demo.mayswind.net)
2024-08-05 17:11:57 +00:00
2020-12-15 17:27:59 +00:00
## Features
2025-07-02 15:45:28 +00:00
- **Open Source & Self-Hosted**
- Built for privacy and control
- **Lightweight & Fast**
2026-02-08 16:35:52 +00:00
- Minimal resource usage, runs smoothly even on low-resource devices
2025-07-02 15:45:28 +00:00
- **Easy Installation**
2026-02-08 16:35:52 +00:00
- Docker support
2025-07-02 15:45:28 +00:00
- Supports SQLite, MySQL, PostgreSQL
- Cross-platform (Windows, macOS, Linux)
- Works on x86, amd64, ARM architectures
- **User-Friendly Interface**
- UI optimized for both mobile and desktop
- PWA support for native-like mobile experience
- Dark mode
2025-07-05 19:17:38 +00:00
- **AI-Powered Features**
- Receipt image recognition
2026-02-08 16:35:52 +00:00
- MCP (Model Context Protocol) support for AI integration
2026-03-28 09:33:53 +00:00
- Agent Skill and API command-line script tools support for AI integration
2025-07-02 15:45:28 +00:00
- **Powerful Bookkeeping**
- Two-level accounts and categories
2026-02-08 16:35:52 +00:00
- Image attachments for transactions
2025-07-02 15:45:28 +00:00
- Location tracking with maps
2026-02-08 16:35:52 +00:00
- Scheduled transactions
- Advanced filtering, search, visualization and analysis
- **Localization & Internationalization**
2025-07-02 15:45:28 +00:00
- Multi-language and multi-currency support
2026-02-08 16:35:52 +00:00
- Multiple exchange rate sources with automatic updates
- Multi-timezone support
- Custom formats for dates, numbers and currencies
2025-07-02 15:45:28 +00:00
- **Security**
- Two-factor authentication (2FA)
2026-02-08 16:35:52 +00:00
- OIDC external authentication
2025-07-02 15:45:28 +00:00
- Login rate limiting
- Application lock (PIN code / WebAuthn)
2026-02-08 16:35:52 +00:00
- **Data Import & Export**
- Supports CSV, OFX, QFX, QIF, IIF, Camt.052, Camt.053, MT940, GnuCash, Firefly III, Beancount and more
2026-01-31 16:59:13 +00:00
For a full list of features, visit the [Full Feature List](https://ezbookkeeping.mayswind.net/comparison/).
2020-12-15 17:27:59 +00:00
## Screenshots
2023-09-10 15:30:24 +00:00
### Desktop Version
[![ezBookkeeping](https://raw.githubusercontent.com/wiki/mayswind/ezbookkeeping/img/desktop/en.png)](https://raw.githubusercontent.com/wiki/mayswind/ezbookkeeping/img/desktop/en.png)
### Mobile Version
2023-09-10 14:10:13 +00:00
[![ezBookkeeping](https://raw.githubusercontent.com/wiki/mayswind/ezbookkeeping/img/mobile/en.png)](https://raw.githubusercontent.com/wiki/mayswind/ezbookkeeping/img/mobile/en.png)
2020-12-15 17:27:59 +00:00
## Installation
2025-07-02 15:45:28 +00:00
### Run with Docker
2021-04-11 14:51:22 +00:00
Visit [Docker Hub](https://hub.docker.com/r/mayswind/ezbookkeeping) to see all images and tags.
2020-12-15 17:27:59 +00:00
2025-07-02 15:45:28 +00:00
**Latest Release:**
2020-12-15 17:27:59 +00:00
2021-04-11 14:51:22 +00:00
$ docker run -p8080:8080 mayswind/ezbookkeeping
2020-12-15 17:27:59 +00:00
2025-07-02 15:45:28 +00:00
**Latest Daily Build:**
2020-12-15 17:27:59 +00:00
2021-04-11 14:51:22 +00:00
$ docker run -p8080:8080 mayswind/ezbookkeeping:latest-snapshot
2020-12-15 17:27:59 +00:00
2025-07-02 15:45:28 +00:00
### Install from Binary
Download the latest release: [https://github.com/mayswind/ezbookkeeping/releases](https://github.com/mayswind/ezbookkeeping/releases)
2020-12-15 17:27:59 +00:00
2024-06-09 15:13:26 +00:00
**Linux / macOS**
2021-04-11 14:51:22 +00:00
$ ./ezbookkeeping server run
2020-12-15 17:27:59 +00:00
2024-06-09 15:13:26 +00:00
**Windows**
> .\ezbookkeeping.exe server run
2025-07-02 15:45:28 +00:00
By default, ezBookkeeping listens on port 8080. You can then visit `http://{YOUR_HOST_ADDRESS}:8080/` .
2020-12-15 17:27:59 +00:00
2025-07-02 15:45:28 +00:00
### Build from Source
2025-10-17 13:54:43 +00:00
Make sure you have [Golang](https://golang.org/), [GCC](https://gcc.gnu.org/), [Node.js](https://nodejs.org/) and [NPM](https://www.npmjs.com/) installed. Then download the source code, and follow these steps:
2020-12-15 17:27:59 +00:00
2024-06-09 15:13:26 +00:00
**Linux / macOS**
2021-06-17 15:35:10 +00:00
$ ./build.sh package -o ezbookkeeping.tar.gz
2020-12-15 17:27:59 +00:00
2021-06-08 17:07:47 +00:00
All the files will be packaged in `ezbookkeeping.tar.gz`.
2020-12-15 17:27:59 +00:00
2024-06-09 15:13:26 +00:00
**Windows**
> .\build.bat package -o ezbookkeeping.zip
2025-09-27 08:19:27 +00:00
or
PS > .\build.ps1 package -Output ezbookkeeping.zip
2024-06-09 15:13:26 +00:00
All the files will be packaged in `ezbookkeeping.zip`.
2025-07-02 15:45:28 +00:00
You can also build a Docker image. Make sure you have [Docker](https://www.docker.com/) installed, then follow these steps:
2021-06-06 17:08:31 +00:00
2024-06-09 15:13:26 +00:00
**Linux**
2021-06-06 17:08:31 +00:00
$ ./build.sh docker
2025-07-02 15:45:28 +00:00
## Contributing
2025-08-20 14:19:11 +00:00
We welcome contributions of all kinds.
2025-07-02 15:45:28 +00:00
2026-01-31 16:59:13 +00:00
If you find a bug, please [submit an issue](https://github.com/mayswind/ezbookkeeping/issues) on GitHub.
2025-07-02 15:45:28 +00:00
2026-01-31 16:59:13 +00:00
If you would like to contribute code, you can fork the repository and open a pull request.
2025-07-02 15:45:28 +00:00
2026-01-31 16:59:13 +00:00
Improvements to documentation, feature suggestions, and other forms of feedback are also appreciated.
2025-07-02 15:45:28 +00:00
2026-01-31 16:59:13 +00:00
You can view existing contributors on the [Contributor Graph](https://github.com/mayswind/ezbookkeeping/graphs/contributors).
2025-07-02 15:45:28 +00:00
## Translating
2026-01-31 16:59:13 +00:00
Help make ezBookkeeping accessible to users around the world. We welcome help to improve existing translations or add new ones. If you would like to contribute a translation, please refer to the [translation guide](https://ezbookkeeping.mayswind.net/translating).
2025-07-02 15:45:28 +00:00
Currently available translations:
2026-03-29 16:40:14 +00:00
| Tag | Language | Progress | Contributors |
| --- | --- | --- | --- |
| de | Deutsch | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fde.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/de.json) | [@chrgm](https://github.com/chrgm), [@1270o1](https://github.com/1270o1) |
| en | English | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fen.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/en.json) | / |
| es | Español | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fes.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/es.json) | [@Miguelonlonlon](https://github.com/Miguelonlonlon), [@abrugues](https://github.com/abrugues), [@AndresTeller](https://github.com/AndresTeller), [@diegofercri](https://github.com/diegofercri) |
| fr | Français | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Ffr.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/fr.json) | [@brieucdlf](https://github.com/brieucdlf) |
| it | Italiano | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fit.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/it.json) | [@waron97](https://github.com/waron97) |
| ja | 日本語 | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fja.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/ja.json) | [@tkymmm](https://github.com/tkymmm) |
| kn | ಕನ್ನಡ | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fkn.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/kn.json) | [@Darshanbm05](https://github.com/Darshanbm05) |
| ko | 한국어 | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fko.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/ko.json) | [@overworks](https://github.com/overworks) |
| nl | Nederlands | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fnl.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/nl.json) | [@automagics](https://github.com/automagics) |
| pt-BR | Português (Brasil) | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fpt-BR.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/pt-BR.json) | [@thecodergus](https://github.com/thecodergus), [@balaios](https://github.com/balaios) |
| ru | Русский | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fru.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/ru.json) | [@artegoser](https://github.com/artegoser), [@dshemin](https://github.com/dshemin) |
| sl | Slovenščina | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fsl.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/sl.json) | [@thehijacker](https://github.com/thehijacker) |
| ta | தமிழ் | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fta.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/ta.json) | [@hhharsha36](https://github.com/hhharsha36) |
| th | ไทย | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fth.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/th.json) | [@natthavat28](https://github.com/natthavat28) |
| tr | Türkçe | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Ftr.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/tr.json) | [@aydnykn](https://github.com/aydnykn) |
| uk | Українська | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fuk.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/uk.json) | [@nktlitvinenko](https://github.com/nktlitvinenko) |
| vi | Tiếng Việt | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fvi.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/vi.json) | [@f97](https://github.com/f97) |
| zh-Hans | 中文 (简体) | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fzh-Hans.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/zh-Hans.json) | / |
| zh-Hant | 中文 (繁體) | [![Translation Progress](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmayswind%2FezBookkeeping-i18n-badge%2Fmain%2Fbadges%2Fzh-Hant.json)](https://github.com/mayswind/ezBookkeeping-i18n-badge/blob/main/untranslated/zh-Hant.json) | / |
2025-07-02 15:45:28 +00:00
## Documentation
2025-10-17 13:54:43 +00:00
1. [English](https://ezbookkeeping.mayswind.net)
1. [中文 (简体)](https://ezbookkeeping.mayswind.net/zh_Hans)
2020-12-15 17:27:59 +00:00
## License
2021-04-11 14:51:22 +00:00
[MIT](https://github.com/mayswind/ezbookkeeping/blob/master/LICENSE)