budgetzero

Open-source, self-hosted, zero-based budgeting.

Stars
599
Forks
42
Open issues
65
Closed issues
9
Last release
almost 3 years ago
Last commit
over 1 year ago
Watchers
599
Total releases
11
Total commits
165
Open PRs
32
Closed PRs
63
Repo URL
Platform
License
agpl-3.0
Category
Usecase
Offers premium version?
NO
Proprietary?
NO
About


budgetzero is a free, open-source, privacy-friendly, offline-first budgeting system.

Use at budgetzero.io, download the desktop apps or self-host on your own server. Zero ads, zero trackers, just budgeting.

:warning: budgetzero is under active development and considered an alpha version. You may encounter significant bugs and breaking changes. Feel free to file an issue! :warning:

Features

✔️ Zero-based 'envelope' budgeting
✔️ Offline-first storage. NOTE: All data is stored in the browser and may be lost if you clear the browser's data.
✔️ Import Transactions (OFX, QFX, CSV)
✔️ Carry negative balances into next month
✔️ Privacy-focused. Zero trackers & zero analytics.

Getting Started

There's multiple ways to use budgetzero.

  1. On the official app.budgetzero.io page.
  2. Installing the desktop app (Windows or Mac). Download here
  3. Self host the web app. You can either deploy the docker image or build and host the static files on your own webserver. See deployment section below for more details.

⚠️ Known Issues (being worked on)

  • UI Inconsistencies (pop-up boxes, colors, etc)
  • Performance not tested for extremely large budgets (thousands of transactions)
  • Transfer transactions work but may be a bit buggy
  • Find a bug? Please file an issue!

Roadmap

Current development board

  • Reports - started!
  • Cloud Sync through budgetzero.io (coming soon)

  • Self-hosted sync server (coming soon)
  • Cross-platform desktop applications (Windows, Mac, Linux)
  • Multi-month view
  • Payee management
Deployment Docker
docker pull budgetzero/budgetzero:latest

Then run with

docker run -d -p <desired_port>:8080 --name budgetzero budgetzero/budgetzero

Example:

docker run -d -p 8080:8080 --name budgetzero budgetzero/budgetzero

Your budgetzero instance is now running at <docker_IP>:<desired_port>

Manual Deployment

You can also build the static files and host on any webserver.

npm install
npm run build

The files will be built into the dist/ folder and can be hosted anywhere.

Sync Server Setup

Budgetzero uses PouchDB to store the all data client-side in the browser. In order to enable sync across multiple browsers and/or devices, you'll need to set up a CouchDB server accessible from the desired devices. This setup guide is a general overview, feel free to adapt as needed.

Manual Setup Instructions for Advanced Users

  1. Install CouchDB on a server: Manually or with the official docker couchdb image.
    If you're using docker, start CouchDB using the provided instructions.
    Example:

    docker run -d --name budgetzero-couchdb-sync -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password couchdb:latest
    

    Replace admin and password with desired user/password.

  2. Navigate to http://[docker_host_IP]:5984/_utils, which opens the Fauxton web interface for CouchDB administration.

  3. Go to 'Configuration' and enable CORS for all domains.

  4. Create a database with whatever name you desire.

  5. In BudgetZero, go to Settings and set the couchdb URL to start syncing. This will need to be set up for each client/browser/computer/etc.
    Examples:
    http://localhost:5984/mybudget
    http://username:password@192.168.1.10:5984/mybudget


Development Pull Requests

Good pull requests (patches, improvements, new features) are a greatly appreciated.

Please ask first before embarking on any significant pull request (e.g. implementing features, refactoring code), otherwise, you risk spending a lot of time working on something that might not get accepted or is already in development.

Dev Setup

npm install
To start a development web server:
npm run serve
Run tests

Run all tests once:

npm run test:unit

Run all tests and re-run if files change:

npm run test-watch:unit

Run with debugger (chrome://inspect)

node --inspect node_modules/.bin/jest --runInBand tests/unit/Transactions.spec.js

Alternative Projects
No projects found

Subscribe to Open Source Businees Newsletter

Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.

We'll never share your email with anyone else.