Budger Manager is an easy-to-use, lightweight and self-hosted solution to track your finances
It was inspired by Poor-Man's Budgeting Spreadsheet and You have less money than you think (rus). These projects have a fatal flaw: you can't add multiple spends in a single day. Budger Manager resolves that issue
Features:
-
Easy-to-use - simple and intuitive UI
-
Lightweight - backend is written in Go, HTML is prepared with Go templates. Vanilla JavaScript is used just to make frontend interactive. So, JS code is very primitive and lightweight: it won't devour all your CPU and RAM (even with Chrome 😉)
-
Self-hosted - you don't need to trust any proprietary software to store your financial information
You can find more screenshots here
You need Docker and docker-compose (optional)
-
Create
docker-compose.yml
with the following content (you can find more settings in Configuration section):version: "2.4" services: budget-manager: image: ghcr.io/shoshinnikita/budget-manager:latest container_name: budget-manager environment: DB_TYPE: postgres DB_PG_HOST: postgres DB_PG_PORT: 5432 DB_PG_USER: postgres DB_PG_PASSWORD: <db password> DB_PG_DATABASE: postgres SERVER_AUTH_BASIC_CREDS: <your credentials> # more info in 'Configuration' section ports: - "8080:8080" postgres: image: postgres:12-alpine container_name: budget-manager_postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: <db password> POSTGRES_DB: postgres volumes: # Store data in ./var/pg_data directory - type: bind source: ./var/pg_data target: /var/lib/postgresql/data
-
Run
docker-compose up -d
-
Go to
http://localhost:8080
(change the port if needed) -
Profit!
Env Var | Default value | Description |
---|---|---|
LOGGER_MODE |
prod |
Logging format. dev or prod |
LOGGER_LEVEL |
info |
Logging level. debug , info , warn , error , or fatal |
DB_TYPE |
postgres |
Database type. postgres or sqlite |
DB_PG_HOST |
localhost |
PostgreSQL host |
DB_PG_PORT |
5432 |
PostgreSQL port |
DB_PG_USER |
postgres |
PostgreSQL username |
DB_PG_PASSWORD |
PostgreSQL password | |
DB_PG_DATABASE |
postgres |
PostgreSQL database |
DB_SQLITE_PATH |
./var/budget-manager.db |
Path to the SQLite database |
SERVER_PORT |
8080 |
|
SERVER_USE_EMBED |
true |
Use the embedded templates and static files or read them from disk |
SERVER_AUTH_DISABLE |
false |
Disable authentication |
SERVER_AUTH_BASIC_CREDS |
List of comma separated login:password pairs. Passwords must be hashed using BCrypt (htpasswd -nB <user> ) |
|
SERVER_ENABLE_PROFILING |
false |
Enable pprof handlers. You can find handler urls here |
# Run the app with installed Go and PostgreSQL in a Docker container
make
# Or run both the app and PostgreSQL in a Docker containers
make docker
make test
You can find more commands in Makefile
golangci-lint can be used to lint the code. Just run make lint
. Config can be found here
swag is used to generate API documentation. You can find more information about API endpoints in section API
You can find screenshots of pages here
/months
- Last 12 months/months/month?year={year}&month={month}
- Month info/search/spends
- Search for Spends
You can find Swagger 2.0 Documentation here. Use Swagger Editor to view it