ezBookkeeping
ezbookkeeping.mayswind.netSelf-hostedA lightweight, self-hosted personal finance app for recording daily transactions and analyzing spending patterns. Self-hosted, with all data staying on your own server. Supports 2FA and OICD.
ezBookkeeping Source Code
Author
Description
ezBookkeeping is an open source, powerful, self-hosted personal finance app that is easy to use.
Homepage
https://ezbookkeeping.mayswind.netRepository
- LicenseMIT
- Created17 Oct 20
- Primary languageGo
- Size25,740 KB
- Stars5,644
- Forks691
- Watchers5,644
Top Contributors
@mayswind (3465)
@tkymmm (10)
@abrugues (8)
@Miguelonlonlon (6)
@andrejkralj-thj (4)
@artegoser (4)
@nktlitvinenko (4)
@aydnykn (4)
@Darshanbm05 (3)
@dshemin (3)
@OuIChien (3)
@zhugaru (2)
@vigdail (2)
@seb26 (2)
@natthavat28 (2)
@overworks (2)
@thecodergus (2)
@lvdou-bing (1)
@x0x0b (1)
@thehijacker (1)
@lucdsouza (1)
@chrgm (1)
@brieucdlf (1)
@automagics (1)
@albanobattistella (1)
@vjsai (1)
@snizamaddinov (1)
@grid-pilot (1)
@rhierlmeier (1)
@quentinmarois (1)
@gg64nou (1)
@Mink16 (1)
@infinit1ve (1)
@dibuyo (1)
@martinschilliger (1)
@marcelweikum (1)
@konet-gr (1)
@balaios (1)
@diegofercri (1)
@waron97 (1)
@AndresTeller (1)
@RasterCrow (1)
@1270o1 (1)
Recent Commits
Albert Brugués(23 Sept 26)
update spanish translations (#693)
MaysWind(23 Sept 26)
API tokens no longer support creating / revoke other tokens, clearing data, updating user profile, configuring two-factor authentication, configuring external authentication or configuring application settings sync
MaysWind(19 Sept 26)
update the style of the chevron icon
MaysWind(19 Sept 26)
add new contributor
albanobattistella(19 Sept 26)
Update Italian localization (#685) * Update Italian localization --------- Co-authored-by: mayswind <[email protected]>
MaysWind(18 Sept 26)
update spacing between text elements
MaysWind(18 Sept 26)
add an Add Transaction button widget on mobile version
MaysWind(18 Sept 26)
update the sign in page styling when no sign in methods are enabled
MaysWind(18 Sept 26)
add new contributors
Quentin Marois(18 Sept 26)
fix mobile OIDC login without internal auth (#680) Fix #679
Ludwig J. Marx(18 Sept 26)
fix(services): resolve negative monthly schedules in the template time zone (#677) * fix(services): resolve negative monthly schedules in the template time zone A scheduled template with a negative monthly frequency value, which counts back from the end of the month, resolved that value against the time zone of the server. The day it is then checked against is taken from the template time zone. When the two are in different months the resolved day no longer matches, and the transaction is silently skipped. Measured against a template in UTC-12 scheduled for the last day of each month, due at 2027-02-28 12:00 UTC: server TZ server date transaction UTC 2027-02-28 created Europe/Berlin 2027-02-28 created Etc/GMT+12 2027-02-28 created Pacific/Kiritimati 2027-03-01 skipped Etc/GMT-14 2027-03-01 skipped February 2027 has 28 days, so -1 has to resolve to 28. On a server 14 hours ahead it resolved to 31, the length of March, and the check against day 28 then failed. Resolving against the UTC time of the run instead is a smaller change and holds for the values the UI offers, which are -1 to -3. It does not hold in general: the API applies no range check, and for a template in UTC+3 due on 2027-05-01 the run is at 2027-04-30 21:00 UTC, so -31 is resolved against April and yields 0 instead of 1. Taking the time that the day check itself uses removes the question. The transaction time and the frequency values now come from one function, so the caller can no longer pass a reference time other than the one it compares against. * refactor(services): reorder the existing code instead of extracting a helper Follows the review feedback. The transaction time is now computed before the monthly frequency values are resolved, so the resolution can use it without a separate function, and this file keeps every function on the service instance. The helper and its unit test are gone with it. The logic is no longer reachable in isolation, and the package has no database-backed tests that could exercise CreateScheduledTransactions as a whole, so this version carries no test. The measurements in the pull request description were repeated against this version rather than carried over. A template in UTC-12 scheduled for the last day of each month, due at 2027-02-28 12:00 UTC, creates the transaction on all five server time zones, where two of them skipped it before. The control run of 102 combinations, 17 template zones against 6 server zones, stays correct.
Ludwig J. Marx(17 Sept 26)
test(models): build edit scope boundaries in the time zone under test (#678) The edit scope tests pass a fixed zone, built from the server's current UTC offset, into CanEditTransactionByTransactionTime, but they built the expected boundary in time.Local. In a zone that observes daylight saving time the two differ as soon as a transition sits between that boundary and today, so the expected value is off by one hour and the assertion fails. Which of the tests fails depends on where the transition falls. Measured on 2026-09-17, `go test -count=1 ./pkg/models/`: TZ before UTC ok Europe/Berlin ScopeIsThisYearOrLater America/New_York ScopeIsThisYearOrLater Asia/Kolkata ok Australia/Sydney ScopeIsThisYearOrLater America/Santiago ScopeIsThisMonthOrLater Pacific/Auckland ScopeIsThisYearOrLater Pacific/Chatham ScopeIsThisYearOrLater America/Sao_Paulo ok Asia/Kathmandu ok Santiago moved its clocks on 6 September, inside the current month, so there it is the month boundary that misses rather than the year boundary. The zones without daylight saving time pass either way, and so does UTC, which is why a runner in UTC never reports this. `-count=1` matters here: without it the cached result of an earlier run is reported for every subsequent zone, since the time zone is not part of the cache key. Building the boundary in the same zone the assertion is made against removes the difference. All ten zones above pass afterwards, as does `go test ./...` in UTC, Europe/Berlin and America/Santiago. Setting `timezone` to `time.Local` instead makes the tests pass just as well, measured in UTC, Europe/Berlin, America/Santiago and Pacific/Chatham. It was not taken because it changes what is under test: `GetClientTimezone()` returns a fixed zone whenever the request carries only `X-Timezone-Offset` and no `X-Timezone-Name`, and these tests are the ones covering that path.
MaysWind(17 Sept 26)
fix content overflow in the transaction calendar in some cases
MaysWind(17 Sept 26)
update the margins of trend chart widgets
MaysWind(17 Sept 26)
fix incorrect margin calculation when a switch component is hidden
MaysWind(17 Sept 26)
bump version to 2.0.1
MaysWind(16 Sept 26)
increase the close delay for the tooltip of statistics data
MaysWind(16 Sept 26)
fix the incorrect border color when a toggle button is selected
MaysWind(16 Sept 26)
clear cached data on the overview page when adding or deleting an account
MaysWind(16 Sept 26)
change the default background colors of the Asset Summary and Current Month Overview widgets on mobile version
MaysWind(16 Sept 26)
fix Home and End keys not working after opening a dialog
MaysWind(16 Sept 26)
update close button tooltip
MaysWind(16 Sept 26)
redesign the settings page layout on desktop version
MaysWind(16 Sept 26)
keep the local time unchanged when updating the time zone during transaction import
MaysWind(16 Sept 26)
not allow to change filter criteria when editing imported transaction
MaysWind(16 Sept 26)
move the Batch Apply Rules button from the menu to the dialog panel
MaysWind(16 Sept 26)
add aria attributes
MaysWind(14 Sept 26)
update the margin for transaction category icons and time zone information
MaysWind(14 Sept 26)
object storage supports the s3 type using the official AWS sdk
MaysWind(14 Sept 26)
update project description
ezBookkeeping Security
Security Advisories (2)
- highPatched
GHSA-p6qr-48g6-97q3TOTP Replay Attack - Same Code Accepted Twice Within Valid Window (RFC 6238 Violation)
- highPatched
CVE-2026-86041Source-IP allowlist (MCP & API token) is bypassable via a spoofed `X-Forwarded-For` header
ezBookkeeping Website
Website
ezBookkeeping - a open source, lightweight, self-hosted personal finance app
ezBookkeeping is a open source, lightweight, self-hosted personal finance app with a user-friendly interface and powerful bookkeeping features.
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address185.199.110.153
- Hostnamecdn-185-199-110-153.github.com
- LocationFrancisco,Indiana,United States of America,NA
- ISPGitHub Inc.
- ASNAS54113
Associated Countries
US
Safety Score
Website marked as safe
100%
Blacklist Check
ezbookkeeping.mayswind.net was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
ezBookkeeping Reviews
More Secure Budgeting
A local-first personal finance app
Privacy-first cross-platform personal expense tracker (Android/iOS/Web) with offline-first design. Multi-cloud sync options — self-hosted BeeCount Cloud, iCloud, Supabase, WebDAV or S3 — keep data under user control.
A free and open source personal finance manager. Firefly III features a clean and clear UI, is easy to set up and use, and is backed by a strong community. Regular updates bring new features, improvements, and fixes. There's also a hass.io addon, and compatibility with Home Assistant. Ensure your server is securely configured.
A full-featured cross-platform accounting application suitable for personal and small business finance. Stable and reliable, GnuCash offers a comprehensive suite of financial management tools. Available for Windows, Mac, Linux, and Android.
Utilizes plain text files and scriptable, command-line-friendly software for bookkeeping/accounting, offering full control over data. Popular tools include Ledger, hledger, and Beancount among others, providing a flexible and vendor-independent approach to accounting.
A self-hosted, opensource, privacy-first portfolio tracking and accounting tool for crypto and more. Support for all 3 major Operating systems and docker. The tool focus is on data self-sovereignty.
About the Data: ezBookkeeping
Change History
- Added #459
Edit ezBookkeeping Data
You can edit ezBookkeeping's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external
sources, a list of these can be found data documentation.
Origin Data
Modify Data
API
You can access ezBookkeeping's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/ezbookkeepingThe REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share ezBookkeeping
Help your friends compare Secure Budgeting, and pick privacy-respecting software and services.
Share ezBookkeeping and Awesome Privacy with your network!
