diff --git a/README.md b/README.md new file mode 100644 index 0000000..18c3f80 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# Ledger Quick Note + +![screenshot](screenshots/home.png) + +**Add ledger transactions on the fly!** + +## Feature + +### Transaction Template + +add your transaction template in `tx/` (in Go's template syntax), and create transaction from them on the fly. + +Examples: + +Take some cash +``` +{{ .Date }} * cash + expenses:cash ${{ .Amount }} + assets:cash + +``` + +Cash expenses +``` +{{ .Date }} {{ with .Name }}{{ . }}{{ else }}{{ .Account }}{{ end }} + {{ .Account }} ${{ .Amount }} + expenses:cash + +``` + +Checkout `tx/` folder for more examples. + +### Ledger Scripts + +Run some commonly used ledger commands. + +Define your commands in config.go + +```go +var SCRIPTS = map[string][]string{ + "balance assets": {"b", "assets", "-X", "$"}, + "register": {"r", "--tail", "10"}, + "balance this month": {"b", "-b", "this month"}, +} +``` + +Execute them and see the result in the browser. + +![execute result](screenshots/exec.png) + +## Install + +Requirements: +* go +* ledger (Only required when you use scripts) + +``` +git clone https://github.com/lancatlin/ledger-quicknote.git +``` + +``` +go build +``` + +``` +./ledger-quicknote +``` + +Checkout `deployment/` for Nginx & Systemd example configuration. + diff --git a/deployment/nginx.conf b/deployment/nginx.conf new file mode 100644 index 0000000..fa6440a --- /dev/null +++ b/deployment/nginx.conf @@ -0,0 +1,12 @@ +server { + listen 80; + listen [::]:80; + server_name ledger.example.com; + + location / { + auth_basic "private zone"; + auth_basic_user_file /etc/nginx/myusers; + + proxy_pass http://127.0.0.1:8000; + } +} diff --git a/deployment/systemd.service b/deployment/systemd.service new file mode 100644 index 0000000..216f828 --- /dev/null +++ b/deployment/systemd.service @@ -0,0 +1,12 @@ +[Unit] +Description=Ledger Quick Note + +[Service] +Type=simple +User=www-data +Group=www-data +WorkingDirectory=/path/to/ledger-quicknote +ExecStart=/path/to/ledger-quicknote/ledger-quicknote -f /path/to/ledger/journal.txt -w /path/to/ledger + +[Install] +WantedBy=multi-user.target diff --git a/main.go b/main.go index 0810f16..e108219 100644 --- a/main.go +++ b/main.go @@ -131,7 +131,7 @@ func executeScript(w io.Writer, name string) (err error) { if !ok { return fmt.Errorf("%s script not found", name) } - cmd := exec.Command("ledger", append([]string{"--init-file", LEDGER_INIT}, script...)...) + cmd := exec.Command("ledger", append([]string{"--init-file", LEDGER_INIT, "--file", LEDGER_FILE}, script...)...) cmd.Dir = WORKING_DIR cmd.Stdout = w cmd.Stderr = w diff --git a/screenshots/exec.png b/screenshots/exec.png new file mode 100644 index 0000000..4ed2433 Binary files /dev/null and b/screenshots/exec.png differ diff --git a/screenshots/home.png b/screenshots/home.png new file mode 100644 index 0000000..9eb934c Binary files /dev/null and b/screenshots/home.png differ