77 lines
1.9 KiB
Markdown
77 lines
1.9 KiB
Markdown
# Bo hemma-avi med Swish-QR
|
|
|
|
En enkel Docker-app som:
|
|
|
|
- läser kostnadsposter från `config.json`
|
|
- visar underlaget på en webbsida
|
|
- låter användaren mata in månadens nettoinkomst
|
|
- räknar fram `min(kostnadsandel, nettoinkomst * income_ratio, eventuell max_amount)`
|
|
- genererar en Swish-QR-kod med förifyllt belopp och meddelande
|
|
|
|
## Starta
|
|
|
|
```bash
|
|
docker compose up --build
|
|
```
|
|
|
|
Öppna sedan:
|
|
|
|
```text
|
|
http://localhost:8000
|
|
```
|
|
|
|
## Konfiguration
|
|
|
|
Exempel:
|
|
|
|
```json
|
|
{
|
|
"title": "Bo hemma-avi",
|
|
"currency": "SEK",
|
|
"swish": {
|
|
"payee": "46701234567",
|
|
"message_prefix": "Bohemma",
|
|
"lock_mask": 0
|
|
},
|
|
"payment": {
|
|
"income_ratio": 0.30,
|
|
"max_amount": null,
|
|
"round_to": 1
|
|
},
|
|
"items": [
|
|
{
|
|
"post": "hushållsel",
|
|
"amount": 1000,
|
|
"period": "month",
|
|
"ratio": 0.2,
|
|
"comment": "20 % av uppskattad månadskostnad"
|
|
},
|
|
{
|
|
"post": "hemförsäkring",
|
|
"amount": 5000,
|
|
"period": "year",
|
|
"ratio": 0.2,
|
|
"comment": "20 % av årskostnad, omräknad till månad"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Fält
|
|
|
|
| Fält | Betydelse |
|
|
|---|---|
|
|
| `swish.payee` | Swishnummer, t.ex. `46701234567` |
|
|
| `swish.message_prefix` | Prefix i meddelandet, appen lägger till aktuell period, t.ex. `Bohemma 2026-07` |
|
|
| `swish.lock_mask` | `0` låser mottagare, belopp och meddelande |
|
|
| `payment.income_ratio` | Andel av nettoinkomst som är tak, t.ex. `0.30` |
|
|
| `payment.max_amount` | Extra absolut maxbelopp, eller `null` |
|
|
| `payment.round_to` | Avrundning uppåt, t.ex. `1`, `10`, `50` eller `100` |
|
|
| `items[].amount` | Kostnad, per månad eller år beroende på `period` |
|
|
| `items[].period` | `month` eller `year` |
|
|
| `items[].ratio` | Andel dottern ska bära, t.ex. `0.2` eller `1` |
|
|
|
|
## Viktigt
|
|
|
|
Appen genomför ingen betalning. QR-koden förifyller betalningen i Swish, men betalaren måste själv granska och godkänna betalningen.
|